Instalacja ipv6 na OpenWrt tunel hertbeat
Transkrypt
Instalacja ipv6 na OpenWrt tunel hertbeat
Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 Instalacja ipv6 na OpenWrt tunel typu heartbeat - 8.09, 10.03.x Co prawda do pełnego wykorzystania ipv6 droga jeszcze daleka (portale internetowe oraz usługodawcy internetowi nie wykazują pośpiechu) już teraz można korzystać z tego protokołu w pełni automatycznie. Jednym z plusów IPv6 to niemaskowany zakres adresów IP dla każdego hosta w danej sieci. Metodą na zastosowanie nowego standardu jest stworzenie i utrzymanie tunelu ipv6. Po skonfigurowaniu, całość działa bezobsługowo, nie występują więc problemy z zarządzaniem. Różnica w stosunku do standardu poprzedniego polega na wyświetlaniu innego adresu strony www.(np. www.google.pl ukaże się jako ipv6.google.com). Instalacja ipv6 sprowadza się do wykonania niżej podanych czynności. Jest to sposób najprostszy i najszybszy, co prawda w sieci dostępne są opisy konfiguracji różniące się od przedstawionego rozwiązania. Opisany sposób został przetestowany z OpenWrt Kamikaze/Backfire na modemie AG241V2-EU oraz routerze WR1043ND. Wymagania Utworzenie tunelu typu hertbeat wymaga bezpośredniego dostępu do internetu - w skrócie należy mieć adres publiczny jednakże może on być dynamiczny. Instalacja Należy zainstalować następujące pakiety: [code]opkg install kmod-ipv6 kmod-ip6tables ip6tables kmod-ip6-tunnel kmod-tun aiccu radvd ntpclient kmod-sit kmod-gre [/code] Tworzenie tunelu Tunel ipv6 można założyć w darmowym serwisie sixxs www.sixxs.net : 1 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 *wchodzimy na stronę www.sixxs.net *klikamy na opcję „Signup for new users” *wybieramy opcję „direct signup” *wypełniamy poszczególne pola i klikamy „Submit Signup” *dostajemy maila w którym widnieje link potwierdzający założenie konta *po utworzeniu konta logujemy się do serwisu sixxs korzystając z „Login for existing users” *po zalogowani wybieramy opcję „request tunnel” i wybieramy typ tunelu. Opis dotyczy tunelu „heartbeat” należy go więc wybrać. W trakcie zakładania tunelu warto jest wybrać najbliższego dostawcę tunelu, proponowany usługodawca to „PoP Name plwaw01” . Jest to ICM umiejscowiony w Polsce *po założeniu konta otrzymamy dwie wiadomości. Pierwsza to, potwierdzenie o przyjęciu wniosku o tunel do kolejki. Druga wiadomośc zawierać będzie adres ip bramy i końca naszego tunelu, nazwę użytkownika oraz numer (id) Tunelu UWAGA: zakładamy tylko jeden tunel. Serwis sixxs punktuje każde założenie tunelu. My chcemy otrzymać oprócz tunelu również i podsieć dla naszych komputerów więc każdy punkt się liczy na początku. Założenie tunelu to łącznie 15 pkt.Przykładowy adres ipv6 otrzymany do utworzenia tunelu: [code]The SixXS Staff have honored your request for a tunnel with the following specifications: ------Tunnel Id : T13903 PoP Name : plwaw01 (pl.icm [AS8664]) Your Location : Warszawa, pl SixXS IPv6 : 2001:6a0:200:3d::1/64 Your IPv6 : 2001:6a0:200:3d::2/64 SixXS IPv4 : 193.219.28.26 Tunnel Type : Dynamic (heartbeat)[/code] Konfiguracja Konfigurujemy klienta aiccu dla tunelu „heartbeat” w OpenWrt root@OpenWrt:~# cat /etc/config/aiccu.conf [code]config aiccu option username '????-SIXXS'' option password '???????????' option protocol 'tic' option server 'tic.sixxs.net' option interface 'sixxs' option tunnel_id 'T13903' 2 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 option requiretls '0' option defaultroute '1' option nat '1' option heartbeat '1'[/code] Testujemy tunel ipv6. Uruchamiamy aiccu: [code]/etc/init.d/aiccu start[/code] zostanie utworzony tunel ipv6. Aby się upewnić, wydajemy 'ifconfig': [code]root@OpenWrt:~# ifconfig ... sixxs Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet6 addr: 2001:6a0:200:3d::2/64 Scope:Global inet6 addr: fe80::4a0:200:3d:2/64 Scope:Link UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1280 Metric:1 RX packets:1932 errors:0 dropped:0 overruns:0 frame:0 TX packets:1120 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:527624 (515.2 KiB) TX bytes:144799 (141.4 KiB)[/code] Jak widać został założony interfejs „sixxs”. Już teraz można sprawdzić jak działa ipv6: [code]root@OpenWrt:~# ping6 www.sixxs.net PING www.sixxs.net (2001:838:1:1:210:dcff:fe20:7c7c): 56 data bytes 64 bytes from 2001:838:1:1:210:dcff:fe20:7c7c: seq=0 ttl=47 time=130.770 ms 64 bytes from 2001:838:1:1:210:dcff:fe20:7c7c: seq=1 ttl=47 time=132.424 ms 64 bytes from 2001:838:1:1:210:dcff:fe20:7c7c: seq=2 ttl=47 time=129.322 ms 64 bytes from 2001:838:1:1:210:dcff:fe20:7c7c: seq=3 ttl=47 time=136.360 ms 64 bytes from 2001:838:1:1:210:dcff:fe20:7c7c: seq=4 ttl=47 time=136.191 ms ^C --- www.sixxs.net ping statistics --5 packets transmitted, 5 packets received, 0% packet loss round-trip min/avg/max = 129.322/133.013/136.360 ms[/code] Jednym z wymogów otrzymania 5pkt w serwisie sixxs, jest utrzymanie tunelu przez okres 1 tygodnia. Mając dodatkowe punkty można wypełnić wniosek o otrzymanie zakresu adresów dla wszystkich hostów w obrębie jednej sieci. Potrzebujemy do tego 14 pkt. Po zalogowaniu się do serwisu SIXXS i wybieramy zakładkę „Request subnet”. Wypełniamy 3 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 wniosek o nową podsieć, wysyłamy i poraz kolejny otrzymamy dwie wiadomości. Pierwsza z nich to potwierdzenie otrzymanie wniosku, druga zawierać będzie szczegółowe dane otrzymanej podsieci. Przykład otrzymanych parametrów sieci: [code]The SixXS Staff have honored your request for a subnet on the following tunnel: ------PoP Name : plwaw01 (pl.icm [AS8664]) Subnet IPv6 : 2001:6a0:16b::/48 Routed to : 2001:6a0:200:3d::2/64 Your IPv4 : heartbeat[/code] Konfiguracja demona radvd, pozwala na przydział adresów dla hostów naszej sieci: root@OpenWrt:~# cat /etc/config/radvd.conf [code]config interface option interface 'lan' option AdvSendAdvert 1 option AdvManagedFlag 0 #musi być włączone jeśli używamy dhcpv6 i przydzielamy adres po dhcpv6 option AdvOtherConfigFlag 0 #musi być włączone jeśli używamy dhcpv6 i przydzielamy adres po dhcpv6 option 'MinRtrAdvInterval' '3' option 'MaxRtrAdvInterval' '10' option ignore 0 config prefix option interface 'lan' # If not specified, a non-link-local prefix of the interface is used option prefix '2001:6a0:16b:1111::/64' option AdvOnLink 1 option AdvAutonomous 1 #musi być wyłączone jeśli używamy dhcpv6 i przydzielamy adres po dhcpv6 option AdvRouterAddr 1 option 'AdvValidLifetime' '7200' option 'AdvPreferredLifetime' '7200' option ignore 0 config rdnss option interface 'lan' # If not specified, the link-local address of the interface is used option addr '' option ignore 1[/code] 4 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 Otrzymaliśmy zakres naszej sieci z czego utworzyliśmy sobie podsieć dodając 1111 (po wyjaśnienia odnoście adresacji sieci w ipv6 odsyłam do internetu). W końcowej fazie ustawiamy adres ipv6 routera: root@OpenWrt:~# cat /etc/config/network [code]config interface lan option ifname eth0 option proto static option ipaddr 10.0.0.1 option netmask 255.255.255.0 option ip6addr 2001:6a0:16b:1111::1/64 config 'interface' 'sixxs_wan' option 'ifname' 'sixxs' option 'proto' 'none'[/code] Nadaliśmy zatem adres ip ipv6 dla naszego interfejsu lan. 2001:6a0:16b:1111::1/64 oraz dodaliśmy nowy interfejs aby zgrać to z firewall w openwrt. Jeżeli wszystkie kroki zostały należycie wykonane powinniśmy cieszyć się działającym 5 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 protokołem ipv6. Po podłączeniu komputera z dowolnym systemem operacyjnym, automatycznie obok adresu ipv4 zostanie przydzielony adres ipv6. !UWAGA! Wprzypadku 'windows xp' konieczne jest wydanie komendy: „netsh interface ipv6 install”. Aby sprawdzić poprawne funkcjonowanie ipv6 należy wejść na stronę ipv6.google.com, bądź spróbować ten adres spingować. Teraz wystarczy włączyć na stałe uruchamianie demonów aiccu i radvd [code]/etc/init.d/aiccu enable /etc/init.d/radvd enable[/code] Jeszcze słówko o aiccu i hotplug. Otóż nie zawsze aiccu w kamikadze dobrze radzi sobie z adresem zmiennym ipv4. Bywa że wywala się w powietrze i potem nie startuje. Prostym rozwiązaniem jest wykorzystanie do tego celu hotpluga. Tworzymy plik w katalogu /etc/hotplug.d/iface: [code]touch /etc/hotplug.d/iface/80-aiccu[/code] o zawartości: [code]#!/bin/sh [ "$ACTION" = "ifdown" -a "$INTERFACE" = "wan" ] && /etc/init.d/aiccu stop [ "$ACTION" = "ifup" -a "$INTERFACE" = "wan" ] && rdate ntp.task.gda.pl && /etc/init.d/aiccu start[/code] Teraz jak tylko pojawi się interfejs ppp0(modemy adsl/dsl połączenie pppoe/pppoa - adres ipv4 zmienny) automatycznie uruchomi nam się aiccu i jednocześnie zsynchronizuje datę. 6 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 Ps. W Backfire plik w hotplug istnieje. Jednakże aby wszystko działało bez problemów należy wprowadzić poniższe modyfikację: [code]mv /etc/hotplug.d/ifup/40-rdate /etc/hotplug.d/ifup/30-rdate mv /etc/hotplug.d/ifup/30-aiccu /etc/hotplug.d/ifup/80-aiccu[/code] Zawartość pliku /etc/hotplug.d/ifup/80-aiccu musimy zmodyfikować ponieważ domyślny działa błędnie. Zawartość pliku /etc/hotplug.d/ifup/80-aicc u winna wyglądać następująco: [code]#!/bin/sh [ "$ACTION" = "ifdown" -a "$INTERFACE" = "wan" ] && /etc/init.d/aiccu stop [ "$ACTION" = "ifup" -a "$INTERFACE" = "wan" ] && rdate ntp.task.gda.pl && /etc/init.d/aiccu start[/code] Jeszce parę słów o firewallu. Jest to tylko parę regułek które wystarczą do wstępnego uruchomienia: w pliku /etc/config/firewall należy dopisać [code]config rule option proto 41 option target ACCEPT option family ipv4 7 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 config rule # potrzebne dla tunelu typu hertbeat option dest_port 3740 option target ACCEPT option family ipv4[/code] generalnie to przerobimy trochę plik /etc/config/firewall tak aby był jasny podział na reguły ipv4 i ipv6. Pełna konfiguracja powinna wyglądać następująco: [code]config defaults option syn_flood 1 option input ACCEPT option output ACCEPT option forward REJECT # Uncomment this line to disable ipv6 rules # option disable_ipv6 1 config zone option name lan option network 'lan' option input ACCEPT option output ACCEPT option forward REJECT config zone option name wan option network 'wan' option input REJECT option output ACCEPT option forward REJECT option masq 1 option mtu_fix 1 option family ipv4 config zone option name 'sixxs_wan' option network 'sixxs_wan' option input REJECT 8 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 option output ACCEPT option forward REJECT option mtu_fix 1 option family ipv6 config forwarding option src lan option dest wan option family ipv4 config forwarding option src lan option dest 'sixxs_wan' option family ipv6 # We need to accept udp packets on port 68, # see https://dev.openwrt.org/ticket/4108 config rule option src wan option proto udp option dest_port 68 option target ACCEPT option family ipv4 config rule option src wan option proto 41 option target ACCEPT option family ipv4 config rule option src wan option proto tcp option dest_port 22 option target ACCEPT option family ipv4 # Allow IPv4 ping config rule option src wan option proto icmp option icmp_type echo-request option family ipv4 option target ACCEPT 9 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 # Allow essential incoming IPv6 ICMP traffic config rule option src 'sixxs_wan' option proto icmp list icmp_type echo-request list icmp_type destination-unreachable list icmp_type packet-too-big list icmp_type time-exceeded list icmp_type bad-header list icmp_type unknown-header-type option limit 1000/sec option family ipv6 option target ACCEPT # Allow essential forwarded IPv6 ICMP traffic config rule option src 'sixxs_wan' option dest * option proto icmp list icmp_type echo-request list icmp_type destination-unreachable list icmp_type packet-too-big list icmp_type time-exceeded list icmp_type bad-header list icmp_type unknown-header-type option limit 1000/sec option family ipv6 option target ACCEPT #ssh ipv6 config rule option src 'sixxs_wan' option proto tcp option dest_port 22 option target ACCEPT option family ipv6 #http/https ipv6 config rule option src 'sixxs_wan' option proto tcp option dest_port 80 option target ACCEPT option family ipv6 config rule 10 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 option src 'sixxs_wan' option proto tcp option dest_port 443 option target ACCEPT option family ipv6 config rule option src wan option proto tcp option dest_port 80 option target ACCEPT option family ipv4 config rule option src wan option proto tcp option dest_port 443 option target ACCEPT option family ipv4 # include a file with users custom iptables rules config include option path /etc/firewall.user[/code] Adres ma nieoczekiwany identyfikator interfejsu - czyli adresy tymczasowe ipv6 zmieniają się po każdym restarcie komputera Przyczyną na windows jest to, iż na routerze lokalnym skonfigurowane jest anonsowanie prefiksu globalnego. Domyślnie w sposób automatyczny konfigurowany jest adres tymczasowy oparty na prefiksie globalnym. Rozwiązaniem jest wyłączenie adresów tymczasowych, używając polecenia netsh interface ipv6 set privacy state=disabled Pod windows vista i 7 może pomóc opcja: netsh interface ipv6 set global randomizeidentifiers=disabled 11 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 Konfiguracja radvd+dhcpv6 czyli przydzielanie adresów poprzez dhcpv6 a trasy domyślnej poprzez radvd. Instalujemy wide-dhcpv6-server w openwrt [code]opkg install wide-dhcpv6-server[/code] Oraz edytujemy plik /etc/dhcp6s.conf. Jeśli go nie ma to tworzymy go. [code]touch /etc/dhcp6s.conf[/code] Zawartość pliku dhcp6s.conf winna wyglądać następująco: [code]option domain-name-servers 2001:470:20::2; option domain-name "domena.dyndns.org"; #option ntp-servers 2001:6a0:16b:1111::1; host rpc-vista { duid 00:01:00:06:14:ad:f7:8f:00:1c:c4:c8:1e:28; #address 2001:6a0:16b:1111::4 infinity; address 2001:6a0:16b:1111::4 1800 7200; }; host rpc-xp { duid 00:01:00:01:12:b6:e7:fd:00:1e:ec:08:44:97; #address 2001:6a0:16b:1111::5 infinity; address 2001:6a0:16b:1111::5 1800 7200; }; interface eth0 { address-pool domena.dyndns.org 3600; 12 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 preference 10; }; pool domena.dyndns.org { range 2001:6a0:16b:1111 ::1000 to 2001:6a0:16b:1111::2000 ; };[/code] Plik /etc/config/radvd winien wyglądać następująco: [code]config 'interface' option 'interface' 'lan' option 'AdvSendAdvert' '1' option 'AdvManagedFlag' '1' option 'AdvOtherConfigFlag' '1' option 'AdvLinkMTU' '1280' option 'MinRtrAdvInterval' '3' option 'MaxRtrAdvInterval' '10' option 'ignore' '0' config 'prefix' option 'interface' 'lan' option 'AdvOnLink' '1' option 'AdvAutonomous' '0' option 'prefix' '2001:6a0:16b:1111::/64' option 'AdvRouterAddr' '1' option 'AdvValidLifetime' '7200' option 'AdvPreferredLifetime' '7200' option 'ignore' '0' config 'rdnss' option 'interface' 'lan' option 'addr' '' option 'ignore' '1'[/code] Po składnię odsyłam do dokumentacji radvd i wide-dhcp6-server. 13 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 Windows Vista i 7 tak naprawdę tutaj nic nie musimy konfigurować. Adres zostanie pobrany automatycznie z pozostałymi informacjami. Będzie skonfigurowany tylko adres przydzielony. Nie wygeneruje się automatycznie adres na podstawie MAC bo nie ma takiej potrzeby. Jeszcze mała uwaga. Co to DUID ?. Otóż w ipv6 nie przewidziano przydzielania adresów poprzez MAC. Za to wymyślono coś takiego jak DUID. Jest to niepowtarzalny identyfikator generowany na podstawie czasu,typu interfejsu i adresu MAC (zakładam standardową metodę generowania DUID LLT - są krótsze identyfikatory ale tu patrz dokumentacja ipv6). Ponieważ DUID-LLT ma w sobie zawarty czas wygenerowania więc jest bardzo mało realne, ze wygenerowany numer kiedykolwiek się powtórzy. Adres DUID jest generowany tylko raz na danej maszynie i jest TYLKO jeden dla wszystkich interfejsów. Pod windows7/vista DUID generowany jest na podstawie pierwszego interfejsu, który nawiązał połączenie. Potem pozostaje niezmienny przypisany do komputera na stałe. Nawet jeśli wymienimy kartę sieciową na inną nie zmieni się. W praktyce windows7/vista generują go i przechowują w rejestrze ( HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpip6ParametersDhcpv6DUID ) , zaś w innych systemach lub klientach dhcp (np.dibbler) przechowywany jest w pliku tekstowym (client-duid np. w windows C:Program Filesdibblerclient-duid ). W systemie Windows 7 i VISTA odczytujemy go wydając komendę [code]ipconfig /all[/code] Tam go znajdziesz. 14 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 W windows XP niestety nie ma wsparcia natywnego dla DHCPv6. Ale można sobie doinstalować program Dibbler (skompilowany prawie na wszystkie systemy). Usługa dhcpv6 dibbler będzie pracowała cały czas monitorując interfejsy i pobierając adresy dhcp wersji 6 i odpowiednio konfigurując windows. DUID generowany jest podczas pierwszego uruchomienia programu i odczytamy go z pliku "Client View Log File.txt". Oczywiście tak jak i poprzednio dibbler można konfigurować na różne sposoby - tu odsyłam do dokumentacji. Najprostsza konfiguracja klienta dhcpv6 dibbler na kliencie to pusty plik. Pod linux albo instalujemy sobie clienta dibbler albo wide-dhcp6-client. Generowanie/zmiana DUID: Pod windows7/vista powinno wystarczyć usuniecie zmiennej Dhcpv6DUID (HKEY_LOCAL_MA CHINESYSTEMCurrentControlSetServicesTcpip6ParametersDhcpv6DUID ). Windows sam wygeneruje od nowa identyfikator DUID.W dibbler czy wide-dhcp6-client wystarczy usunąć plik z wygenerowanym identyfikatorem DUID (np.w dibbler client-duid ). Piszę bo może się zdażyć, iż ktoś będzie chciał klonować komputery wtedy te metody będą konieczne do zmiany identyfikatora, który NIGDY NIE może się powtarzać. Ps. 15 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 Jest możliwość tak skonfigurowania dhcpv6 server, że adresy nadal będą się generowały po adresie MAC (EUI-64), trasy nadaje radvd a dhcpv6 podaje tylko domenę, dns, ntp, nis. Zresztą jest naprawdę wiele możliwości konfiguracji ale tu znów odsyłam do dokumetacji. Serwerów DHCPv6 w przeciwieństwie do ipv4(może być tylko jeden) może być więcej niż jeden. Klient może (w zależności od konfiguracji) wybrać serwer dhcp, ten który ma najwyższą ważność (opcja preference, maksymalna wartość to 255). Wymagania kompilacji W przypadku kiedy chcemy sami sobie z kompilować 8.09.2 zaznaczasz poniższe opcje: [code]ipv6->aiccu ipv6->radvd[/code] w zasadzie to wystarczy (po wybraniu dwóch powyższych automatycznie wybiorą się poniższe opcje) ale sprawdź czy poniższe opcje są zaznaczone bo są wymagane [code]Ipv6->ip6tables Network->Time Synchronizacion->ntpclient Kernel modules->Netfilter Extension->kmod-ip6tables Kernel-modules->Network Support->kmod-ipv6 Kernel-modules->Network Support->kmod-gre Kernel-modules->Network Support->kmod-sit 16 / 17 Instalacja ipv6 na OpenWrt tunel hertbeat Wpisany przez rpc sobota, 10 października 2009 23:09 - Poprawiony czwartek, 29 marca 2012 20:22 Kernel-modules->Network Support->kmod-tun[/code] 17 / 17