diary/Kawamata/2009-03-29
の編集
http://plamo.linet.gr.jp/index.php?diary/Kawamata/2009-03-29
[
トップ
] [
編集
|
差分
|
バックアップ
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
-- 雛形とするページ --
diary/Template
#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とかやって、外部到達性を調べればいいのでしょうが、 コマンドが入ってないので、今日はここまでにしておきます。 -まとめ --カーネルが対応しているので、アドレスの自動設定機能までは働いている((*BSDでは、この部分は一部ユーザランドに任されていて、デーモン(rtsold)を動かしておく必要があります))。 ~ →とりあえずは、エンドノード(クライアント)としては使用可能な状態(おそらく)。 --ユーザランドが対応していないので、それ以上は確認・設定不能 ~ →IPv6ルータとして動作させたり、IPv4トンネル接続をセットアップしたりするには、まだいろいろやる必要あり。 ---- -このへん、個人的な優先順位があまり高くないので真面目には調べていないのだけど、最近のLinuxではifconfigとかrouteコマンドはobsoleteで、iproute2由来の ip コマンドに集約しようとしている感じですね。ip コマンドがどこまでv6に対応しているのかは確認してないですが、こんな感じのメッセージは表示されます。 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]] &new{2009-03-29 (日) 23:54:09}; ---- -いやいやいや、とても参考になります。ipは、ifconfig + netstat + route みたいな感じのコマンドなのですね。こちらの環境でやってみたところ、こんな感じになりました。 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 ... [[川俣]] &new{2009-03-30 (月) 01:08:56}; ---- -FirefoxあたりはIPv6対応してそうな感じなので、やってみたら予想通りOKでした。 #ref(Screenshot-QEMU.png,wrap,33%) ... [[川俣]] &new{2009-03-30 (月) 01:44:23}; -netstat が v6 対応じゃないのは,v4 環境でも不具合が出るので,不具合報告9 を上げてます.:-) -- [[KATOH Yasufumi]] &new{2009-03-30 (月) 11:17:36}; -iproute2 は netlink を使って設定を行うヤツですね.:-) -- [[KATOH Yasufumi]] &new{2009-03-30 (月) 11:18:14}; -ipconfigがobsoteteになりつつあるなどと初めて知りました。変わりつつあるのですね。。。 -- [[通りすがり]] &new{2009-03-30 (月) 21:41:45};
タイムスタンプを変更しない
#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とかやって、外部到達性を調べればいいのでしょうが、 コマンドが入ってないので、今日はここまでにしておきます。 -まとめ --カーネルが対応しているので、アドレスの自動設定機能までは働いている((*BSDでは、この部分は一部ユーザランドに任されていて、デーモン(rtsold)を動かしておく必要があります))。 ~ →とりあえずは、エンドノード(クライアント)としては使用可能な状態(おそらく)。 --ユーザランドが対応していないので、それ以上は確認・設定不能 ~ →IPv6ルータとして動作させたり、IPv4トンネル接続をセットアップしたりするには、まだいろいろやる必要あり。 ---- -このへん、個人的な優先順位があまり高くないので真面目には調べていないのだけど、最近のLinuxではifconfigとかrouteコマンドはobsoleteで、iproute2由来の ip コマンドに集約しようとしている感じですね。ip コマンドがどこまでv6に対応しているのかは確認してないですが、こんな感じのメッセージは表示されます。 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]] &new{2009-03-29 (日) 23:54:09}; ---- -いやいやいや、とても参考になります。ipは、ifconfig + netstat + route みたいな感じのコマンドなのですね。こちらの環境でやってみたところ、こんな感じになりました。 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 ... [[川俣]] &new{2009-03-30 (月) 01:08:56}; ---- -FirefoxあたりはIPv6対応してそうな感じなので、やってみたら予想通りOKでした。 #ref(Screenshot-QEMU.png,wrap,33%) ... [[川俣]] &new{2009-03-30 (月) 01:44:23}; -netstat が v6 対応じゃないのは,v4 環境でも不具合が出るので,不具合報告9 を上げてます.:-) -- [[KATOH Yasufumi]] &new{2009-03-30 (月) 11:17:36}; -iproute2 は netlink を使って設定を行うヤツですね.:-) -- [[KATOH Yasufumi]] &new{2009-03-30 (月) 11:18:14}; -ipconfigがobsoteteになりつつあるなどと初めて知りました。変わりつつあるのですね。。。 -- [[通りすがり]] &new{2009-03-30 (月) 21:41:45};
テキスト整形のルールを表示する
添付ファイル:
Screenshot-QEMU.png
636件
[
詳細
]