Tunel VPN przez SSH
Kategoria: Artykuły, etykiety: vpn, ssh, tunel
Dodany: 2011-03-17 21:14
(zmodyfikowany: 2017-03-19 01:29)
Przez: Jacekalex
Wyświetleń: 14856
Witam
Zazwyczaj do połączeń VPN w Linuxie używa się OpenVPN lub Ipsec, znacznie rzadziej pptp.
Tymczasem stary dobry serwer ssh w wersji >4.3 obsługuje tunel VPN równie dobrze, jeśli nie lepiej niż inne programy, jest natomiast znacznie łatwiejszy w konfiguracji. W porównaniu z OpenVPN, nie zauważyłem w nim możliwości użycia protokołu udp (co ma w mojej opinii pewne zalety, np trudniej postronnym osobom na trasie połączenia śledzić transmisję udp - udp to protokół bezpołączeniowy).
Niemniej jednak, jak ktoś próbował konfigurować połączenie OpenVPN z użyciem certyfikatów, z pewnością doceni prostszą konfiguracje ssh.
Do rzeczy:
Do zestawienia tunelu potrzebujemy na obu komputerach interfejsów TAP.
Potrzebne programy: uml-utilities (polecenie tunctl) i klient/serwer ssh
Na każdym komputerze możemy stworzyć odpowiedni interfejs poleceniem, np:
tunctl -u <użytkownik> -t tap9
ifconfig tap9 10.10.0.9 netmask 255.255.255.0
jeśli natomiast chcemy, aby taki interfejs powstawał automatycznie przy starcie systemu, wystarczy dopisać go do /etc/network/interfaces :
auto tap9
iface tap9 inet static
pre-up tunctl -u nick -t $IFACE
post-down tunctl -d $IFACE
address 10.10.0.9
netmask 255.255.255.0
Na komputerze, z którym chcemy zestawić tunel tworzymy identycznie interfejs, przyznając mu inny adres IP, np:
tunctl -u <użytkownik> -t tap9
ifconfig tap9 10.10.0.1 netmask 255.255.255.0
Lub w interfaces:
auto tap9
iface tap9 inet static
pre-up tunctl -u nick -t $IFACE
post-down tunctl -d $IFACE
address 10.10.0.1
netmask 255.255.255.0
Po przygotowaniu konfiguracji inetfejsów TAP, w konfiguracji serwera ssh /etc/ssh/sshd_config dodajemy następujące parametry:
PermitTunnel yes
PermitRootLogin yes
Zezwolenie na logowanie na konto root przez ssh jest dosć niebezpieczne, znacznie lepiej wygenerować klucze ssh do automatycznego logowania, i użyć
PermitRootLogin without-password
Do zestawienia tunelu należy użyć komendy:
ssh -o Tunnel=Ethernet -w9:9 <adres_hosta>
gdzie w9:9 - to numery interfejsów TAP na obu końcach tunelu.
Tekst powstał na podstawie: źródło
Mam nadzieję, że sposób się przyda. Wszelkie uwagi proszę kierować na PW.
Pozdrawiam ;-)