IPv6 tunelovací mechanismy - instalace a nastavení

Osnova:
1. Obecný úvod
2. IPv6 tunel protokolem AYIYA
3. 6in4 tunel
4. Teredo tunel
5. Dodatek: IPv6 příkazy

Obecný úvod

Proč IPv6 tunelování?

Potřebuji IPv6 adresu/připojení, ale můj poskytovatel Internetu (ISP) stále IPv6 nepodporuje.

Jak to funguje?

IPv6 pakety jsou zapouzdřeny (vloženy) do IPv4 paketů a přeneseny po stávající IPv4 infrastruktuře k zprostředkovateli tunelu. Zprostředkovatel tunelu má nativní přístup do IPv6 sítě a proto může IPv4 část paketu odstranit a IPv6 paket přeposlat dále do IPv6 sítě. Tento proces je znázorněn v následujícím obrázku.

obr.1. simple ipv6 tunnel image

Zprostředkovatelé tunelu

Seznam zprostředkovatelů tunelu lze získat například na stránkách http://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers.

V tomto návodu využijeme služeb dvou nejznámějších Evropských zprostředkovatelů:
http://www.tunnelbroker.net/ - Hurricane Electric
http://www.sixxs.net/ - SixXS

Tunelovací mechanismy

6in4, AYIYA, 6to4, Teredo, ISATAP, ....

 

IPv6 tunel protokolem AYIYA - Anything In Anything

Vlastnosti

AYIYA zapouzdřuje IPv6 do UDP protokolu (IPv6-in-UDP-in-IPv4). Pro komunikaci používá port UDP/5072.

Výhody:
- nevyžaduje veřejnou IPv4 adresu
- nevyžaduje podporu protokol-41 na směrovačích
- funguje i při použití NATu či vícenásobných NATů
- umožňuje existenci více tunelů za NATem
- automatické nastavení tunelu
- autentizace

Nevýhody:
- větší režie oproti protokol-41 (6in4,6to4,...)

AYIYA = IPv4(20) + UDP(8) + AYIYA(44) = 72 B
proto-41 = IPv4(20) = 20 B

AYIYA je zatím podporována pouze zprostředkovatelem SixXS. Vytvoření tunelu je velice jednoduché, časově nejnáročnější je získání uživatelské jména a hesla.

Stručný postup

  1. Registrace uživatele - na stránkách http://www.sixxs.net/signup/create/
  2. Registrace tunelu - po přihlášení na https://www.sixxs.net/home/ vybrat v levém menu "Request tunnel" a typ tunelu "Dynamic NAT-traversing IPv4 Endpoint using AYIYA"
  3. AICCU a automatické nastavení tunelu - instalace aplikace AICCU; po zadání uživatelské jména a hesla bude IPv6 tunel vytvořen zcela automaticky

Detailní postup

1. Registrace uživatele

Na registračních stránkách vyplňte formulář a pokud možno uveďte smysluplný důvod proč chcete účet vytvořit.
Např. "I would like to use IPv6, but my ISP still doesn't support it."

Nepříjemné je, že pro e-mail kontakt nemůžete použít volně dostupné email adresy, které poskytují např. gmail.com, seznam.cz, centrum.cz, ... Vhodnou alternativou je email z práce nebo email přidělený od Vašeho poskytovatele Internetu (ISP). Více informací na http://www.sixxs.net/faq/account/?faq=email.

Po odeslání formuláře Vám okamžitě přijde email s výzvou k potvrzení registrace, stačí kliknout na odkaz v dolní části emailu.
Pokud Váš email prošel kontrolou, dostanete obratem další email s informací, že Váš požadavek byl předán pracovníkům SixXS k manuálnímu schválení. Schválení by dle stránek www.sixxs.net nemělo trvat déle než týden, ve skutečnosti to bude mnohem dříve (autorovi článku přišlo potvrzení za 6minut).

Po schválení Vaší žádosti, obdržíte email s uživatelským jménem, heslem a odkazem k přihlášení.

You have succesfully completed the user registration at SixXS.
Your account has been verified and the SixXS Staff have approved the information you have supplied.
You can now log in to the website with the following credentials:

Username   : uzivatel_jmeno
Password   : uzivatel_heslo
Secure URL : https://www.sixxs.net/home/

