#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 2009-03-29 (日) 23:54:09




*1 *BSDでは、この部分は一部ユーザランドに任されていて、デーモン(rtsold)を動かしておく必要があります

添付ファイル: fileScreenshot-QEMU.png 636件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:41