OpenVPN – dostęp do LAN/sieci lokalnej oraz z LAN do OpenVPN (routing)

Poprzednio opisałem instalację i konfigurację serwera OpenvPN oraz konfigurację klienta OpenVPN. Teraz przyszedł czas na opis jak umożliwić dostęp z OpenVPN do LAN i z LAN do OpenVPN. OpenVPN po samej konfiguracji i uruchomieniu bez ustawiania na serwerze forwardu/routingu będzie umożliwiał tylko na dostęp OpenVPN client<-->host, host<-->OpenVPN Client oraz OpenVPN client<--->OpenVPN client (jeżeli opcja client-to-client jest ustawiona na serwerze OpenVPN). Jednak często jest taka potrzeba, że po połączeniu się z serwerem OpenVPN chcemy mieć dostęp do zdalnej sieci lokalnej (częściej) oraz rzadziej ze zdalnej sieci lokalnej do klienta OpenVPN. Trzeba pamiętać, że nasza sieć lokalna będzie mieć inną adresację (najczęściej tak jest) niż ta OpenVPN i może być tak, że sieć lokalna ma np. podsieć 192.168.0.0/24, a OpenVPN podsieć 10.5.0.0/24. Poniżej opis co i jak należy zrobić. Standardowo opieram się o Linuxa Debian.

 

OpenVPN – dostęp do LAN/sieci lokalnej
Żeby OpenVPN miał dostęp do naszej sieci lokalnej oraz żebyśmy mieli dostęp z naszej sieci lokalnej do klientów OpenVPN należy ustawić forward oraz routing na serwerze z OpenVPN. Najpierw edytujemy plik /etc/sysctl.conf i usuwamy komentarz przy linii net.ipv4.ip_forward=1 czyli

nano /etc/sysctl.conf

przed edycją

# Uncomment the next line to enable packet forwarding for IPv4
#net.ipv4.ip_forward=1

po edycji

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Po tym zabiegu system po restarcie zawsze ustawi tą opcję. Dodatkowo żeby ustawić tą opcję “w locie” czyli bez restartowania czegokolwiek wpisujemy:

sysctl -w net.ipv4.ip_forward=1

 
Następnie ustawiamy IPTABLES:

iptables -t nat -A POSTROUTING -s 10.5.0.0/24 -o eth0 -j MASQUERADE

Gdzie adres 10.5.0.0 to nasza podsieć (taka jaka została ustawiona w pliku konfiguracyjnym serwera OpenVPN) OpenVPN (jeżeli ktoś zrobił wszystko zgodnie z tym co napisałem przy instalacji serwera OpenVPN), a eth0 to karta sieciowa do której jest podłączony kabel LAN (może to być inna karta np. eth1 więc należy tutaj wpisać odpowiedni interface. Żeby sprawdzić interface można użyć komendy ifconfig, która wyświetli karty sieciowe).
 
Możemy tą regułkę dodać na samym końcu pliku /etc/network/interfaces dzięki czemu będzie zawsze dodawana gdy tylko karty sieciowe będą uruchamiane:

nano /etc/network/interfaces

następnie dodajemy na końcu pliku

post-up iptables -t nat -A POSTROUTING -s 10.5.0.0/24 -o eth0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s 10.5.0.0/24 -o eth0 -j MASQUERADE

W tym momencie te regułki będą zawsze wprowadzane do iptables przy uruchamianiu karty sieciowej.
 
Teraz należy edytować plik server.conf OpenVPN i tam dodać komendę push route, która umożliwi klientom OpenVPN odpowiedni routing czyli:

nano /etc/openvpn/server.conf