2. Registrace tunelu

Po přihlášení na stránkách https://www.sixxs.net/home/ vyberte v levém menu "Request tunnel". Ponechte nebo vyberte typ tunelu "Dynamic NAT-traversing IPv4 Endpoint using AYIYA". Uvedené veřejné adresy si nemusíte všímat, zadejte pouze město/stát a pokračujte k dalšímu kroku. Pokud máte na výběr z několika PoP, vyberte geograficky nejbližší nebo pokud jste schopni otestovat dostupnost jednotlivých PoP, vyberte ten s nejlepší odezvou a propustností. Následující obrázek ilustruje postup registrace tunelu.

obr.2. SixXS registration

 

Po odeslání registrace obdržíte informativní email s Vaší žádostí o tunel, která stejně jako registrace uživatele bude čekat na schválení pracovníky SixXS (autorovi přišlo schválení za 10hodin).

Ukázka schválené žádosti o tunel.

The SixXS Staff have honored your request for a tunnel with the following specifications:
-------
  Tunnel Id          : T21733
  PoP Name           : simbx01 (si.medinet [AS8591])
  Your Location      : Prague, cz
  SixXS IPv6         : 2001:15c0:65ff:233::1/64
  Your IPv6          : 2001:15c0:65ff:233::2/64
  SixXS IPv4         : 212.18.63.73
  Tunnel Type        : Dynamic (ayiya)
-------
The SixXS PoP at AS8591 will set up the tunnel automatically in the next hour. Please be patient and do not be alarmed if the tunnel does not ping after you enabled it. Check the tunnelinfo pages for configuration examples.

Install the AICCU client software as per instructions on: http://www.sixxs.net/tools/aiccu/  

Note: Keep your machine NTP synced, if the timestamp difference is bigger than 120 seconds the heartbeat will be silently dropped. The AICCU client will not work when it detects a large time difference.

Konečně po zdlouhavém procesu registrace jsme získali IPv6 adresu 2001:15c0:65ff:233::2. Tunel bude na straně zprostředkovatele zprovozněn do jedné hodiny od schválení.

3. AICCU a automatické nastavení tunelu

AICCU (Automatic IPv6 Connectivity Client Utility) nám umožní automatické nastavení a vytvoření registrovaného tunelu.

AICCU je multiplatformní aplikace a například na Debian založených distribucí je součásti repositáře. Pokud ovšem na daném systému není k dispozici, lze aplikaci stáhnout na stránkách společnosti SixXS.

 

Debian/Ubuntu

Instalace aplikace AICCU.

$ sudo apt-get install aiccu

Obrázky ilustrují instalační dialog.

obr.3. SixXS aiccu installation

Po úspěšné instalaci a konfiguraci AICCU vznikne konfigurační soubor "/etc/aiccu.conf" spolu se záznam ve startovacích skriptech systému, který zajistí automatické nastavení tunelu při spuštění systému.

$ sudo cat /etc/aiccu.conf  | grep -v "^#"
username VaseUzivatelskeJmeno
password VaseHeslo
protocol tic
server tic.sixxs.net
tunnel_id T21733
ipv6_interface sixxs
verbose false
daemonize true
automatic true
requiretls false

$ ls -al /etc/rc2.d/S20aiccu
lrwxrwxrwx 1 root root 15 2009-06-03 08:17 /etc/rc2.d/S20aiccu -> ../init.d/aiccu

Pokud bude potřeba změnit konfiguraci AICCU, lze přímo editovat konfigurační soubor "/etc/aiccu.conf" nebo využít instalačního dialogu, který se vyvolá příkazem

$ sudo dpkg-reconfigure aiccu

Tunel můžeme kdykoliv spustit nebo ukončit příkazy

$ sudo aiccu start
$ sudo aiccu stop

Zprávy o činnosti aplikace lze najít např. v souboru /var/log/syslog

$ grep aiccu /var/log/syslog
Jun 23 12:57:53 ... aiccu: Succesfully retrieved tunnel information for T21733
Jun 23 12:57:53 ... aiccu: AICCU running as PID 2278
Jun 23 12:57:53 ... aiccu: [AYIYA-start] : Anything in Anything (draft-02)
Jun 23 12:57:53 ... aiccu: [AYIYA-tun->tundev] : (Socket to TUN) started

