Differences between revisions 1 and 2
Revision 1 as of 2006-11-24 10:26:03
Size: 16899
Editor: mohacsi
Comment:
Revision 2 as of 2006-11-24 14:25:15
Size: 17619
Editor: mohacsi
Comment:
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:
Line 6: Line 7:
Az !OpenWrt White Russian RC6-os verziója támogatja az itt leírt beállításokat. Az !OpenWrt White Russian RC5 és RC6-os verziója támogatja az itt leírt beállításokat.
Line 23: Line 24:
 1. IPv6 routing szoftver - Az interfészek és routing táblák konfigurálásához fel kell telepítenünk az új iputils csomagot, valamint a route advertising daemon is kell, ahhoz, hogy az alhálózat fele terjesszük az IPv6 útvonalakat.  1. IPv6 routing szoftver - Az interfészek és routing táblák konfigurálásához fel kell telepítenünk az új iputils csomagot, valamint a route advertising daemon is kell, ahhoz, hogy az alhálózat felé tudjunk IPv6 Router Advertisment üzeneteket tudjunk küldeni.
Line 39: Line 40:
1.Az IPv6 modul indítása automatikusan megtörténik a router újraindításakor a '/etc/modules.d/20-ipv6' által. Újraindítás nélkül is lehetséges a kernel modul kernelbe töltése az 'insmod ipv6' paranccsal. Ezek után a router már IPv6 képes. Ezt ellenőrizhetjük az 'ifconfig' paranccsal, mellyel kideríthetjük, hogy a ::1/128-as inet6 cím hozzá lett kötve a loopback interfészhez.

 
# ifconfig lo
  lo Link encap:Local Loopback
   inet addr:127.0.0.1 Mask:255.0.0.0
   inet6 addr: ::1/128 Scope:Host
   UP LOOPBACK RUNNING MTU:16436 Metric:1
   RX packets:116 errors:0 dropped:0 overruns:0 frame:0
   TX packets:116 errors:0 dropped:0 overruns:0 carrier:0
   collisions:0 txqueuelen:0
   RX bytes:10395 (10.1 KiB) TX bytes:10395 (1 0.1 KiB)

2
.Opcionálisan be lehet tölteni a tűzfal moduljait is:
  insmod ip6_tables
  insmod ip6_table_filter
Az indításkori betöltéshez a /etc/modules.d/20-ipv6-hoz vagy /etc/modules-hoz a következőt adjuk hozzá:
  ip6_tables
  ip6_table_filter
A betöltés megtörténtének ellenőrzéséhez az 'ip6_tables' show parancs használható

 # ip6
tables -L
 
Chain INPUT (policy ACCEPT)
 target prot opt source destination

 
Chain FORWARD (policy ACCEPT)
 target prot opt source destination

 
Chain OUTPUT (policy ACCEPT)
 target prot opt source destination

3
.A tűzfal beállításainál a szkripthez hozzá kell adni a következőket annak érdekében, hogy a tűzfal átengedje az IPv4-be ágyazott IPv6 csomagokat:
iptables -A INPUT -p 41 -i $WAN -j ACCEPT
Ha a router egyben hálózati címfordító is (NAT), akkor a következő sorokat is hozzá kell adni, hogy a NAT táblába ne kerüljön bele a 41-es protokoll (ami az IPv6 az IPv4-ben protokollja, neve: 6in4). Ha ezt nem tesszük, akkor az IPv6 alagút egy idő múlva leáll.
 iptables -t nat -D POSTROUTING -o $WAN -j MASQUERADE
 iptables -t nat -A POSTROUTING --protocol ! 41 -o $WAN -j MASQUERADE
Ezt a megfelelő helyre kell írni a tűzfal szkriptjében. Rögtön az előző parancs elé, vagy után.

IPv6 Internetkapcsolat beállítása

 
Két lehetőség közül lehet választani, az egyik a 6to4 (bárhol működik), a másik lehetőség akkor áll fenn, ha egy Point of Presence közelében vagyunk, ez pedig a SixXS alagút.

 6to4 kapcsolat beállítása közvetlen Internetkapcsolat esetén

 
Ez a lehetőség akkor működik, ha a router WAN portja egy DHCP-vel vagy statikusan osztott Ipv4 címet kap. A 6to4 alagút boot időbeli automatikus indításához a következő szkriptet az '/etc/init.d/S42tun6to4' fájlba kell írni:
 1. Az IPv6 modul indítása automatikusan megtörténik a router újraindításakor a {{{/etc/modules.d/20-ipv6}}} által. Újraindítás nélkül is lehetséges a kernel modul kernelbe töltése az 'insmod ipv6' paranccsal. Ezek után a router már IPv6 képes. Ezt ellenőrizhetjük az {{{ifconfig}}} paranccsal, mellyel kideríthetjük, hogy a {{{::1/128}}}-as IPv6 cím konfigurálva lett loopback interfészre.
 {{{
 
# ifconfig lo
 lo Link encap:Local Loopback
           inet addr:127.0.0.1 Mask:255.0.0.0
           inet6 addr: ::1/128 Scope:Host
           UP LOOPBACK RUNNING MTU:16436 Metric:1
           RX packets:116 errors:0 dropped:0 overruns:0 frame:0
           TX packets:116 errors:0 dropped:0 overruns:0 carrier:0
           collisions:0 txqueuelen:0
           RX bytes:10395 (10.1 KiB) TX bytes:10395 (10.1 KiB)
 }}}
 1
. Opcionálisan be lehet tölteni a tűzfal moduljait is:
 {{{
 
insmod ip6_tables
 insmod ip6_table_filter
 }}}
 
