Tunel VPN przez SSH

Kategoria: Artykuły, etykiety: vpn, ssh, tunel

Dodany: 2011-03-17 21:14 (zmodyfikowany: 2020-06-03 18:12)
Przez: Jacekalex

Wyświetleń: 19155

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 tun9
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 tun9
iface tun9 inet static
    pre-up tunctl -u <użytkownik> -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 tun9
ifconfig tun9 10.10.0.1 netmask 255.255.255.0

Lub w interfaces:

auto tun9
iface tun9 inet static 
    pre-up tunctl -u <użytkownik>  -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 ;-)

OSnews Wykop Blip Flaker Kciuk Śledzik Facebook Identi.ca Twitter del.icio.us Google Bookmarks