Po úspěšném sestavení tunelu vznikne síťové rozhraní sixxs (výchozí název) s přidělenou IPv6 adresou.

$ ip -6 a show dev sixxs
7: sixxs: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1280 qlen 500
    inet6 2001:15c0:65ff:233::2/64 scope global
       valid_lft forever preferred_lft forever
    inet6 fe80::14c0:65ff:233:2/64 scope link
       valid_lft forever preferred_lft forever

Pro ověření nové IPv6 konektivity spustíme první IPv6 ping ;)

$ ping6 -n ripe.net
PING ripe.net(2001:610:240:11::c100:1319) 56 data bytes
64 bytes from 2001:610:240:11::c100:1319: icmp_seq=1 ttl=56 time=92.1 ms
64 bytes from 2001:610:240:11::c100:1319: icmp_seq=2 ttl=56 time=90.4 ms

 

Windows

Obrázky a postup instalace AICCU pro Windows uživatele byl převzat z http://www.sixxs.net/faq/account/?faq=10steps

1.Na stránkách http://www.sixxs.net/tools/aiccu/ stáhnout odpovídající verzi AICCU pro Windows a pravděpodobně také Tun/Tap32 ovladač.

2.Spustit AICCU aplikaci a přihlásit se.

aiccu_login.jpg

3.Zvolit registrovaný tunel.

aiccu_tunnels.jpg

4.Výsledná konfigurace tunelu, pro jeho vytvoření stačí kliknout na "Enable".

aiccu_details.jpg

 

Možné problémy s AYIYA (zprostředkovatel SixXS)

1. Odmítnutá registrace uživatele

Zkontrolovat, zda-li u kontaktu uživatele nebyla použita volně dostupné email adresa. Použijte email z práce nebo email přidělený od Vašeho poskytovatele Internetu (ISP). Více informací na http://www.sixxs.net/faq/account/?faq=email.

2. Tunel nefunguje

Firewall - blokace portů

Zkontrolovat, jsou-li na lokálním systému povoleny tyto porty pro odchozí provoz:
UDP/5072 ... používá AYIYA
TCP/3874 ... TIC (Tunnel Information and Control protocol), který používá AICCU pro sestavení tunelu u SixXs

Další informace o nastavení firewallu http://www.sixxs.net/faq/connectivity/?faq=firewalled

3. Špatný čas na lokálním systému

Pokud je v logu tato zpráva:

$ grep aiccu /var/log/syslog
Jun 23 12:50:51 ... aiccu: The clock is off by 172 seconds, use NTP to sync it!
Jun 23 12:50:51 ... aiccu: Couldn't retrieve first tunnel for the above reason, aborting

je potřeba synchronizovat čas, například dle volně dostupného NTP serveru ntp.nic.cz.

$ sudo ntpdate -u -v ntp.nic.cz
23 Jun 12:55:53 ntpdate[2111]: ntpdate 4.2.4p4@1.1520-o Wed May 13 21:05:58 UTC 2009 (1)
23 Jun 12:55:53 ntpdate[2111]: step time server 217.31.205.226 offset -171.103851 sec

Časový rozdíl oproti serveru u SixXs lze zjistit na http://www.sixxs.net/tools/timecheck/.

4. Po startu systému není tunel automaticky nastaven

Při instalaci (linunx) je vytvořen záznam "/etc/rc2.d/S20aiccu", který předpokládá funkční nastavení internetového připojení v rámci startovacích skriptů (spuštění systému). Pokud však používáte například bezdrátové připojení, které se nastaví až při spuštění grafické rozhraní (Gnome, KDE, ...), nebude inicializace tunelu fungovat. Možným řešením je spustit AICCU až po fungujícím bezdrátovém připojení.

Například u Gnome správce oken kliknout v hlavním menu na "System" -> "Preferences" -> "Sessions". Zvolit "Add" a vyplnit parametry dle následujícího obrázku. Nevýhoda: Budete vyzváni k zadaní přihlašovacího hesla do systému. Samozřejmě to lze obejít editací /etc/sudoers.

sessions_preferences.png

 

3. 6in4 tunel

Vlastnosti

