2007年3月1日

今更ながらIPv6のアドレス付けとは?

IPv6がぼちぼちコンシューマのサービスレベルまで落ちて来始めたので、再度勉強して見ようかと、ローカルマシン間(A,B)で ping を打ってみました。

A:~# ping6 fe80::222:XXXX:XXXX:XXXX
connect: Invalid argument

あれ、対向のPCのアドレスで間違いないのになぁ

B:~# ifconfig eth0 | grep inet6
inet6 addr: fe80::222:XXXX:XXXX:XXXX/64 Scope:Link

って、エラーだぁ、、、何故だろう。

色々な所で宣伝されているようにIPv6 アドレスは 128 bit であり、全ての機器に一意に割り振ってもまだ余るハズではなかったのか〜〜〜!

実は上の例ではAが複数NICを持ち、Linux の iputils のping6を使っている場合にエラーになる。ただ、inetutils の ping6 では普通に疎通する。実装によりけりである。

IPv6のリンクローカルアドレスと疎通する場合、送受信するインタフェースを指定しなければ一意に通信経路を指定することが出来ないので、追加でスコープ番号(インターフェース番号)を指定するらしい(1)。

分かっている人はチャンと理解して、こっそりほくそ笑んでいることなんだろう。ワシは今までほんと知らなかった。

# ping6 -I eth0 fe80::222:XXXX:XXXX:XXXX
or
# ping6 fe80::222:XXXX:XXXX:XXXX%eth0

実装によってはエラーになったりする、、、なんじゃい。

えっと、サイトローカルは廃止されたんかい、何処へ行けばいいの?

0 件のコメント: