VTun umożliwia tworzenie tuneli poprzez sieci TCP/IP wraz z przydzielaniem pasma, kompresją, szyfrowaniem danych w tunelach. Wspierane typy tuneli to: PPP, IP, Ethernet i większość pozostałych protokołów szeregowych. VTun jest łatwy i elastyczny w konfiguracji. Może zostać wykorzystany do takich sieciowych zastosowań jak VPN, Mobil IP, łącza o określonym paśmie oraz innych.
Poniższy opis zawiera konfiguracje połączenia 2 odległych sieci, tak aby komputery w nich się znajdujące widziały się i mogły bezpośrednio się ze sobą łączyć.
Schemat konfiguracji sieci:
10.1.1.0 --- (router1 NAT) --- (((WAN))) --- (router2 NAT) --- 10.2.2.0
| |
----------tunel na VTUN------------
(20.1.1.1) ---- (20.1.1.2)
W obu przypadkach ( serwer, klient ) należy zainstalować vtun-a, a więc dajemy:
opkg install vtun kmod-tun zlib ssltunnel openssl-util libopenssl
Po wydaniu polecenia lsmod powinien być widoczny moduł tun
Module Size Used by Tainted: P ehci-hcd 20556 0 (unused) uhci 30180 0 (unused) usb-storage 68624 0 (unused) sd_mod 12500 0 (unused) scsi_mod 70616 1 [usb-storage sd_mod] acm 6172 0 (unused) usbcore 74808 1 [ehci-hcd uhci usb-storage acm] vfat 11692 0 (unused) fat 36840 0 [vfat] ext3 72788 0 (unused) jbd 54872 0 [ext3] ext2 41528 0 (unused) tun 4504 0 (unused) wlcompat 15744 0 (unused) ip_nat_irc 2336 0 (unused)
Ponieważ wzorowałem się na konfiguracji vtun-a w debianie, będziemy musieli stworzyć dwa pliki konfiguracyjne + trzeci obsługujący uruchamianie vtun-a wraz z wyświetlaniem komunikatów.
Zaczniemy od konfiguracji pliku /etc/vtund.conf. Po instalacji pakietu vtun możemy przejrzeć przykładowy plik konfiguracyjny aby zapoznać się z przykładowymi ustawieniami. Chcemy stworzyć własny plik, więc standardowemu zmieniamy nazwę.
mv /etc/vtund.conf /etc/vtund.conf.old
Następnie tworzymy własny plik konfiguracyjny, dowolnym edytorem np vim, nano, itd.
vim /etc/vtund.conf
i umieszczamy to co poniżej.
options {
type stand;
port 5000;
syslog daemon;
timeout 60;
ppp /usr/sbin/pppd;
ifconfig /sbin/ifconfig;
route /sbin/route;
firewall /sbin/iptables;
ip /sbin/ip;
}
default {
compress yes;
speed 0;
}
vpn0 {
passwd tajne_haslo; # podać własne hasło po obu stronach takie samo w celu autoryzacji tunelu.
type ether; # tunel będzie typu ethernet, jeśli chcemy ppp zamiast ether dajemy tun
proto udp;
compress zlib:9;
encrypt yes;
keepalive yes;
stat yes;
persist yes;
up {
ifconfig "%% 20.1.1.1 pointopoint 20.1.1.2 netmask 255.255.255.0 mtu 1450"; # tu ustawiamy adresy tunelu
# czyli my mamy adres 20.1.1.1 a przeciwna strona tunelu 20.1.1.2
# w celu umożliwienia widzenia się komuterów w podsieciach musimy ustawić trase routingu.
route "add -net 10.2.2.0 netmask 255.255.255.0 gw 20.1.1.2"; # tu ustawiamy trasÄ™ do sieci 10.2.2.0 przez 20.1.1.2
};
down {
ifconfig "%% down";
ifconfig "%% delete";
route "del -host 20.1.1.2"; # tu usuwamy trasę routingu z tablicy przy rozłączaniu tunelu.
};
}
Drugim plikiem jaki będziemy konfigurować jest /etc/default/vtun. Należy stworzyć katalog jak i sam plik.
mkdir /etc/default vim /etc/default/vtun
i umieszczamy:
RUN_SERVER=yes # yes - włączenie serwera , no - wyłączenie serwera VTUND_MODE="server" # tryb pracy vtun-a jako serwer VTUND_SESSION="vpn0" # nazwa tunelu ( po obu stronach tunelu podać tą samą ) VTUND_SERVER_PORT="5000" # port na którym będzie pracował vtun.
I na koniec pozostaje utworzenie skryptu obsługującego uruchamianie deamona.
Tworzymy plik /etc/init.d/vtun
vim /etc/init.d/vtun
Umieszczamy:
#!/bin/sh /etc/rc.common
RUN_D=/var/run/vtund
test -f /etc/default/vtun && . /etc/default/vtun
start() {
if [ -n "$RUN_SERVER" ] && [ "$RUN_SERVER" != no ]; then
vtund -s -P $VTUND_SERVER_PORT
echo -n "Startowanie vtund serwer: "
echo "vtund [ uruchomiony jako serwer ]."
fi
for i in 0 1 2 3 4 5 6 7 8 9; do
eval name=\$CLIENT${i}_NAME
eval host=\$CLIENT${i}_HOST
eval args=\$CLIENT${i}_ARGS
if [ -n "$name" ] && [ -n "$host" ]; then
vtund -P $args -p $name $host
echo -n "Startowanie vtund klient $name do $host na porcie $args: "
echo "vtund [ uruchomiony jako klient ]."
fi
done
}
stop() {
echo "Zatrzymanie vtund."
killall vtund
}
I teraz nadajemy temu plikowi prawa wykonywalności
chmod +x /etc/init.d/vtun
Teraz możemy uruchomić vtun-a
/etc/init.d/vtun start
Po uruchomieniu powinniśmy mieć otwarty port 5000 na którym działa vtun
Można to sprawdzić nmap-em np:
nmap -sT localhost
PORT STATE SERVICE 21/tcp open ftp 22/tcp open ssh 53/tcp open domain 80/tcp open http 5000/tcp open UPnP <-----
Tworzymy jak wcześniej te same pliki. Różnice będą w /etc/vtund.conf i /etc/default/vtun
Przykładowa konfiguracja /etc/vtund.conf . Plik wygląda identycznie jak wcześniejszy, po za poniższymi liniami w których zamiennie są podane adresy IP końców tunelu.
up {
ifconfig "%% 20.1.1.2 pointopoint 20.1.1.1 netmask 255.255.255.0 mtu 1450";
route "add -net 10.1.1.0 netmask 255.255.255.0 gw 20.1.1.1";
};
down {
ifconfig "%% down";
ifconfig "%% delete";
route "del -host 20.1.1.1";
};
Natomiast /etc/default/vtun wyglÄ…da tak:
CLIENT0_NAME=vpn0 <---- nazwa tunelu CLIENT0_HOST=xx.xx.xx.xx <---- adres IP lub domena vtun-a pracujÄ…cego w trybie serwer CLIENT0_ARGS="5000" <---- port pracy serwera
I uruchamiamy vtun-a
/etc/init.d/vtun start
Teraz powinien być zestawiony tunel. Po wydaniu polecenia ifconfig powinien być widoczny interfejs tapX
Jeszcze pozostały do dodania regułki w iptables, według tego opisu po stronie serwera dajemy:
iptables -A FORWARD -d 10.2.2.0/24 -j ACCEPT
a po stronie klienta dajemy :
iptables -A FORWARD -d 10.1.1.0/24 -j ACCEPT
No i mamy zestawiony tunel, dzięki któremu komputery w naszych podsieciach widzą się bezpośrednio.
Jeżeli jeszcze nie zadziała, trzeba odblokować na firewallu port 5000, ewentualnie 3405.
Aby vtun startował przy podnoszeniu systemu wystarczy dodać go do skryptów startowych
mv /etc/init.d/vtun /etc/init.d/S90vtun chmod 755 /etc/init.d/S90vtun chmod +x /etc/init.d/S90vtun
Pomocne linki odnośnie konfiguracji vtun-a można znaleźć na:
http://pl.docs.pld-linux.org/siec_vtun.html
http://vtun.sourceforge.net/conf.man.html
http://blog.i64.pl/PiosBlog/category/networking/
— Hakier 2007/03/26 14:32