6in4 zapouzdřuje IPv6 do IPv4 hlavičky (IPv6-in-IPv4). V IPv4 hlavičce se jako protokol použije číslo 41 (0x29), který identifikuje IPv6 v IPv4.

Výhody:
- menší režie (pouze 20 B) oproti AYIYA a Teredo
- rychlá registrace uživatele/tunelu u Hurricane Electric zprostředkovatele

Nevýhody:
- vyžaduje veřejnou adresu domácího směrovače (ADSL, WiFi) nebo počítače
- nefunguje u vícenásobného NATu
- směrovače v rámci tunelu nesmí blokovat protokol 41
- statické nastavení tunelu: při změně veřejné adresy (lokálního konce tunelu) je nutná manuální úprava konfigurace tunelu na webových stránkách zprostředkovatele
- bez autentizace

Pro sestavení 6in4 tunelu použijeme zprostředkovatele Hurricane Electric.

1. Registrace uživatele

Registrace uživatele je u HE velice snadná, stačí vyplnit registrační stránky a obratem bude na uvedený email zasláno uživatelské jméno a heslo. Oproti SixXS u Hurricane Electric nejsou žádné restrikce na poskytovatele email adresy.

2. Registrace tunelu

Po přihlášení v nabídce "User Functions" vybrat "Create Regular Tunnel". Opsat IPv4 adresu z řádku "You are viewing from IP:" do políčka "IPv4 endpoint:". Vybrat nejbližší server ze seznamu a potvrdit. Dialog registrace tunelu je zobrazen na následujícím obrázku.

Upozornění: Při registraci tunelu je vyžadován funkční ping na veřejnou adresu domácího směrovače/počítače. Dostupnost veřejné adresy si lze ověřit na stránkách www.subnetonline.com.

he_tunnel_registration_full.png

3. Konfigurace tunelu

Po registraci se zobrazí detailní informace a tunel je u zprostředkovatele okamžitě vytvořen. Přidělená IPv6 adresa je v políčku "Client IPv6 address:". Kromě IPv6 adresy pro koncový bod tunelu je zároveň přidělen IPv6 /64 prefix viz řádek "Routed /64:", který lze využít pro domácí IPv6 podsíť. Můžete také využít rekurzivních doménových serverů a těšit se z IPv6 přístupu na Google služby, stačí na začátek souboru /etc/resolv.conf uvést IP adresy z obou řádků "Anycasted IPv? Caching Nameserver:".

Ukázka obsahu souboru /etc/resolv.conf s rekurzivními NS servery zprostředkovatele

nameserver 2001:470:20::2
nameserver 74.82.42.42

 

V sekci "Example OS Configurations (Windows, Linux, etc.):" je možnost vygenerovat příkazy pro konfiguraci tunelu u nejznámějších operačních systému: Linux, Open/Net/FreeBSD, JunOS, IOS, Mikrotik, Solaris, Windows a dalších.

V případě uživatelů za NATem je potřeba přepsat veřejnou IPv4 adresu lokálního konce tunelu za privátní IPv4 adresu. V případě Linuxu a "ip tunnel add ..." příkazu, lze celou sekci "local IP_adresa" vynechat.

he_tunnel_information.png

 

Ukázka pro Windows Vista

netsh interface ipv6 add v6v4tunnel IP6Tunnel 94.169.120.21 216.66.80.30
# v případě NAT přepíšeme veřejnou IPv4 adresu lokálního konce tunelu za přidělenou privátní IP adresu; např.
netsh interface ipv6 add v6v4tunnel IP6Tunnel 192.168.1.2 216.66.80.30

netsh interface ipv6 add address IP6Tunnel 2001:470:1f0a:154::2
netsh interface ipv6 add route ::/0 IP6Tunnel 2001:470:1f0a:154::1

Automatické nastavení tunelu u Debian/Ubuntu

Na konec souboru /etc/network/interfaces přidat.

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
  # přidělená IPv6 adresa (Client IPv6 address)
  address 2001:470:1f08:13f::2
  netmask 64
  # IPv4 adresa vzdáleného konce tunelu (Server IPv4 address)
  endpoint 216.66.80.26
  ttl 64
  up ip link set mtu 1280 dev he-ipv6
  # IPv6 adresa vzdáleného konce tunelu (Server IPv6 address)
  up ip route add default via 2001:470:1f08:13f::1 dev he-ipv6