następnie dodajemy na końcu pliku konfiguracyjnego polecenie (lub jeżeli korzystasz z mojego configu to w sekcji opisanej komentarzem # routing tak żeby był porządek):

push "route 192.168.0.0 255.255.255.0"

Gdzie 192.168.0.0 to adresacja naszej sieci lokalnej (każdy musi sprawdzić i wpisać swoją adresację, bo może być inna np. 192.168.50.0)
Zapisujemy zmiany i restartujemy serwer OpenVPN:

/etc/init.d/openvpn restart

 
To wszystko. Teraz klienci OpenVPN muszą ponownie się podłączyć do serwera (jeżeli są jacyś połączeni) i po ponownym podłączeniu się będą mieli dostęp do sieci lokalnej. Czyli jeżeli klient wyda polecenie ping na adres jakiegoś urządzenia w zdalnej sieci lokalnej to powinno to urządzenie odpowiadać przykładowo:

Odpowiedź z 192.168.0.1: bajtów=32 czas=66ms TTL=63
Odpowiedź z 192.168.0.1: bajtów=32 czas=51ms TTL=63
Odpowiedź z 192.168.0.1: bajtów=32 czas=46ms TTL=63

 
Dostęp z LAN/sieci lokalnej do klientów OpenVPN
W drugą stronę jest troszkę trudniej, bo trzeba (najlepiej na routerze w sieci lokalnej) dodać wpisy do routingu statycznego, a tutaj routerów itp. jest całe mnóstwo i nie sposób abym opisał tutaj wszystko. Dlatego ograniczę się do paru porad na końcu.

Na początek standardowo na serwerze ustawiamy (jeżeli nie ustawiliśmy wcześniej) forward czyli jak wyżej to opisałem i ustawiamy IPTABLES. Tylko tym razem jako źródło podajemy adresację naszej sieci lokalnej, a interfejs wyjściowy to interfejs OpenVPN czyli np. tun0:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o tun0 -j MASQUERADE

Adresacja 192.168.0.0 to adresacja sieci lokalnej. Jeżeli Twoja sieć lokalna 192.168.1.0 to należy taką wpisać zamiast 192.168.0.0.
 
Możemy to dodać na końcu pliku /etc/network/interfaces aby zawsze było wprowadzane przy starcie karty sieciowej:

nano /etc/network/interfaces

Następnie dodajemy na końcu pliku

post-up iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o tun0 -j MASQUERADE
post-down iptables -t nat -D POSTROUTING -s 192.168.0.0/24 -o tun0 -j MASQUERADE

 
Routing najlepiej jest ustawić na routerze aby nie konfigurować tego osobno na każdym komputerze w sieci lokalnej. Czyli niestety muszę to pozostawić użytkownikom, bo w routerach różnych marek różnie się to ustawia. Podpowiem jednak, że należy ustawić routing/static routing z IP destination 10.5.0.0 (adres podsieci OpenVPN), maską 255.255.255.0 gdzie gateway to lokalny adres IP maszyny z serwerem OpenVPN czyli przykładowo maszyna z Linuxem Debian na której jest uruchomiony serwer OpenVPN ma adres 192.168.0.10 to jako gateway podajemy adres 192.168.0.10).
 
Jeżeli natomiast nie chcemy dodawać routingu na routerze lub chcemy przed dodaniem routingu na routerze sprawdzić czy wszystko działa możemy to wykonać tylko lokalnie na maszynie na której np. pracujemy w danym momencie.
Użytkownicy Linuxa mogą użyć poniższej komendy i dodać odpowiedni routing na swoim komputerze:

route add -net 10.5.0.0/24 gw 192.168.0.10

10.5.0.0/24 to adresacja OpenVPN, a 192.168.0.10 to adres serwera/maszyny na której jest uruchomiony serwer OpenVPN. W tym momencie kliencie podłączeni do serwera OpenVPN będą mogli być pingowani i będzie można się do nich podłączyć (np. pulpitem zdalnym czy czym tam).

Żeby usunąć wpis należy wydać komendę:

route delete -net 10.5.0.0/24 gw 192.168.0.10

Lista routingu:

route

 
Użytkownicy Windows muszą uruchomić cmd i wpisać:

route ADD 10.5.0.0 MASK 255.255.255.0 192.168.0.10

Zasada podobna czyli 10.5.0.0 to adresacja OpenVPN (destination/docelowa), 255.255.255.0 to maska podsieci, a 192.168.0.10 (gateway/brama) to adres maszyny z serwerem OpenVPN.
Żeby usunąć dodany routing wpisujemy:

route DELETE 10.5.0.0 MASK 255.255.255.0 192.168.0.10

lista routingu:

route print

 
To wszystko. W razie pytań proszę o komentarze lub wysłanie do mnie e-maila (adres w contact/about)

 
Konfiguracja serwera OpenVPN
OpenVPN server z logowaniem (auth-user-pass) [Debian]

Konfiguracja klienta OpenVPN
OpenVPN client – łączenie się z serwerem OpenVPN
 

Both comments and pings are currently closed.

4 komentarze to “OpenVPN – dostęp do LAN/sieci lokalnej oraz z LAN do OpenVPN (routing)”

  1. Tomek pisze:

    Cześć
    Wykonuję wszystko zgodnie z opisem, restartuję RPi po instalacji i konfiguracji. Prawidłowo łączę się do VPN przez OpenVPN a mimo to nadal nie mam dostępu do sieci LAN z poziomu VPN.

  2. Robert pisze:

    Można to zrobić jeszcze w inny sposób klient opvpn na routerze potem edycja pliku klienta w folderze cud i dodajemy naszą sieć lokalną. Wtedy każdy komputer który ma naszego klienta openvpn ma rownież dostęp do sieci lokalnej.

  3. Paweł pisze:

    Witam,
    mam drobny problem potrzebuję zrobić dokładnie to samo ale serwerem jest Windows Serwer 2012.
    W środowisku nie mam możliwości dać wirtualki. Proszę o podpowiedź jak to zestawić.

    • Wilk pisze:

      Jeżeli chodzi o routing na przykładzie Windows server to bodajże musi być uruchomiona i skonfigurowana usługa routingu. Opis tego wymagałby stworzenie osobnego artykułu/tutoriala jak to zrobić. W internecie na pewno są opisy jak to wykonać (może nawet z uwzględnieniem OpenVPN). Proszę sprawdzić.

Powered by WordPress | Designed by: NewWpThemes | Provided by Free WordPress Themes