W naszym poprzednim artykule pokazaliśmy jak podłączyć się do sieci IPv6 zestawiając tunel z Hurricane Electric. Konfigurację przeprowadziliśmy na routerze Cisco, teraz rozszerzymy nasze środowisko o 2 kolejne hosty (Linux i OpenBSD). Komputery podpięte są do routera od strony LAN’u. Do każdego z nich przypiszemy globalny adres IPv6 oraz zapewnimy im łączność z siecią IPv6. Schemat naszej sieci przedstawia poniższy rysunek:
Konfiguracja routera Cisco
Konfigurację zaczniemy od routera. Do interfejsu LAN (FastEthernet 0/1) przypiszemy adres IPv6, który będzie następnie domyślną bramą dla naszych hostów. Tak jak pisaliśmy poprzednio, Hurricane Electric oddaje do naszej dyspozycji podsieć IPv6 o prefiksie /64 (Routed /64 w panelu). W naszym przykładzie będzie to sieć 2001:aaa:abcd:123::/64. Do routera przypiszemy adres 2001:aaa:abcd:123::1
configure terminal interface FastEthernet 0/1 description LAN ipv6 address 2001:aaa:abcd:123::1
Adres IPv6 można zapisać w formie skompresowanej, jeżeli występują w nim wartości zerowe. 128 bitowy adres IPv6 składa się z serii 8 pól szesnastkowych oddzielonych dwukropkami. W każdym z tych pól zapisane są 4 znaki heksadecymalne (wartości od 0 do F). Jeżeli kolejne pola składają się z samych zer, możemy je zapisać jako „::”. Jednak dopuszczalny jest tylko jeden znak „::” w adresie IPv6. Ponadto możemy pominąć początkowe zera w każdym z pól, ale przynajmniej jedno musi zostać. Poniższa tabela przedstawia kilka przykładów:
Adres IPv6 | Adres IPv6 w formie skompresowanej |
---|---|
0000:0000:0000:0000:0000:0000:0000:0000 | :: |
0000:0000:0000:0000:0000:0000:0000:000A | ::000A lub ::A |
FE80:0000:0000:00F0:0DFF:0000:0000:5FAA | FE80::F0:DFF:0:0:5FAA |
Adres 2001:aaa:abcd:123::1 routera w formie nieskompresowanej to 2001:0aaa:abcd:0123:0000:0000:000:0001. Aby umożliwić przekazywanie pakietów IPv6 pomiędzy interfejsami routera, musimy włączyć ipv6 unicast-routing
:
configure terminal ipv6 unicast-routing
Konfiguracja IPv6 w Linuksie
Do obsługi IPv6 wymagany jest moduł ipv6
:
modinfo ipv6 filename: /lib/modules/2.6.32-220.4.2.el6.x86_64/kernel/net/ipv6/ipv6.ko alias: net-pf-10 license: GPL description: IPv6 protocol stack for Linux
lub jeżeli obsługa IPv6 jest wkompilowana w jądro, wtedy możemy sprawdzić czy istnieje plik /proc/net/if_inet6
test -f /proc/net/if_inet6 && echo "System obsługuje IPv6"
Do systemu przypiszemy adres 2001:aaa:abcd:123::AAAA
[root@linux ~]# ip addr add 2001:aaa:abcd:123::AAAA dev eth0 [root@linux ~]# ip -6 add sh dev eth0 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2001:aaa:abcd:123::AAAA/128 scope global valid_lft forever preferred_lft forever inet6 fe80::beae:c5ff:fead:6d29/64 scope link valid_lft forever preferred_lft forever
Adres fe80::beae:c5ff:fead:6d29 to adres lokalny łącza (link-local address). Jest on używany tylko pomiędzy węzłami podłączonymi do tego samego łącza lokalnego i stosowany przez np. protokół NDP (Neighbor Discovery Protocol). Po włączeniu obsługi IPv6, adres ten jest automatycznie przypisywany do interfejsu.
Pierwszy test to ping do routera Cisco używając polecenia ping6
[root@linux ~]# ping6 2001:aaa:abcd:123::1 -c 3 PING 2001:aaa:abcd:123::1 (2001:aaa:abcd:123::1) 56 data bytes 64 bytes from 2001:aaa:abcd:123::1: icmp_seq=1 ttl=64 time=2.01 ms 64 bytes from 2001:aaa:abcd:123::1: icmp_seq=2 ttl=64 time=5.20 ms 64 bytes from 2001:aaa:abcd:123::1: icmp_seq=3 ttl=64 time=2.13 ms --- 2001:aaa:abcd:123::1 ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2005ms rtt min/avg/max/mdev = 2.013/3.117/5.206/1.478 ms
Co ciekawe nie musimy dodawać domyślnej bramy, ponieważ jej rolę może pełnić adres lokalny łącza routera Cisco, którego nasz host IPv6 nauczył się automatycznie:
[root@linux ~]# ip -6 route show default default via fe80::214:1cff:fee5:fd1d dev eth0 proto kernel metric 1024 expires 1727sec mtu 1500 advmss 1440 hoplimit 64
Adres fe80::214:1cff:fee5:fd1d to właśnie adres lokalny łącza naszego routera:
rt-cisco#show ipv6 interface brief FastEthernet0/1 [up/up] FE80::214:1CFF:FEE5:FD1D 2001:AAA:ABCD:123::1
Upewnijmy się jeszcze pingując Google:
[root@linux ~]# ping6 google.com -n -c 1 PING google.com(2a00:1450:4001:c02::65) 56 data bytes 64 bytes from 2a00:1450:4001:c02::65: icmp_seq=1 ttl=57 time=34.0 ms --- google.com ping statistics --- 1 packets transmitted, 1 received, 0% packet loss, time 34ms rtt min/avg/max/mdev = 34.045/34.045/34.045/0.000 ms
Możemy też przetestować nasz stos IPv6 korzystając np. ze strony ipv6test.google.com:
Konfiguracja IPv6 w OpenBSD
W systemie OpenBSD obsługa IPv6 jest automatycznie włączona. Do interfejsu em0
przypiszemy adres 2001:aaa:abcd:123::bbbb
root@obsd:~>ifconfig em0 inet6 alias 2001:aaa:abcd:123::bbbb prefixlen 64 root@obsd:~>ifconfig em0 inet6 em0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 priority: 0 groups: egress media: Ethernet autoselect (1000baseT full-duplex) status: active inet6 fe80::a00:27ff:fe9a:4404%em0 prefixlen 64 scopeid 0x1 inet6 2001:aaa:abcd:123::bbbb prefixlen 64
Adres lokalny łącza fe80::a00:27ff:fe9a:4404 jest przypisywany automatycznie przez system. Musimy jeszcze dodać bramę domyślną, wskazującą na adres IPv6 interfejsu FastEthernet 0/1 naszego routera:
root@obsd:~>route add -inet6 default 2001:aaa:abcd:123::1 add net default: gateway 2001:aaa:abcd:123::1
Podobnie jak poprzednim razem, przetestujemy połączenie pingując stronę Google:
root@obsd:~>ping6 -c3 -n google.com PING6(56=40+8+8 bytes) 2001:aaa:abcd:123::bbbb --> 2a00:1450:4001:c02::66 16 bytes from 2a00:1450:4001:c02::66, icmp_seq=0 hlim=57 time=36.432 ms 16 bytes from 2a00:1450:4001:c02::66, icmp_seq=1 hlim=57 time=36.265 ms 16 bytes from 2a00:1450:4001:c02::66, icmp_seq=2 hlim=57 time=38.404 ms --- google.com ping6 statistics --- 3 packets transmitted, 3 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 36.265/37.034/38.404/0.971 ms
Ping przeszedł co oznacza, że stos IPv6 działa.
W kolejnym artykule opiszemy jak dodać rekordy IPv6 do naszej domeny w DNS oraz włączymy obsługę IPv6 w Apache. Zapraszamy!
0 Komentarze.