Az indításkori betöltéshez a {{{/etc/modules.d/20-ipv6}}}-hoz vagy {{{/etc/modules}}}-hoz a következőt adjuk hozzá:
 {{{
 
ip6_tables
 ip6_table_filter
 }}}

 
A betöltés megtörténtének ellenőrzéséhez az {{{ip6_tables -L}}} parancs használható
 {{{
 # ip6tables -L
 
Chain INPUT (policy ACCEPT)
 target prot opt source destination

 
Chain FORWARD (policy ACCEPT)
 target prot opt source destination

 
Chain OUTPUT (policy ACCEPT)
 target prot opt source destination
 }}}
 1
. A tűzfal beállításainál a szkripthez hozzá kell adni a következőket annak érdekében, hogy a tűzfal átengedje az IPv4-be ágyazott IPv6 csomagokat:
 {{{
 
iptables -A INPUT -p 41 -i $WAN -j ACCEPT
 }}}
 
Ha a router egyben hálózati címfordító is (NAT), akkor a következő sorokat is hozzá kell adni, hogy a NAT táblába ne kerüljön bele a 41-es protokoll (ami az IPv6 az IPv4-ben tunnel protokollja). Ha ezt nem tesszük, akkor az IPv6 tunnel egy idő múlva leáll ha nincsen ipv6-os forgalom.
 {{{
 
iptables -t nat -D POSTROUTING -o $WAN -j MASQUERADE
 iptables -t nat -A POSTROUTING --protocol ! 41 -o $WAN -j MASQUERADE
 }}}
 
Ezt a megfelelő helyre kell írni a tűzfal szkriptjében. Rögtön az előző parancs elé, vagy után.

= IPv6 Internetkapcsolat beállítása =

