#topicpath IPv6ネタの続き;
前回の日記で、KATOHさんから「カーネルはIPv6に対応しているのでは」 というコメントをいただきましたので、 Plamo 4.6でのIPv6動作状況を調べてみることにしました。
現在、Plamo4.6は、Ubuntu 8.02LTS上のQEMUで
ゲストOSとして動作してます。
一方、real networkでは、Ubuntuは
家庭内LANのクライアントで、IPv6 internetの
出口はOpenBSD 4.4がルータになっております。
まずは、QEMU上で動いているPlamoを リアルネットワーク上に参加させます。 ただし、IPv6での通信状況を見たいので、 通常よく使われるQEMUの「-user-net モード」ではなく、 TAP/TUN、およびbridgeデバイスを用い、layer2レベルでの 接続を行ってみます。
接続を図で見ると、以下のようになります;
<Internet> | +----pppoe0----+ |gateway | |OpenBSD | - - - - - - +-----em0------+ : | real network | ethernet +-----eth0-----+ : |client \ | : |Ubuntu \ | : | br0| - - - - - - |QEMU / | : |Host / | : +-----tap0-----+ QEMU virtual | network | : +-----eth0-----+ : |Plamo | : |QEMU Guest | +--------------+ - - - - - -
この状況でPlamoをブートさせ、 どのようになるのかをUbuntu側でパケットを記録し、見てみました。
Ubuntu # tcpdump -n -i tap0 ip6 tcpdump: WARNING: tap0: no IPv4 address assigned tcpdump: verbose output suppressed, use -v or -vv for full protocol decode listening on tap0, link-type EN10MB (Ethernet), capture size 96 bytes 10:48:00.272877 IP6 :: > ff02::16: HBH ICMP6, multicast listener report v2, 1 group record(s), length 28 10:48:00.311784 IP6 :: > ff02::16: HBH ICMP6, multicast listener report v2, 1 group record(s), length 28 10:48:01.127394 IP6 :: > ff02::1:ff12:3456: ICMP6, neighbor solicitation, who has fe80::5054:ff:fe12:3456, length 24 10:48:02.147120 IP6 fe80::5054:ff:fe12:3456 > ff02::2: ICMP6, router solicitation, length 16 10:48:02.380457 IP6 fe80::2a0:24ff:febb:a6b2 > ff02::1: ICMP6, router advertisement, length 56 10:48:03.252417 IP6 :: > ff02::1:ff12:3456: ICMP6, neighbor solicitation, who has 2001:3e0:????:1:5054:ff:fe12:3456, length 24 10:53:40.446942 IP6 fe80::2a0:24ff:febb:a6b2 > ff02::1: ICMP6, router advertisement, length 56
なるほど、Plamoからはルータ要請パケットが出ており、 OpenBSDもそれに対してルータ広告を返しているようです。
今度はPlamo側でネットワーク設定がどうなっているか見てみます。
plamo:~# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 52:54:00:12:34:56 inet addr:192.168.2.1 Bcast:192.168.2.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:182 errors:0 dropped:0 overruns:0 frame:0 TX packets:250 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:20979 (20.4 Kb) TX bytes:28113 (27.4 Kb) Interrupt:10 Base address:0xc100
あれ? 設定されていません‥。
先程のtcpdumpの結果を見るかぎりでは、fe80で始まるリンクローカルアドレスの
付いたパケットが送信されているので、表示されるはずなのですが…。
ルーティングテーブルは、どうなっているでしょうか;
plamo:~# netstat -rn -6 netstat: invalid option -- 6 usage: netstat [-veenNcCF] [<Af>] -r netstat {-V|--version|-h|--help} netstat [-vnNcaeol] [<Socket> ...] netstat { [-veenNac] -i | [-cnNe] -M | -s } -r, --route display routing table (以下略)
netstatコマンドがIPv6に対応していないようです。 先程のifconfigも同様かもしれません。
それでは/proc/netに行き、カーネルインターフェースを直接見てみます。
plamo:~# cd /proc/net plamo:/proc/net# ls -F anycast6 ip6_flowlabel netstat route sockstat6 udplite6 arp ip_mr_cache packet rpc/ softnet_stat unix dev ip_mr_vif pnp rt6_stats stat/ wireless dev_mcast ipv6_route protocols rt_acct tcp dev_snmp6/ mcfilter psched rt_cache tcp6 if_inet6 mcfilter6 ptype snmp udp igmp netfilter/ raw snmp6 udp6 igmp6 netlink raw6 sockstat udplite
if_inet6というのがそれっぽいですね。
plamo:/proc/net# cat if_inet6 00000000000000000000000000000001 01 80 10 80 lo 200103e0????0001505400fffe123456 02 40 00 00 eth0 fe80000000000000505400fffe123456 02 40 20 80 eth0
ビンゴでした。
fe80で始まるリンクローカルアドレスも、
2001で始まるグローバルアドレスもちゃんと付いています。
本来ならここでping6とかやって、外部到達性を調べればいいのでしょうが、 コマンドが入ってないので、今日はここまでにしておきます。
kojima@athlon[~]% /usr/sbin/ip -f inet6 link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether 00:13:d4:de:9b:90 brd ff:ff:ff:ff:ff:ff
分からずに使っているから、「だから何なの?」と言われちゃいそうだけど(^^; -- kojima 2009-03-29 (日) 23:54:09
plamo:~# ip -f inet6 addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000 inet6 2001:3e0:????:1:5054:ff:fe12:3456/64 scope global dynamic valid_lft 2591744sec preferred_lft 604544sec inet6 fe80::5054:ff:fe12:3456/64 scope link valid_lft forever preferred_lft forever... 川俣 2009-03-30 (月) 01:08:56