Zrušení tunelu

Na Linuxu příkazem ("he-ipv6" je výchozí název tunelu u Hurricane Electric)

ip t del he-ipv6

Na Windows

netsh interface ipv6 del int "IP6Tunnel"

Změna IPv4 adresy lokálního konce tunelu

Pokud by se změnila IPv4 veřejná adresa lokálního konce tunelu, je potřeba vyvolat editační okno kliknutím na IPv4 adresu v řádku "Client IPv4 address:" u webovém rozhraní konfigurace tunelu (obrázek výše) a tento údaj aktualizovat.

he_update_IPv4_endpoint

 

Možné problémy s 6in4 (zprostředkovatel Hurricane Electric)

1. Nelze zaregistrovat tunel - ping

Při registraci se vyžaduje funkční ping (dostupnost) na veřejnou adresu domácího směrovače/počítače. Ukázka povolení u Belkin směrovače.

wan_ping.png

 

4. Teredo tunel

Tunelovací metoda Teredo je převážně určena uživatelům operačního systému Windows, kteří mají podporu Teredo v systému integrovanou od výchozí instalace. Uživatelé jiných operačních systémů mohou také využít Teredo, ale lepší varianta je výše zmíněná AYIYA.

Teredo dokáže fungovat i skrze NAT (kromě symetrického) a nevyžaduje IPv4 veřejnou adresu. Detailní informace o Teredo lze získat na následujících odkazech:
Pavel Satrapa - IPv6 (cz) ipv6tf.org: Teredo (en)
Microsoft: Using IPv6 and Teredo (en)
Microsoft: Internet Protocol Version 6 (en)
Mircrosoft: Teredo Overview (en)

Teredo podpora ve Windows:
- Microsoft® Windows® XP with Service Pack 1 (SP1) (disabled by default)
- Windows XP with Service Pack 2 (SP2) (disabled by default)
- Windows Server® 2003 (disabled by default)
- Windows Vista™ (enabled by default)
- Windows Server Code Name "Longhorn" (now in beta testing) (enabled by default)
zdroj: microsoft.com

Ve Windows Vista by mělo být Toredo automaticky povoleno, u starších systému je potřeba Teredo nejdříve aktivovat.

Teredo s Windows XP (SP2)

Spustíme příkazovou řádku přes nabídku Start => Všechny programy => Příslušenství => Příkazový řádek nebo přes "Start" -> "Spustit ..."-> napsat "cmd" a kliknout na tlačítko "OK".

1.Instalovat IPv6 protokol

C:\> netsh int ipv6 install

2.Povolit Teredo. Doporučujeme využít nášTeredo server "teredo.nic.cz".

C:\> netsh int ipv6 set teredo client teredo.nic.cz
nebo 
C:\> netsh int ipv6 set teredo client teredo.remlab.net

Počkejte přibližně minutu než skončí inicializační komunikace mezi klientem/serverem a detekce NATu. Poté by mělo být Pv6 připojení funkční.

Informace o stavu Teredo lze získat příkazy

C:\> netsh int ipv6 show teredo
C:\> netsh int ipv6 show int teredo
C:\> ipconfig

Ukázka funkčního nastavení Teredo tunelu. Stav tunelu by měl být označen jako "qualified", NAT byl v našem případě detekován jako "restricted".

teredo_show.png

 

Přidělenou IPv6 adresu lze získat příkazem "ipconfig".

teredo_ipconfig.png

 

Funkční IPv6 připojení lze otestovat příkazem "ping6 ripe.net".

teredo_ping6.png

 

Vypnutí Teredo tunelovaní

C:\> netsh int ipv6 set teredo disabled

Odinstalování IPv6 protokolu

C:\> netsh int ipv6 uninstall

 

Možné problémy s Teredo

1. Nesprávný stav tunelu

Stav tunelu by měl být "qualified". Informace o Teredo tunelu lze zjistit příkazem "netsh int ipv6 show teredo".

Možné důvody chybových stavů:
- Tunel nebude fungovat pokud byl NAT označen jako symetrický
- Nefunkční Teredo server.

