▼ 2011/12/21(Wed) 同一セグメントの対向IPv6ホストアドレスを知るライフハック
さて、今回のポストはIPv6ネットワークのライフハックを一つ。
ネットワークにマシンを足したけどそのアドレス、何がついたかいちいちメモるのが大変*1だというお悩みや、ルーティング先ルータのリンクローカルアドレスってなんだっけ?というお悩みを解消できまする。
ネットワークにマシンを足したけどそのアドレス、何がついたかいちいちメモるのが大変*1だというお悩みや、ルーティング先ルータのリンクローカルアドレスってなんだっけ?というお悩みを解消できまする。
*1 : とくにIPv6のEUI-64生成された2001:db8:2413:2012:204:83ff:fe21:4dbaみたいなアドレスだと
決め手は全ノードマルチキャスト
さて、IPv6には全ノードマルチキャストアドレスという特別なアドレスがあります。"ff02::1"というアドレスがそれで、スコープはリンクローカルです。つまり、各ネットワーク毎に存在するアドレスですね。
基本的に、このアドレスはIPv4のブロードキャストアドレスの置き換えで、全てのノードが受信してくれる*2ので、ここにping6を投げるわけです。
先ほども書いたようにリンクローカルのアドレスなので、インタフェースの指定が必須です。
そして、応答時間が一番短いのが自分自身なので、DUP!印の付いているものを順番に確かめていけば良いでしょう。
Linux
Linuxの例。$ ping6 -I eth0 ff02::1 PING ff02::1(ff02::1) from fe80::212:34ff:fe56:789a eth0: 56 data bytes 64 bytes from fe80::212:34ff:fe56:789a: icmp_seq=0 ttl=64 time=0.031 ms 64 bytes from fe80::212:34ff:fe56:0bcd: icmp_seq=0 ttl=64 time=0.370 ms (DUP!) 64 bytes from fe80::212:34ff:fe56:efa1: icmp_seq=0 ttl=64 time=0.456 ms (DUP!) 64 bytes from fe80::212:34ff:fe90:abcd: icmp_seq=0 ttl=64 time=0.557 ms (DUP!) ... ^C
Solaris
Solaris(OpenIndiana)の例。ちょっとオプションが色々違いますが、基本的にはLinuxと同じスタイル。
- Iでインターバル付けないとうまく出てこない…?
$ ping -i nge0 -I 30 -s ff02::1 PING ff02::1: 56 data bytes 64 bytes from fe80::212:34ff:fe56:789a: icmp_seq=0. time=0.136 ms 64 bytes from fe80::212:34ff:fe56:0bcd: icmp_seq=0. time=1016.315 ms 64 bytes from fe80::212:34ff:fe56:efa1: icmp_seq=0. time=2027.804 ms 64 bytes from fe80::212:34ff:fe90:abcd: icmp_seq=0. time=2028.937 ms ... ^C
AlaxalA
AlaxalAのスイッチの例。アドレスの後に%とVLAN番号を書くパターンで同じ事が可能です。
ちなみにAlaxalA IPv6導入ガイドによれば、"VLAN"は大文字かつVLAN番号は4桁に0フィルしないといけないらしいのでご注意。
> ping ipv6 ff02::1%VLAN0025 PING6(56=40+8+8 bytes) fe80::212:34ff:fe56:0bcd%VLAN0025 --> ff02::1%VLAN0025 16 bytes from fe80::212:34ff:fe56:0bcd%VLAN0025, icmp_seq=0 hlim=64 time=1.949 ms 16 bytes from fe80::212:34ff:fe56:789a%VLAN0025, icmp_seq=0 hlim=64 time=4.989 ms(DUP!) 16 bytes from fe80::212:34ff:fe56:efa1%VLAN0025, icmp_seq=0 hlim=64 time=8.25 ms(DUP!) 16 bytes from fe80::212:34ff:fe90:abcd%VLAN0025, icmp_seq=0 hlim=64 time=11.951 ms(DUP!) ... ^C
AlliedTelesis
こちらも同様。VLANインタフェースの指定と同じようにそのまま書けばOKです。0フィルは不要でvlanは小文字。
> ping ff02::1%vlan25 Echo reply 1 from fe80::212:34ff:fe90:abcd time delay 0.003 ms Echo reply 1 from fe80::212:34ff:fe56:789a time delay 0.714 ms (DUP!) Echo reply 1 from fe80::212:34ff:fe56:0bcd time delay 0.769 ms (DUP!) ... ^C
Cisco
手元に実機がないのですが、こんな感じ。# ping ipv6 ff02::1 repeat 1 timeout 5 Output Interface: GigabitEthernet 0 ...
D-Link
割と同様。VLANとは別にIPv6インタフェースをcreate ipifで作る必要があるので、show ipifして存在していなければcreate ipif myifname VLAN25のように作る必要がある。
default vlanはSystemという名前みたい。*3
# ping6 ff02::1%System Command: ping6 FF02::1%System Reply to request 1 from FE80::212:34FF:FE56:EFA1, bytes=100 time<10 ms Reply to request 1 from FE80::212:34FF:FE90:ABCD, bytes=100 time=10 ms Reply to request 1 from FE80::212:34FF:FE56:0BCD, bytes=100 time=10 ms Reply to request 1 from FE80::212:34FF:FE56:789A, bytes=100 time=30 ms ... ^C
YAMAHA
"インタフェース"指定と、"% + スコープ識別子"(show ipv6 addressで確認)の両方が指定可能で、"lanN"の部分は、"pp N"や"tunnel N"のような指定も可能。後ろの"1"は送信回数。
% ping6 ff02::1 lan1 1 ...
Windows
ちなみにWindowsならば、netsh経由などでインタフェース番号を調べてから、アドレスの最後に%xxという形で指定できることはできるわけですが…> netsh int ipv6 show ad (略) インターフェイス 12: ローカル エリア接続 アドレス種類 DAD 状態 有効期間 優先有効期間 アドレス ------------ ----------- ---------- ------------ --------------------- Public 設定 23h59m51s 3h59m51s 2001:db8:1234:5678:9abc:9078:6756:abcd Temporary 設定 23h59m51s 3h59m51s 2001:db8:1234:5678:212:34ff:fe56:efa1 その他 設定 infinite infinite fe80::9abc:9078:6756:abcd%12 (略) > ping ff02::1%12 ff02::1%12 に ping を送信しています 32 バイトのデータ: ff02::1%12 からの応答: 時間 =1ms ff02::1%12 からの応答: 時間 =1ms ff02::1%12 からの応答: 時間 =1ms ... ^Cうおお、だんまりか。
この記事を書く過程で同じ現象を経験したらしい人のpostも見かけたけど、Windows 7辺りは返事もしてくれないらしいのでご注意。
*2 : 後に書いてますが、Windows 7等応答を返さないものもあります。ご注意。
*3 : ものによっては、IPv6インタフェースは一つしか扱えないみたいなので、System I/Fにアドレスを振っている場合はそれ以外には無理っぽい
総括
まあ、ICMPやICMPv6を返す設定にしている時点で、そのホストの存在を知らせてしまうようなものなので、このセグメントのグローバルプレフィックスがRAで知らせれれば、簡単に対向ノードのグローバルアドレスを知る事も出来ますが、そういうリスクもあると思っておくべきですね。参考になった記事や興味深かった記事は、他の人も見つけやすいようにリンクやはてブしていただけると助かります…。
コメントも歓迎です。
▼ コメント(0件)
- TB-URL http://mo.kerosoft.com/0189/tb/
