OpenSSH - tunelowanie TUN/TAP

Wed 27 January 2010 by admin

Ostatnimi czasy natrafiłem na dość ciekawy problem, sprawa dotyczyła niedziałającego serwera DHCP w lokalizacji zdalnej. Pomimo wielu prób nie mogłem osobiście sprawdzić czy  faktycznie wina leży po stronie serwera czy po drodze ,,coś'' blokuję użytkownikom sieci LAN dostępu do serwera.  Z pomocą przyszła usługa SSH...

SSH oferuję ciekawą opcję tunelowania dla wirtualnych interejsów TUN/TAP. Różnica pomiędzy interfejsami TUN/TAP polega na ich pracy w warstwach modelu OSI, pierwszy z nich TUN pracuje na warstwie 3 natomiast TAP na warstwie 2. Drugi z nich z racji tego, że ,,widzi'' ramki ethernetowe sprawdził się przy rozwiązywaniu moich problemów z serwerem DHCP.  Zestawiając połączenie SSH po stronie zdalnej ustawiamy w konfiguracji sshd_config:

PermitTunnel yes

łączymy się używając następującej składnii:

ssh -o Tunnel=ethernet -w 0:0 <adres_zdalnej_lokalizacji>

argument -w sprawi, że po obu stronach stworzą się wirtualne interfejsy tap0.

Następnie wystarczy przy pomocy:

ip link set tap0 up

po obu stronach podnieść interfejsy, po stronie z serwerem DHCP ustawić adres IP (tak aby dhcpd przybindował się) dla interfejsu tap0 a po stronie ,,testującej'' wywołać polecenie:

dhclient tap0

Jak widać tym prostym sposobem możemy zestawić bezpieczne tunele przy pomocy wirtualnych interfejsów co w połączeniu z narzędziami bridge-utils daję możliwości budowy skomplikowanych konfiguracji.