前提条件はIPv6ノードがネットワークに接続されていることです。このサイトの情報は以下の環境で動作確認を行いました。
最初に、ルータの設定を行います、まず、現在のIPv6アドレスの状態を確認します。
# show ipv6 address LAN1 scope-id 1 [up] Received: 11 packets 1112 octets Transmitted: 11 packets 1104 octets link-local fe80::2a0:deff:fe09:352a/64 link-local ff02::1/64 link-local ff02::2/64 link-local ff02::1:ff09:352a/64 PP[01] scope-id 2 [down] Received: 0 packet 0 octet Transmitted: 0 packet 0 octet link-local ff02::1/64 link-local ff02::2/64 #
次に、LAN1インターフェースにIPv6アドレスを設定します。この例では、LAN1インターフェースにグローバルアドレスの3ffe:5ff:100:aa01::1を設定します。
# ipv6 lan address 3ffe:5ff:100:aa01::1 # show ipv6 address LAN1 scope-id 1 [up] Received: 63 packets 4856 octets Transmitted: 48 packets 3960 octetsglobal 3ffe:5ff:100:aa01::1/64link-local fe80::2a0:deff:fe09:352a/64 link-local ff02::1/64 link-local ff02::2/64link-local ff02::1:ff00:1/64link-local ff02::1:ff09:352a/64 PP[01] scope-id 2 [down] Received: 0 packet 0 octet Transmitted: 0 packet 0 octet link-local ff02::1/64 link-local ff02::2/64 #
次に、Plug and Playのために必要となる、RA(Router Advertisement)の送信の設定をします。
# ipv6 prefix 1 3ffe:5ff:100:aa01::1 # ipv6 lan rtadv send 1 #
ルータの設定は以上です。
ff02::1はリンクローカル・オールノードマルチキャストアドレスです。インターフェースとして指定されているed1と同一リンクにあるノードにICMPv6を送信します。
% ping6 ff02::1%ed1 PING6(56=40+8+8 bytes) fe80::2a0:b0ff:fe21:9fed%ed1 --> ff02::1%ed1 16 bytes from fe80::2a0:b0ff:fe21:9fed%ed1, icmp_seq=0 hlim=64 time=0.378 ms 16 bytes from fe80::210:b5ff:fe02:dac7%ed1, icmp_seq=0 hlim=64 time=1.713 ms(DUP!) 16 bytes from fe80::2a0:deff:fe09:352a%ed1, icmp_seq=0 hlim=64 time=2.842 ms(DUP!) 16 bytes from fe80::2a0:b0ff:fe21:9fed%ed1, icmp_seq=1 hlim=64 time=0.368 ms 16 bytes from fe80::210:b5ff:fe02:dac7%ed1, icmp_seq=1 hlim=64 time=1.702 ms(DUP!) 16 bytes from fe80::2a0:deff:fe09:352a%ed1, icmp_seq=1 hlim=64 time=2.665 ms(DUP!) ^C --- ff02::1%ed1 ping6 statistics --- 2 packets transmitted, 2 packets received, +4 duplicates, 0% packet loss round-trip min/avg/max = 0.368/1.611/2.842 ms %
そこで、応答のあったそれぞれのIPv6アドレスにICMPv6を送信してみます。
% ping6 fe80::2a0:b0ff:fe21:9fed%ed1 PING6(56=40+8+8 bytes) fe80::2a0:b0ff:fe21:9fed%ed1 --> fe80::2a0:b0ff:fe21:9fed%ed1 16 bytes from fe80::2a0:b0ff:fe21:9fed%ed1, icmp_seq=0 hlim=64 time=0.267 ms 16 bytes from fe80::2a0:b0ff:fe21:9fed%ed1, icmp_seq=1 hlim=64 time=0.282 ms ^C --- fe80::2a0:b0ff:fe21:9fed%ed1 ping6 statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.267/0.274/0.282 ms %
% ping6 fe80::210:b5ff:fe02:dac7%ed1 PING6(56=40+8+8 bytes) fe80::2a0:b0ff:fe21:9fed%ed1 --> fe80::210:b5ff:fe02:dac7%ed1 16 bytes from fe80::210:b5ff:fe02:dac7%ed1, icmp_seq=0 hlim=64 time=0.706 ms 16 bytes from fe80::210:b5ff:fe02:dac7%ed1, icmp_seq=1 hlim=64 time=0.732 ms ^C --- fe80::210:b5ff:fe02:dac7%ed1 ping6 statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 0.706/0.719/0.732 ms %
% ping6 fe80::2a0:deff:fe09:352a%ed1 PING6(56=40+8+8 bytes) fe80::2a0:b0ff:fe21:9fed%ed1 --> fe80::2a0:deff:fe09:352a%ed1 16 bytes from fe80::2a0:deff:fe09:352a%ed1, icmp_seq=0 hlim=64 time=1.237 ms 16 bytes from fe80::2a0:deff:fe09:352a%ed1, icmp_seq=1 hlim=64 time=1.227 ms ^C --- fe80::2a0:deff:fe09:352a%ed1 ping6 statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 1.227/1.232/1.237 ms %
次に、ルータにRS(Router Solicitation Message)を送出し、Plug and PlayによりIPv6アドレスを設定します。
# rtsol -d ed1 checking if ed1 is ready... ed1 is ready send RS on ed1, whose state is 2 received RA from fe80::2a0:deff:fe09:352a on ed1, state is 2 stop timer for ed1 there is no timer #
これでIPv6アドレスが割り当てられたはずなので、確認します。
% ifconfig -a ppp0: flags=8010mtu 1500 sl0: flags=c010 mtu 552 faith0: flags=8000 mtu 1500 gif0: flags=8010 mtu 1280 gif1: flags=8010 mtu 1280 gif2: flags=8010 mtu 1280 gif3: flags=8010 mtu 1280 lo0: flags=8049 mtu 16384 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x8 inet6 ::1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 ed1: flags=8843 mtu 1500 inet 192.168.0.2 netmask 0xffffff00 broadcast 192.168.0.255 inet6 fe80::2a0:b0ff:fe21:9fed%ed1 prefixlen 64 scopeid 0x9 inet6 3ffe:5ff:100:aa01:2a0:b0ff:fe21:9fed prefixlen 64ether 00:a0:b0:21:9f:ed % netstat -nr -f inet6 Routing tables Internet6: Destination Gateway Flags Netif Expire ::/96 ::1 UGRSc lo0 =>default fe80::2a0:deff:fe09:352a%ed1 UGc ed1::1 ::1 UH lo0 ::ffff:0.0.0.0/96 ::1 UGRSc lo03ffe:5ff:100:aa01::/64 link#9 UC ed1fe80::/10 ::1 UGRSc lo0 fe80::%lo0/64 fe80::1%lo0 Uc lo0 fe80::%ed1/64 link#9 UC ed1 ff01::/32 ::1 U lo0 ff02::/16 fe80::1%lo0 UCS lo0 ff02::%lo0/32 fe80::1%lo0 UC lo0 ff02::%ed1/32 link#9 UC ed1 % ndp -rfe80::2a0:deff:fe09:352a if=ed1, flags=, expire=23m19s%
よさげなので、グローバルIPv6アドレスにICMPv6を送信してみます。
% ping6 3ffe:5ff:100:aa01::1 PING6(56=40+8+8 bytes) 3ffe:5ff:100:aa01:2a0:b0ff:fe21:9fed --> 3ffe:5ff:100:aa01::1 16 bytes from 3ffe:5ff:100:aa01::1, icmp_seq=0 hlim=64 time=1.793 ms 16 bytes from 3ffe:5ff:100:aa01::1, icmp_seq=1 hlim=64 time=1.629 ms ^C --- 3ffe:5ff:100:aa01::1 ping6 statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max = 1.629/1.71/1.793 ms %
ff02::1はリンクローカル・オールノードマルチキャストアドレスです。インターフェースとして指定されているne2と同一リンクにあるノードにICMPv6を送信します。
% ping6 ff02::1%ne2 PING6(56=40+8+8 bytes) fe80::210:b5ff:fe02:dac7%ne2 --> ff02::1%ne2 16 bytes from fe80::210:b5ff:fe02:dac7%lo0, icmp_seq=0 hlim=64 time=0.231 ms 16 bytes from fe80::2a0:b0ff:fe21:9fed%ne2, icmp_seq=0 hlim=64 time=1.373 ms(DUP!) 16 bytes from fe80::2a0:deff:fe09:352a%ne2, icmp_seq=0 hlim=64 time=1.601 ms(DUP!) 16 bytes from fe80::210:b5ff:fe02:dac7%lo0, icmp_seq=1 hlim=64 time=0.19 ms 16 bytes from fe80::2a0:b0ff:fe21:9fed%ne2, icmp_seq=1 hlim=64 time=1.065 ms(DUP!) 16 bytes from fe80::2a0:deff:fe09:352a%ne2, icmp_seq=1 hlim=64 time=1.41 ms(DUP!) ^C --- ff02::1%ne2 ping6 statistics --- 2 packets transmitted, 2 packets received, +4 duplicates, 0% packet loss round-trip min/avg/max/std-dev = 0.190/0.978/1.601/0.565 ms %
そこで、応答のあったそれぞれのIPv6アドレスにICMPv6を送信してみます。
% ping6 fe80::210:b5ff:fe02:dac7%lo0 PING6(56=40+8+8 bytes) fe80::1%lo0 --> fe80::210:b5ff:fe02:dac7%lo0 16 bytes from fe80::210:b5ff:fe02:dac7%lo0, icmp_seq=0 hlim=64 time=0.107 ms 16 bytes from fe80::210:b5ff:fe02:dac7%lo0, icmp_seq=1 hlim=64 time=0.112 ms ^C --- fe80::210:b5ff:fe02:dac7%lo0 ping6 statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/std-dev = 0.107/0.110/0.112/0.003 ms %
% ping6 fe80::2a0:b0ff:fe21:9fed%ne2 PING6(56=40+8+8 bytes) fe80::210:b5ff:fe02:dac7%ne2 --> fe80::2a0:b0ff:fe21:9fed%ne2 16 bytes from fe80::2a0:b0ff:fe21:9fed%ne2, icmp_seq=0 hlim=64 time=0.682 ms 16 bytes from fe80::2a0:b0ff:fe21:9fed%ne2, icmp_seq=1 hlim=64 time=0.647 ms ^C --- fe80::2a0:b0ff:fe21:9fed%ne2 ping6 statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/std-dev = 0.647/0.665/0.682/0.017 ms %
% ping6 fe80::2a0:deff:fe09:352a%ne2 PING6(56=40+8+8 bytes) fe80::210:b5ff:fe02:dac7%ne2 --> fe80::2a0:deff:fe09:352a%ne2 16 bytes from fe80::2a0:deff:fe09:352a%ne2, icmp_seq=0 hlim=64 time=1.286 ms 16 bytes from fe80::2a0:deff:fe09:352a%ne2, icmp_seq=1 hlim=64 time=1.267 ms ^C --- fe80::2a0:deff:fe09:352a%ne2 ping6 statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/std-dev = 1.267/1.276/1.286/0.009 ms %
次に、ルータにRS(Router Solicitation Message)を送出し、Plug and PlayによりIPv6アドレスを設定します。まず、/etc/rc.confの内容を確認します。ipv6modeがautohost、rtsolがYES、rtsol_flagsにインターフェース名が指定されていることを確認します。
*** rc.conf 2002/05/04 08:35:48 1.1 --- rc.conf 2002/05/04 08:42:38 1.2 *************** *** 101,108 **** dhclient_flags="" # blank: config all interfaces ntpdate=NO ntpdate_flags="-b -s" # May need '-u' thru firewall ppp_peers="" # /etc/ppp/peers to call! ip6mode=host # host, autohost or router! rtsol=NO rtsol_flags="" # for ip6mode=autohost only# Daemons required by servers. These are not needed for strictly client use. # --- 101,108 ---- dhclient_flags="" # blank: config all interfaces ntpdate=NO ntpdate_flags="-b -s" # May need '-u' thru firewall ppp_peers="" # /etc/ppp/peers to call! ip6mode=autohost # host, autohost or router! rtsol=YES rtsol_flags="ne2" # for ip6mode=autohost only# Daemons required by servers. These are not needed for strictly client use. #
RSを送出します。
# rtsol -d ne2 rtsol: kernel is configured not to accept RAs checking if ne2 is ready... ne2 is ready send RS on ne2, whose state is 2 received RA from fe80::2a0:deff:fe09:352a on ne2, state is 2 stop timer for ne2 there is no timer #
これでIPv6アドレスが割り当てられたはずなので、確認します。
% ifconfig -a lo0: flags=8009mtu 33228 inet 127.0.0.1 netmask 0xff000000 inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 inet6 ::1 prefixlen 128 tun0: flags=10 mtu 1500 tun1: flags=10 mtu 1500 ipip0: flags=8010 ipip1: flags=8010 gif0: flags=8010 mtu 1280 gif1: flags=8010 mtu 1280 gif2: flags=8010 mtu 1280 gif3: flags=8010 mtu 1280 faith0: flags=8002 mtu 1500 ne2: flags=8863 mtu 1500 address: 00:10:b5:02:da:c7 media: Ethernet manual inet 192.168.0.3 netmask 0xffffff00 broadcast 192.168.0.255 inet6 fe80::210:b5ff:fe02:dac7%ne2 prefixlen 64 scopeid 0xb inet6 3ffe:5ff:100:aa01:210:b5ff:fe02:dac7 prefixlen 64% netstat -nr -f inet6 Routing tables Internet6: Destination Gateway Flags Refs Use Mtu Interface ::/104 ::1 UGRS 0 0 33228 lo0 => ::/96 ::1 UGRS 0 0 33228 lo0 =>default fe80::2a0:deff:fe09:352a%ne2 UG 0 0 1500 ne2::1 ::1 UH 12 0 33228 lo0 ::127.0.0.0/104 ::1 UGRS 0 0 33228 lo0 ::224.0.0.0/100 ::1 UGRS 0 0 33228 lo0 ::255.0.0.0/104 ::1 UGRS 0 0 33228 lo0 ::ffff:0.0.0.0/96 ::1 UGRS 0 0 33228 lo0 2002::/24 ::1 UGRS 0 0 33228 lo0 2002:7f00::/24 ::1 UGRS 0 0 33228 lo0 2002:e000::/20 ::1 UGRS 0 0 33228 lo0 2002:ff00::/24 ::1 UGRS 0 0 33228 lo03ffe:5ff:100:aa01::/64 link#11 UC 0 0 1500 ne2fe80::/10 ::1 UGRS 0 0 33228 lo0 fe80::%lo0/64 fe80::1%lo0 U 0 0 33228 lo0 fe80::%ne2/64 link#11 UC 1 0 1500 ne2fe80::2a0:deff:fe09:352a%ne2 00:a0:de:09:35:2a UHL 1 0 1500 ne2fec0::/10 ::1 UGRS 0 0 33228 lo0 ff01::/32 ::1 U 0 0 33228 lo0 ff02::%lo0/32 fe80::1%lo0 UC 0 0 33228 lo0 ff02::%ne2/32 link#11 UC 0 0 1500 ne2 % ndp -rfe80::2a0:deff:fe09:352a if=ne2, flags=, expire=25m24s%
よさげなので、グローバルIPv6アドレスにICMPv6を送信してみます。
% ping6 3ffe:5ff:100:aa01::1 PING6(56=40+8+8 bytes) 3ffe:5ff:100:aa01:210:b5ff:fe02:dac7 --> 3ffe:5ff:100:aa01::1 16 bytes from 3ffe:5ff:100:aa01::1, icmp_seq=0 hlim=64 time=1.615 ms 16 bytes from 3ffe:5ff:100:aa01::1, icmp_seq=1 hlim=64 time=1.485 ms ^C --- 3ffe:5ff:100:aa01::1 ping6 statistics --- 2 packets transmitted, 2 packets received, 0% packet loss round-trip min/avg/max/std-dev = 1.485/1.550/1.615/0.065 ms %