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 [1]

Mam nadzieję, że sposób się przyda. Wszelkie uwagi proszę kierować na PW.

Pozdrawiam ;-)


Przypisy:

  1. https://web.archive.org/web/20110220093102/http://nick.zoic.org/2009/10/23/ssh-tunnels-with-tap-and-w/