IPv6 – darmowy tunel od Hurricane Electric (część 2)

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:

IPv6 tunel od HE schemta

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:

ipv6 test

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!

Zostaw komentarz


Podpowiedź - możesz użyć tych HTML tagów i atrybutów:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Obraz CAPTCHY

*