Pokud se nedaří sestavit tunel s aktuálním Teredo server, zkuste zvolit alternativní:

  • teredo.remlab.net (France)
  • teredo.autotrans.consulintel.com (Spain)
  • teredo.ipv6.microsoft.com (USA, Redmon)
  • 203.233.154.10 (NCA, Korea)
  • debian-miredo.progsoc.org (Australia)
    zdroj:www.ipv6tf.org

2. IPv6 adresa (6bone)

Pokud přidělená IPv6 adresa začíná "3FFE:..." (6bone testing), pro přidělení správné adresy je potřeba modifikovat Teredo klienta. K dispozici jsou dvě možnosti:

a) Instalovat Windows Update KB922819

b) Úprava systémových registrů
Uložte soubor "teredo_prefix.reg" (přes pravé tlačítko a uložit jako) na svůj systém, v průzkumníku vyhledejte uložený soubor a klikněte pravým tlačítkem na název souboru. Z vyvolané nabídky (obrázek níže) zvolte "Sloučit" a potvrďte. Změna se projeví po restartu systému.

teredo_prefix.png

3. Mám IPv6 adresu, ale stále přistupuji přes IPv4

Pokud má Windows XP IPv6 konektivitu přes Teredo, bude stále preferovat IPv4. IPv6 spojení bude použito v případech, kdy má cílový host pouze IPv6 adresu, jako např. ipv6.google.com.

 

 

5. Dodatek: IPv6 příkazy

Pozn. není určeno pro Windows uživatele.

Pokud aplikace nebude umět pracovat s IPv6 adresou, zkusit za název aplikace doplnit 6 či použít parametr -6

# ping6, tracepath6, traceroute6
# wget -6, ip -6, nmap -6, dig -6
# ip6tables

 

Zápis IPv6 adresy v aplikacích pomocí hranatých závorek.

scp user@[2001:610:240:11::c100:1319]:
http://[2001:610:240:11::c100:1319]/

 

$ ip -6 address show  # vypíše seznam adres protokolu IPv6
$ ip -6 r             # vypíše IPv6routovací tabulku 

$ ip tunnel show      # vypíše seznam tunelů
 sit0: ipv6/ip  remote any  local any  ttl 64  nopmtudisc
 he-ipv6: ipv6/ip  remote 216.66.80.26  local any  ttl 64

$ ip t del he-ipv6    # odstraní tunel "he-ipv6"

 

Odstraní všechny směrovací informace spojené s "he-ipv6" tunelem.

$ ip -6 route flush dev he-ipv6

 

Zobrazí rozhraní a next-hop, který se použije pro uvedenou cílovou adresu.

$ ip -6 r get 2001:4860:a005::68
 2001:4860:a005::68 via 2001:15c0:65ff:233::1 dev sixxs  src 2001:15c0:65ff:233::2  metric 1024  expires 21333882sec mtu 1280 advmss 1220 hoplimit 4294967295

 

Zrušení autokonfigurace IPv6 u eth0 síťového rozhraní.

$ sudo sysctl -w net.ipv6.conf.eth0.accept_ra=0

 

IPv4/6 kalkulátor podsítí.

$  sipcalc 2001:15c0:65ff::0/48
-[ipv6 : 2001:15c0:65ff::0/48] - 0

[IPV6 INFO]
Expanded Address        - 2001:15c0:65ff:0000:0000:0000:0000:0000
Compressed address      - 2001:15c0:65ff::
Subnet prefix (masked)  - 2001:15c0:65ff:0:0:0:0:0/48
Address ID (masked)     - 0:0:0:0:0:0:0:0/48
Prefix address          - ffff:ffff:ffff:0:0:0:0:0
Prefix length           - 48
Address type            - Aggregatable Global Unicast Addresses
Network range           - 2001:15c0:65ff:0000:0000:0000:0000:0000 -
                          2001:15c0:65ff:ffff:ffff:ffff:ffff:ffff

 

Monitoring IPv6.

$ sudo tcpdump -n -i eth0 proto 41   # 6in4 provoz
$ sudo tcpdump -i eth0 -n icmp6
$ sudo tcpdump -i any -n ip6

 

Dotaz na všechny sousedy na daném segmentu.

$ ping6 -I eth0 ff02::1

 

Dotaz na všechny směrovače na daném segmentu.

$ ping6 -I eth0 ff02::2

 

EP 29.6.2009