ipv6 で通信したい
ipv6 を有効にすると、いっぱいアドレスが割り振られて気持ち悪い。
たくさん割り振られるアドレスのなかでも、fe80
から始まるv6アドレスを リンクローカル・アドレスという。英語では link-local と表記されます。
v6リンクローカルアドレスとは。
v6のリンクローカルアドレスは、IPv4 169.254.*.*
と同様のアドレスです。
ホスト間で通信を1対1で行う事ができます。 同一リンク内、つまりスイッチングハブを通して通信できる範囲(これをリンクという)で有効です。
ハブで接続されたホスト間で通信が可能になるのが、リンクローカルの役割です。
言い換えれば、リンクローカルアドレスは、経路を持ちえません。 経路表を使った伝送はできません。
v6 リンクローカルアドレス間で通信を行う。
ホストAとホストBのリンクローカルアドレスを確認します。
リンクローカルアドレスとは fe80::/
なアドレスです。
ホストAとホストBはスイッチング・ハブで接続されています。
ホストA
ip -6 addr show br0 4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 inet6 fe80::f86c:d5ff:fe1e:e490/64 scope link valid_lft forever preferred_lft forever
ホストB
ip -6 addr show br-lan0 3: br-lan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000 inet6 fe80::e080:bcff:fe7a:ddac/64 scope link valid_lft forever preferred_lft forever
ホストA/ホストBのv6アドレスの注目ポイント
ここでの注目ポイントは、NICのデバイス名と、リンクローカルのv6アドレスです。
ホストのNICデバイス名とアドレスをまとめるたものが、次表になります。
名 | インタフェース | リンクローカル・アドレス |
---|---|---|
ホストA | br0 | fe80::f86c:d5ff:fe1e:e490 |
ホストB | br-lan0 | fe80::e080:bcff:fe7a:ddac |
PINGする。ホストAからホストBへ
リンクローカルは経路がないため、どのインタフェースから送信するか明示する必要がある。
ping - I br0 fe80::e080:bcff:fe7a:ddac
インタフェースをV6アドレスに含める。
ping コマンドはインタフェース指定に対応しているから良いが、非対応のコマンドだと困ることになる。 そのため、ipv6 のリンクローカルでは、デバイスを明示する仕様が盛り込まれている。これを利用すると、ipv6 のアドレスに送信元インタフェースを含めることができる。
リンクローカルのアドレスに、 fe80::1%eth0
のように、デバイス名をつけて送信元となるデバイス名を明示する。指定したデバイス名が出口となりパケットが送出される。
ping fe80::e080:bcff:fe7a:ddac%br0
これでリンクローカルを使った通信ができる。
まとめ
- IPv6にはリンクローカルがある。
- リンクローカルは
fe80
から始まる。 - リンクローカルは経路を持たない
- 通信するインタフェースを
fe80::1%eth0
のように指定する。