Két lehetőség közül lehet választani, az egyik a 6to4 (bárhol működik, ahol az Internet szolgáltató publikus IPv6 címeket oszt), a másik lehetőség akkor áll fenn, ha egy IPv6-al rendelkező pont közelében vagyunk ahol tudnak nekünk IPv6 tunnelt biztosítani. Ez lehet egy {http://www.sixxs.net SixXS} IPv6 tunnel is.

== 6to4 kapcsolat beállítása közvetlen Internetkapcsolat esetén ==

Ez a lehetőség akkor működik, ha a router WAN portja egy DHCP-vel vagy statikusan osztott Ipv4 címet kap. A 6to4 tunel bootols'kori automatikus indításához a következő szkriptet az {{{/etc/init.d/S42tun6to4}}} fájlba kell írni:
{{{
Line 86: Line 96:
# 6to4 alagut # 6to4 tunnel
Line 178: Line 188:
6to4 kapcsolat beállítása PPP kapcsolat esetén

 Az itt leírt beállításokat akkor kell alkalmazni, ha az Internetszolgáltatóhoz PPP-n (általában PPPoE-n) keresztül kapcsolódunk. Amikor a PPP interfész működésbe lép, a PPP deamon meghívja a '/etc/ppp/ip-up' szkriptet, amikor leáll az interfész, automatikusan hívja a '/etc/ppp/ip-down' szkriptet. Ezek a szkriptek a '/etc/hotplug.d/iface/*'-beli szkripteket hívják a megfelelő paraméterekkel. Az IPv6 támogatásához a '/etc/hotplug.d/iface=10-ipv6' szkriptet kell írnunk a következő módon:
}}}

== 6to4 kapcsolat beállítása PPPoE kapcsolat esetén ==

Az itt leírt beállításokat akkor kell alkalmazni, ha az Internetszolgáltatóhoz PPP-n (általában PPPoE-n) keresztül kapcsolódunk. Amikor a PPP interfész működésbe lép, a PPP deamon meghívja a {{{/etc/ppp/ip-up}}} szkriptet, amikor leáll az interfész, automatikusan hívja a {{{/etc/ppp/ip-down}}} szkriptet. Ezek a szkriptek a '/etc/hotplug.d/iface/*'-beli szkripteket hívják meg a megfelelő paraméterekkel és környezeti változokkal. Az IPv6 támogatásához a {{{/etc/hotplug.d/iface=10-ipv6}}} szkriptet kell írnunk a következő módon:

{{{
Line 209: Line 222:
 Figyelem! A radvd.conf fájlban prefixként 0:0:0:5678::/64-et kell használni. Az 5678-as alhálózat ebben az esetben kötelező.
A 6to4 protokollról

 A 6to4 egy olyan protokoll
, ami az IPv6-os csomagokat Ipv4-be ágyazza, és a csomagok így továbbítódnak. A protokollal IPv6-os hálózatok (szigetek) köthetőek össze az IPv4-es hálózatban. Bővebb információ: a http://www.kfu.com/~nsayer/6to4/ címen olvasható angolul. Ezen a címen olvasható egy fontos funkció, mellyel egyszerűen lehet találni relay agent-et. Az RFC3068-ban szerepel egy anycast IPv6 cím, mely segítségével megtalálható a legközelebbi relay agent. A legközelebbi relay agent használatával a jobb teljesítmény érhető el. További információk a fenti oldalon olvashatóak.
 A fenti '6to4 kapcsolat beállítása közvetlen internetkapcsolat esetén' részeben, a szkriptben lévő 192.88.99.1 cím is egy olyan cím, amely a legközelebbi megfelelő routerhez irányít. Ezt azonban nem minden ISP kezeli megfelelően.

 Internetkapcsolat statikus alagút segítségével

 Megjegyzés: ennek a szkriptnek bármely alagút brókerrel működnie kell. Jelen esetben a SixXs alagút brókert használjuk.
}}}

'''
Figyelem!''' A {{{radvd.conf}}} fájlban prefixként {{{0:0:0:5678::/64}}}-et kell használni (azaz azt a prefixeket amit a scriptben definiáltunk).

===
A 6to4 protokollról ===

A 6to4 egy olyan éttérési módszer, ami az IPv6-os csomagokat automatikusan IPv4-be ágyazza, és a csomagok így továbbítódnak. A protokollal IPv6-os hálózatok (szigetek) köthetőek össze az IPv4-es hálózatban. Egy nagy problémája a 6to4 megoldásnak, hogy a 6to4 prefix-szel rendelkező és "normális" IPv6 prefix-szel rendelkező hálózatok között az átjárást egy 6to4 relay-el kell megoldani. Bővebb információ: a http://www.kfu.com/~nsayer/6to4/ címen olvasható angolul. Az előző címen olvasható egy fontos funkció az anycast relay, mellyel egyszerűen lehet találni relay agent-et. Az RFC3068-ban szerepel egy anycast IPv6 cím, mely segítségével megtalálható a legközelebbi relay agent. A legközelebbi relay agent használatával a jobb teljesítmény érhető el. További információk a fenti oldalon olvashatóak.

A fenti 6to4 konfiguációk esetén alkalmazott 192.88.99.1 cím is egy olyan cím, amely a legközelebbi 6to4 relay routerhez irányít.

==== Milyen kapcsolatban áll az IPv4 és IPv6 cím? ====
Az IPv4 cím minden egyes darabját hexadecimális számmá konvertálják. Ezután a 6to4 cím alakja: 2002:hex1hex2:hex3hex4:0001::1. Ahol hex1,..,hex4 az átalakított IPv4 cím darabjai. A 2002 a 6to4
prefix, a végén egy 16+64 bitnyi címtartomány van helyi felhasználásra.


== Internetkapcsolat statikus alagút segítségével ==

'''
Megjegyzés''': ennek a szkriptnek bármely tunnelbrokerrel működnie kell. Jelen esetben a SixXs tunnelbrokert használjuk.
{{{
Line 252: Line 273:
 A helyes műdödés érdekében az ip tunnel add sixxs sorhoz hozzá kell adni a ttl 64 szöveget. Enélkül is működik a kapcsolat, de a traceroot-ok lassúak. A traceroot6 parancs ezenkívül minden egyes közbülső hop-nál elvétette a „(* * *)”-ot ???. Az itt közölt beállításokkal minden rendben működik.

 Internetkapcsolat dinamikus SixXS.net alagút segítségével

 Dinamikus alagút használatához fel kell telepítenünk az 'aiccu' csomagot az 'ipkg install aiccu' parancs segítségével. Ezután a '/etc/aiccu.conf' fájlt kell szerkesztenünk. A konfigurációs fájlba be kell illesztenünk a login nevünket és jelszavunkat, konfigurálni kell az 'ipv4_interface'-t (általában vlan1). Ezenkívül kommentezzük ki a „tunnel_id” sort, amennyiben csak egyetlen alagúttal dolgozunk.
}}}

A helyes műdödés érdekében az {{{ip tunnel add sixxs}}} sorhoz hozzá kell adni a {{{ttl 64}}} szöveget. Enélkül is működik a kapcsolat, de a {{{traceroute}}}-ok lassúak. A {{{traceroute6}}} parancs ezenkívül minden egyes közbülső hop-nál elvétette a „(* * *)”-ot ???. Az itt közölt beállításokkal minden rendben működik.

== Internetkapcsolat dinamikus SixXS.net alagút segítségével ==

Dinamikus tunnel használatához fel kell telepítenünk az {{{aiccu}}} csomagot az {{{ipkg install aiccu}}} parancs segítségével. Ezután a {{{/etc/aiccu.conf}}} fájlt kell szerkesztenünk. A konfigurációs fájlba be kell illesztenünk a login nevünket és jelszavunkat, konfigurálni kell az {{{ipv4_interface}}}-t (általában vlan1). Ezenkívül kommentezzük ki a „tunnel_id” sort, amennyiben csak egyetlen tunnel-el dolgozunk.

{{{
Line 281: Line 305:
 A SixXS dokumentációjában az szerepel, hogy a gépünket (routerünket) szinkronizáljuk valamely NTP (Network Time Protocol) szerverhez, mert ha az időbélyegek közötti különbség 102 másodperc fölé emelkedik a heartbeat eldobódik. Arra is figyelmeztet, hogy a megfelelő időzóna beállítsása szükséges. A sziknronizálás megoldható egy ntp kliens feltelepítésével (indításkori szinkronizáció). Az idő elcsúszás karbantartásához openntpd-t telepíthetünk.
 Ezek után elindíthatjuk a sixxs klienst:
 aiccu start
Amennyiben ez nem működne, úgy a 'logread' paranccsal járhatunk utána, hogy valójában mi is történik.

IPv6 beállítása a LAN-on

 
Ebben a pontban feltételezzük, hogy rendelkezünk egy működő IPv6 kapcsolattal, és minden probléma nélkül meg tudjuk pingelni a ping6 programmal a www.kame.net-et. Ez egy olyan oldal, amit ha IPv6-on keresztül tekintünk meg, akkor mást látunk, mint ha IPv4-en keresztül érjük el. Innen tudhatjuk, hogy IPv6 kapcsolatunk él.
 Ha SixXS vagy más alagút brókert használunk, akkor csak a ::1 (a Point of Presence) és a ::2 (a saját végpontunk) használható, a többi nem kerül forgalomirányításra. Emiatt előbb létre kell hozni és engedélyezni egy alhálózatot, mielőtt használatba vennénk a route adviser daemon-t. Egészen pontosan arról van szó, hogy az alagút brókernél kérni kell egy alhálózatot és azt engedélyeztetni kell. A fent említett SixXS-en kívül a Hurricane Electric is egy ilyen alagút bróker.
 Tegyük fel, hogy van egy
2001:db8:0:f101::/64-es alhálózatunk. A következő sorokat írjuk be a '/etc/radvd.conf' fájlba, mellyel engedélyezzük alhálózatunk meghirdetését:
}}}

A SixXS dokumentációjában az szerepel, hogy a gépünket (routerünket) szinkronizáljuk valamely NTP (Network Time Protocol) szerverhez, mert ha az időbélyegek közötti különbség 102 másodperc fölé emelkedik a heartbeat eldobódik. Arra is figyelmeztet, hogy a megfelelő időzóna beállítsása szükséges. A sziknronizálás megoldható egy ntp kliens feltelepítésével (indításkori szinkronizáció). Az idő elcsúszás karbantartásához openntpd-t telepíthetünk.

Ezek után elindíthatjuk a sixxs klienst:
{{{
aiccu start
}}}
Amennyiben ez nem működne, úgy a {{{logread}}} paranccsal járhatunk utána, hogy valójában mi is történik.


=
IPv6 beállítása a LAN-on =

Ebben a pontban feltételezzük, hogy rendelkezünk egy működő IPv6 kapcsolattal, és minden probléma nélkül meg tudjuk pingelni a ping6 programmal pl. a {{{www.kame.net}}}-et. Ez egy olyan oldal, amit ha IPv6-on keresztül tekintünk meg, akkor mást látunk, mint ha IPv4-en keresztül érjük el. Innen tudhatjuk, hogy IPv6 kapcsolatunk él.

Ha SixXS vagy más tunnelbroker használunk, akkor csak a {{{::1}}} (a Point of Presence) és a {{{::2}}} (a saját végpontunk) használható, a többi nem kerül forgalomirányításra. Emiatt előbb létre kell hozni és engedélyezni egy alhálózatot, mielőtt használatba vennénk a route advisertisment daemon-t. Egészen pontosan arról van szó, hogy az tunnelbroker szolgáltatól kérni kell egy alhálózatot és azt engedélyeztetni kell.

Tegyük
fel, hogy van egy {{{2001:db8:0:f101::/64}}}-es alhálózatunk. A következő sorokat írjuk be a {{{/etc/radvd.conf}}} fájlba, mellyel engedélyezzük alhálózatunk meghirdetését:

{{{
Line 306: Line 339:
 Ezek után a 2001:db8:0:f101::1 címet hozzákötjük a br0-hoz az alábbi paranccsal:
 ip -6 addr add 2001:db8:0:f101::1/64 dev br0
Ha azt szeretnénk, hogy ez a változtatás a következő indításkor is megmaradjon, adjuk a parancsot hozzá a '/etc/init.d/S40network' szkripthez. A /64-es alhálózatunk br0 fele történőtovábbítása automatikusan végrehajtódik az S51radvd-ben.
 A '/etc/init.d/S51radvd' fájlba be kell tenni egy route-ot, ami biztosítja a helyes működést akkor is ha az aiccu-t használjuk:
 ip -6 route add 2001:db8:0:f101::1/64 dev br0
}}}
Ezek után a {{{2001:db8:0:f101::1}}} címet hozzákötjük a {{{br0}}}-hoz az alábbi paranccsal:
{{{
ip -6 addr add 2001:db8:0:f101::1/64 dev br0
}}}
Ha azt szeretnénk, hogy ez a változtatás a következő indításkor is megmaradjon, adjuk a parancsot hozzá a {{{/etc/init.d/S40network}}} szkripthez. A /64-es alhálózatunk br0 fele történőtovábbítása automatikusan végrehajtódik az S51radvd-ben.

A {{{/etc/init.d/S51radvd}}} fájlba be kell tenni egy route-ot, ami biztosítja a helyes működést akkor is ha az aiccu-t használjuk:
{{{
ip -6 route add 2001:db8:0:f101::1/64 dev br0
}}}
Line 312: Line 352:
 /etc/init.d/S51radvd start {{{
/etc/init.d/S51radvd start
}}}
Line 315: Line 357:
IPv6 használata WindowsXP renszeren

 Lehetőség van arra is, hogy Windows XP-nket IPv6 használatára állítsuk be. Ez a dokumentum elsősorban az OpenWrt beállításáról szól, így ezt itt most nem tárgyaljuk. További információ a http://wiki.openwrt.org/ címen olvasható a HowTo részben az IPv6 cím alatt.

Debugolási tanácsok

 Néhány tanács olvasható az OpenWrt honlapján. A következő parancsokat ajánlják:
 ip addr show
 ip route show
 ip -6 route show

Kérdések

 Kérdés
 Hogyan lehet egy IPv6 6to4 címet hirdetni abban az esetben, ha a cím alapjául szolgáló IPv4 cím DHCP-vel kerül kiosztálsra. Pontosabban: hogyan automatizálható az IPv6 cím megújítása, ha a DHCP-vel osztott IPv4 cím változik?
 Válasz
 A radvd.conf fájlt a következőre kell alakítani:

        prefix 0:0:0:f101::/48
== LAN konfiguráció változó IPv4 címek esetében ==
Ez akkor szokott előfordul, ha pppoe vagg dhcp-vel állandóan változó IPv4 címünk van.
A {{{radvd.conf}}} fájlt a következőre kell alakítani:
{{{
prefix 0:0:0:f101::/48
Line 343: Line 371:

A prefix első 3 részét 0-ra kell átírni, azaz a 2001:db8:0:f101::/48-ból 0:0:0:f101::/48 lesz. Ezután a Base6to4Interface ppp0; sort kell beilleszteni, ahol a ppp0 a WAN interfész neve. Az AdvValidLifetime és AdvPreferredLifetime értékét egy kis számra kell állítani azért, hogy az IPv4 cím változása után rövid idővel frissüljön a hirdetett IPv6 cím.
 Kérdés
 Milyen kapcsolatban áll az IPv4 és IPv6 cím?
 Válasz
 A kapcsolat a második IPv6 oldalon leírtaknak felel meg. Röviden: az IPv4 cím minden egyes darabját hexadecimális számmá konvertálják. Ezután a 6to4 cím alakja: 2002:hex1hex2:hex3hex4:0001::1. Ahol hex1,..,hex4 az átalakított IPv4 cím darabjai. A 2002 a 6to4 prefix, a végén egy 80 bitnyi címtartomány van felhasználásra.

Linkek

 IPv6 - http://en.wikipedia.org/wiki/Ipv6
 IPv6 - http://ezine.daemonnews.org/200101/6to4.html
 Hurricane Electric - http://tunnelbroker.net/
 DD-WRT IPv6 - http://www.dd-wrt.com/wiki/index.php/IPv6
 OpenWrt - http://wiki.openwrt.org/IPv6_howto
 OpenWrt - http://www.vsix.net/other/guide/openwrt/part3/openwrt_ipv6_network_setup.htm
 OpenWrt - http://www.vsix.net/other/guide/openwrt/part2/openwrt_ipv4_network_setup.htm
}}}

A prefix első 3 részét 0-ra kell átírni, azaz a {{{2001:db8:0:f101::/48}}}-ból {{{0:0:0:f101::/48}}} lesz. Ezután a {{{Base6to4Interface ppp0;}}} sort kell beilleszteni, ahol a {{{ppp0}}} a WAN interfész neve. Az {{{AdvValidLifetime}}} és {{{AdvPreferredLifetime}}} értékét egy kis számra kell állítani azért, hogy az IPv4 cím változása után rövid idővel frissüljön a hirdetett IPv6 cím.

= Debugolási tanácsok =

 Néhány tanács olvasható az [http://wiki.openwrt.org/IPv6_howto OpenWrt] honlapján. A következő parancsok ajánlottak:
{{{
ip addr show
ip route show
ip -6 route show
}}}


= Linkek =
 * [http://www.757.org/~joat/wiki/index.php/IPv6_on_the_WRT54G_via_OpenWRT IPv6 on OpenWrt with Hurricane Electric]
 * [http://www.join.uni-muenster.de/TestTools/IPv6_Verbindungstests.php JOIN IPv6 Test Page (ping, traceroute, tracepath)]
 * [http://www.litech.org/radvd/ Route Advertising Daemon Homepage]
 * [http://www.bieringer.de/linux/IPv6/index.html Peter Bieringer's IPv6 HOWTO]
 * [http://www.dd-wrt.com/wiki/index.php/IPv6 DD-WRT IPv6 ]
 * [http://ezine.daemonnews.org/200101/6to4.html *BSD 6to4 leiras]
 * [http://wiki.openwrt.org/IPv6_howto IPv6 openwrt howto]
 * [http://www.vsix.net/other/guide/openwrt/part1/openwrt_ipv6_network_setup.htm openwrt setup 1]
 * [http://www.vsix.net/other/guide/openwrt/part2/openwrt_ipv6_network_setup.htm openwrt setup 2]
 * [http://www.vsix.net/other/guide/openwrt/part3/openwrt_ipv6_network_setup.htm openwrt setup 3]

TableOfContents

IPv6 installálása OpenWrt routerre

Melyik OpenWrt verzió használható?

Az OpenWrt White Russian RC5 és RC6-os verziója támogatja az itt leírt beállításokat.

Milyen RFC-ket támogat az OpenWrt IPv6?

  • Szokásos IPv6 funkcionalitás Linux
  • plusz:
    • Configured tunnels RFC 2893
    • 6to4 RFC 3056

Milyen csomagokat kell telepíteni?

1.kötelező csomagok

Ezeket mindenképpen fel kell telepíteni ahhoz, hogy a routeren IPv6-ot használhassunk

  1. kernel modul ipv6 támogatáshoz:
    •   ipkg install kmod-ipv6
  2. IPv6 routing szoftver - Az interfészek és routing táblák konfigurálásához fel kell telepítenünk az új iputils csomagot, valamint a route advertising daemon is kell, ahhoz, hogy az alhálózat felé tudjunk IPv6 Router Advertisment üzeneteket tudjunk küldeni.
    •   ipkg install radvd
        ipkg install ip

2.opcionális csomagok

  1. IPv6 tűzfal használatához a kmod-ip6tables csomagot kell telepíteni.
    •   ipkg install kmod-ip6tables
  2. IPv6 tűzfal konfigurálásához az ip6tables csomagot kell telepíteni.
    •   ipkg install ip6tables

IPv6 beállítása OpenWrt-t futtató routeren

  1. Az IPv6 modul indítása automatikusan megtörténik a router újraindításakor a /etc/modules.d/20-ipv6 által. Újraindítás nélkül is lehetséges a kernel modul kernelbe töltése az 'insmod ipv6' paranccsal. Ezek után a router már IPv6 képes. Ezt ellenőrizhetjük az ifconfig paranccsal, mellyel kideríthetjük, hogy a ::1/128-as IPv6 cím konfigurálva lett loopback interfészre.

     # ifconfig lo
     lo        Link encap:Local Loopback
               inet addr:127.0.0.1  Mask:255.0.0.0
               inet6 addr: ::1/128 Scope:Host
               UP LOOPBACK RUNNING  MTU:16436  Metric:1
               RX packets:116 errors:0 dropped:0 overruns:0 frame:0
               TX packets:116 errors:0 dropped:0 overruns:0 carrier:0
               collisions:0 txqueuelen:0
               RX bytes:10395 (10.1 KiB)  TX bytes:10395 (10.1 KiB)
  2. Opcionálisan be lehet tölteni a tűzfal moduljait is:
     insmod ip6_tables
     insmod ip6_table_filter

    Az indításkori betöltéshez a /etc/modules.d/20-ipv6-hoz vagy /etc/modules-hoz a következőt adjuk hozzá:

     ip6_tables
     ip6_table_filter

    A betöltés megtörténtének ellenőrzéséhez az ip6_tables -L parancs használható

     # ip6tables -L
     Chain INPUT (policy ACCEPT)
     target     prot opt source               destination
    
     Chain FORWARD (policy ACCEPT)
     target     prot opt source               destination
    
     Chain OUTPUT (policy ACCEPT)
     target     prot opt source               destination
  3. A tűzfal beállításainál a szkripthez hozzá kell adni a következőket annak érdekében, hogy a tűzfal átengedje az IPv4-be ágyazott IPv6 csomagokat:
     iptables -A INPUT -p 41 -i $WAN -j ACCEPT
    Ha a router egyben hálózati címfordító is (NAT), akkor a következő sorokat is hozzá kell adni, hogy a NAT táblába ne kerüljön bele a 41-es protokoll (ami az IPv6 az IPv4-ben tunnel protokollja). Ha ezt nem tesszük, akkor az IPv6 tunnel egy idő múlva leáll ha nincsen ipv6-os forgalom.
     iptables -t nat -D POSTROUTING -o $WAN -j MASQUERADE
     iptables -t nat -A POSTROUTING --protocol ! 41 -o $WAN -j MASQUERADE
    Ezt a megfelelő helyre kell írni a tűzfal szkriptjében. Rögtön az előző parancs elé, vagy után.

IPv6 Internetkapcsolat beállítása

Két lehetőség közül lehet választani, az egyik a 6to4 (bárhol működik, ahol az Internet szolgáltató publikus IPv6 címeket oszt), a másik lehetőség akkor áll fenn, ha egy IPv6-al rendelkező pont közelében vagyunk ahol tudnak nekünk IPv6 tunnelt biztosítani. Ez lehet egy {http://www.sixxs.net SixXS} IPv6 tunnel is.

6to4 kapcsolat beállítása közvetlen Internetkapcsolat esetén

Ez a lehetőség akkor működik, ha a router WAN portja egy DHCP-vel vagy statikusan osztott Ipv4 címet kap. A 6to4 tunel bootols'kori automatikus indításához a következő szkriptet az /etc/init.d/S42tun6to4 fájlba kell írni:

# 6to4 tunnel

# a publikus ipv4 cím lekerdezese
ipv4=`ip -4 addr | awk '/^[0-9]+[:] vlan1[:]/ {l=NR+1} /inet (([0-9]{1,3}\.){3}[0-9]{1,3})\// {if (NR == l) split($2,a,"/")} END {print a[1]}'`

# ha az ipv4 cím nem valtozik azaz fix, akkor az „ipv4=82.54.194.11” is irhato

# az ipv6 prefixet az ipv4 cimbol hatarozzuk meg
ipv6prefix=`echo $ipv4 | awk -F. '{ printf "2002:%02x%02x:%02x%02x", $1, $2, $3, $4 }'`

# a lokalis halozat, barmilyen 4 jegyu szam
ipv6subnet=1234

# A 6to 4 kozvetito router, csak nehany van itt felsorolva, ajanlott az anycast hasznalata, amennyiben lehetseges
# lasd: http://www.kfu.com/~nsayer/6to4/#list vagy google

# anycast:
relay6to4=192.88.99.1

# uni-leipzig.de:
#relay6to4=139.18.25.33

# 6to4.ipv6.bt.com
#relay6to4=194.73.82.244

# microsoft
#relay6to4=131.107.33.60

# japan kddilab.6to4.jp
#relay6to4=192.26.91.178


case "$1" in
  start)

    echo "Creating tunnel interface..."
    ip tunnel add tun6to4 mode sit ttl 64 remote any local $ipv4

    echo "Setting tunnel interface up..."
    ip link set dev tun6to4 up

    echo "Assigning ${ipv6prefix}::1/16 address to tunnel interface..."
    ip -6 addr add ${ipv6prefix}::1/16 dev tun6to4

    echo "Adding route to IPv6 internet on tunnel interface via relay..."
    ip -6 route add 2000::/3 via ::${relay6to4} dev tun6to4 metric 1

    # the following lines do not seem to be necessary
    # a kovetkezo sorok nem szuksegesek
    #ip -6 addr add ${ipv6prefix}:${ipv6subnet}::3/64 dev vlan1
    #ip -6 route del ${ipv6prefix}:${ipv6subnet}::/64 dev vlan1

    echo "Assigning ${ipv6prefix}:${ipv6subnet}::1/64 address to br0 (local lan interface)..."
    ip -6 addr add ${ipv6prefix}:${ipv6subnet}::1/64 dev br0

    echo "Done."


    ;;
  stop)

    #echo "Removing WAN (external) interface IPv6 address..."
    #ip -6 addr del ${ipv6prefix}:${ipv6subnet}::3/64 dev vlan1

    echo "Removing br0 (internal lan) interface IPv6 address..."
    ip -6 addr del ${ipv6prefix}:${ipv6subnet}::1/64 dev br0

    echo "Removing routes to 6to4 tunnel interface..."
    ip -6 route flush dev tun6to4

    echo "Setting tunnel interface down..."
    ip link set dev tun6to4 down

    echo "Removing tunnel interface..."
    ip tunnel del tun6to4

    echo "Done."

    ;;
  restart)

    echo "=== 1. Stopping ==="
    /etc/init.d/S42tun6to4 stop
    echo "=== 2. Starting ==="
    /etc/init.d/S42tun6to4 start
    echo "=== 3. Done ==="
    ;;
  *)
    echo "Usage: /etc/init.d/S42tun6to4 {start|stop|restart}"
    ;;

esac

6to4 kapcsolat beállítása PPPoE kapcsolat esetén

Az itt leírt beállításokat akkor kell alkalmazni, ha az Internetszolgáltatóhoz PPP-n (általában PPPoE-n) keresztül kapcsolódunk. Amikor a PPP interfész működésbe lép, a PPP deamon meghívja a /etc/ppp/ip-up szkriptet, amikor leáll az interfész, automatikusan hívja a /etc/ppp/ip-down szkriptet. Ezek a szkriptek a '/etc/hotplug.d/iface/*'-beli szkripteket hívják meg a megfelelő paraméterekkel és környezeti változokkal. Az IPv6 támogatásához a /etc/hotplug.d/iface=10-ipv6 szkriptet kell írnunk a következő módon:

. /etc/functions.sh
NAME=ipv6
COMMAND=/usr/sbin/ip
[ "$ACTION" = "ifup" -a "$INTERFACE" = "wan" ] && {
        [ -x $COMMAND ] && {
                IFNAME=$(nvram get ${INTERFACE}_ifname)
                IPV4=$(ip addr show $IFNAME | grep inet | cut -f6 -d' ')
                IPV6PREFIX=$(echo $IPV4 | awk -F. '{ printf "2002:%02x%02x:%02x%02x", $1, $2, $3, $4 }')
                ip tunnel add tun6to4 mode sit ttl 64 remote any local $IPV4
                ip link set dev tun6to4 up
                ip -6 addr add ${IPV6PREFIX}::1/16 dev tun6to4
                ip -6 route add 2000::/3 via ::192.88.99.1 dev tun6to4 metric 1
                ip -6 addr add ${IPV6PREFIX}:5678::1/64 dev br0
        } &
}

[ "$ACTION" = "ifdown" -a "$INTERFACE" = "wan" ] && {
        [ -x $COMMAND ] && {
                IFNAME=$(nvram get ${INTERFACE}_ifname)
                IPV4=$(ip addr show $IFNAME | grep inet | cut -f6 -d' ')
                IPV6PREFIX=$(echo $IPV4 | awk -F. '{ printf "2002:%02x%02x:%02x%02x", $1, $2, $3, $4 }')
                ip -6 addr del ${IPV6PREFIX}:5678::1/64 dev br0
                ip -6 route flush dev tun6to4
                ip link set dev tun6to4 down
                ip tunnel del tun6to4
        } &
}

Figyelem! A radvd.conf fájlban prefixként 0:0:0:5678::/64-et kell használni (azaz azt a prefixeket amit a scriptben definiáltunk).

A 6to4 protokollról

A 6to4 egy olyan éttérési módszer, ami az IPv6-os csomagokat automatikusan IPv4-be ágyazza, és a csomagok így továbbítódnak. A protokollal IPv6-os hálózatok (szigetek) köthetőek össze az IPv4-es hálózatban. Egy nagy problémája a 6to4 megoldásnak, hogy a 6to4 prefix-szel rendelkező és "normális" IPv6 prefix-szel rendelkező hálózatok között az átjárást egy 6to4 relay-el kell megoldani. Bővebb információ: a http://www.kfu.com/~nsayer/6to4/ címen olvasható angolul. Az előző címen olvasható egy fontos funkció az anycast relay, mellyel egyszerűen lehet találni relay agent-et. Az RFC3068-ban szerepel egy anycast IPv6 cím, mely segítségével megtalálható a legközelebbi relay agent. A legközelebbi relay agent használatával a jobb teljesítmény érhető el. További információk a fenti oldalon olvashatóak.

A fenti 6to4 konfiguációk esetén alkalmazott 192.88.99.1 cím is egy olyan cím, amely a legközelebbi 6to4 relay routerhez irányít.

Milyen kapcsolatban áll az IPv4 és IPv6 cím?

Az IPv4 cím minden egyes darabját hexadecimális számmá konvertálják. Ezután a 6to4 cím alakja: 2002:hex1hex2:hex3hex4:0001::1. Ahol hex1,..,hex4 az átalakított IPv4 cím darabjai. A 2002 a 6to4 prefix, a végén egy 16+64 bitnyi címtartomány van helyi felhasználásra.

Internetkapcsolat statikus alagút segítségével

Megjegyzés: ennek a szkriptnek bármely tunnelbrokerrel működnie kell. Jelen esetben a SixXs tunnelbrokert használjuk.

LOCALIP=Your IPv4 Endpoint
POPIP=POP IPv4 Endpoint
LOCTUN=Your IPv6 Endpoint
REMTUN=SixXS IPv6 Endpoint

case $1 in
start)
        echo -n "Starting SixXS.Net IPv6 tunnel: "
        ip tunnel add sixxs mode sit local $LOCALIP remote $POPIP
        ip link set sixxs up
        ip link set mtu 1280 dev sixxs
        ip tunnel change sixxs ttl 64
        ip -6 addr add $LOCTUN/64 dev sixxs
        ip -6 ro add default via $REMTUN dev sixxs
        echo "Done."
        ;;
stop)
        echo -n "Stopping SixXS.Net IPv6 tunnel: "
        ip link set sixxs down
        ip tunnel del sixxs
        echo "Done."
        ;;
restart)
        $0 stop
        $0 start
        ;;
*)
        echo "Usage: $0 {start | stop | restart}"
        ;;
esac
exit 0

A helyes műdödés érdekében az ip tunnel add sixxs sorhoz hozzá kell adni a ttl 64 szöveget. Enélkül is működik a kapcsolat, de a traceroute-ok lassúak. A traceroute6 parancs ezenkívül minden egyes közbülső hop-nál elvétette a „(* * *)”-ot ???. Az itt közölt beállításokkal minden rendben működik.

Internetkapcsolat dinamikus SixXS.net alagút segítségével

Dinamikus tunnel használatához fel kell telepítenünk az aiccu csomagot az ipkg install aiccu parancs segítségével. Ezután a /etc/aiccu.conf fájlt kell szerkesztenünk. A konfigurációs fájlba be kell illesztenünk a login nevünket és jelszavunkat, konfigurálni kell az ipv4_interface-t (általában vlan1). Ezenkívül kommentezzük ki a „tunnel_id” sort, amennyiben csak egyetlen tunnel-el dolgozunk.

# AICCU konfiguracio

# login informacio
username <your nichandle/username>
password <your password>

# hasznalt interfeszek nevei
ipv4_interface vlan1
ipv6_interface sixxs

# a hasznalt tunnel_id
# (csak akkor szukseges, ha tobb tunnel_id van a listaban)
tunnel_id <your tunnel id>

# jelenitse-e meg az informaciokat a kepernyon
verbose false

# daemonként fusson-e
daemonize true

# automatikusan induljon-e
automatic true

A SixXS dokumentációjában az szerepel, hogy a gépünket (routerünket) szinkronizáljuk valamely NTP (Network Time Protocol) szerverhez, mert ha az időbélyegek közötti különbség 102 másodperc fölé emelkedik a heartbeat eldobódik. Arra is figyelmeztet, hogy a megfelelő időzóna beállítsása szükséges. A sziknronizálás megoldható egy ntp kliens feltelepítésével (indításkori szinkronizáció). Az idő elcsúszás karbantartásához openntpd-t telepíthetünk.

Ezek után elindíthatjuk a sixxs klienst:

aiccu start

Amennyiben ez nem működne, úgy a logread paranccsal járhatunk utána, hogy valójában mi is történik.

IPv6 beállítása a LAN-on

Ebben a pontban feltételezzük, hogy rendelkezünk egy működő IPv6 kapcsolattal, és minden probléma nélkül meg tudjuk pingelni a ping6 programmal pl. a www.kame.net-et. Ez egy olyan oldal, amit ha IPv6-on keresztül tekintünk meg, akkor mást látunk, mint ha IPv4-en keresztül érjük el. Innen tudhatjuk, hogy IPv6 kapcsolatunk él.

Ha SixXS vagy más tunnelbroker használunk, akkor csak a ::1 (a Point of Presence) és a ::2 (a saját végpontunk) használható, a többi nem kerül forgalomirányításra. Emiatt előbb létre kell hozni és engedélyezni egy alhálózatot, mielőtt használatba vennénk a route advisertisment daemon-t. Egészen pontosan arról van szó, hogy az tunnelbroker szolgáltatónál kérni kell egy alhálózatot és azt engedélyeztetni kell.

Tegyük fel, hogy van egy 2001:db8:0:f101::/64-es alhálózatunk. A következő sorokat írjuk be a /etc/radvd.conf fájlba, mellyel engedélyezzük alhálózatunk meghirdetését:

# For more examples, see the radvd documentation.
# további informaciok a radvd dokumentaciojaban talalhatoak

interface br0
{
        AdvSendAdvert on;

        prefix 2001:db8:0:f101::/64
        {
                AdvOnLink on;
                AdvAutonomous on;
        };

};

Ezek után a 2001:db8:0:f101::1 címet hozzákötjük a br0-hoz az alábbi paranccsal:

ip -6 addr add 2001:db8:0:f101::1/64 dev br0

Ha azt szeretnénk, hogy ez a változtatás a következő indításkor is megmaradjon, adjuk a parancsot hozzá a /etc/init.d/S40network szkripthez. A /64-es alhálózatunk br0 fele történőtovábbítása automatikusan végrehajtódik az S51radvd-ben.

A /etc/init.d/S51radvd fájlba be kell tenni egy route-ot, ami biztosítja a helyes működést akkor is ha az aiccu-t használjuk:

ip -6 route add 2001:db8:0:f101::1/64 dev br0

Ha ezeket végrehajtottuk, akkor készen állunk arra, hogy a következő paranccsal elindítsuk az route advertising daemon-t:

/etc/init.d/S51radvd start

A daemon tevékenységét a radvdump programmal ellenőrizhetjük.

LAN konfiguráció változó IPv4 címek esetében

Ez akkor szokott előfordul, ha pppoe vagg dhcp-vel állandóan változó IPv4 címünk van. A radvd.conf fájlt a következőre kell alakítani:

prefix 0:0:0:f101::/48
        {
                AdvOnLink on;
                AdvAutonomous on;
                Base6to4Interface ppp0;

                # Very short lifetimes for dynamic addresses
                AdvValidLifetime 300;
                AdvPreferredLifetime 120;
        };

A prefix első 3 részét 0-ra kell átírni, azaz a 2001:db8:0:f101::/48-ból 0:0:0:f101::/48 lesz. Ezután a Base6to4Interface ppp0; sort kell beilleszteni, ahol a ppp0 a WAN interfész neve. Az AdvValidLifetime és AdvPreferredLifetime értékét egy kis számra kell állítani azért, hogy az IPv4 cím változása után rövid idővel frissüljön a hirdetett IPv6 cím.

Debugolási tanácsok

ip addr show
ip route show
ip -6 route show

Linkek

Campus6: IPv6router_openwrt (last edited 2011-11-25 13:57:40 by mohacsi)