読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】fe80:: で始まるアドレスが勝手に付いてる。IPv6 の128ビットと省略表記、リンクローカル、近隣探索【LPICレベル1】

21レスカテゴリ:Linux
1: 名無しさん

ip addr を見たら inet6 fe80::… ってアドレスが付いてた
設定した覚えがないのに

2: 名無しさん

前提のおさらい。IPv4 は32ビットで、ネットワーク部とホスト部を /24 みたいなプレフィックスの長さで分ける。IPv6 も考え方は同じ

3: 名無しさん

>>1
fe80::/10 はリンクローカルアドレス。IPv6 が有効なインターフェースには自動で付く。同じリンク(ルーターを越えない範囲)の中だけで使う
近くの機器を見つけたり、ルーターと話したりするのに使うから、消さんでええ

4: 名無しさん

>>3
そもそも IPv6 のアドレスの書き方は?

5: 名無しさん

>>4
128ビットを16ビットずつ8つに区切って、16進数で : でつなぐ
2001:0db8:0000:0000:0000:0000:0000:0001
各区切りの先頭の0は省ける。0だけが続くところは1か所だけ :: にできる
→ 2001:db8::1

6: 名無しさん

>>5
:: を2か所に使ったらあかんの?

7: 名無しさん

>>6
あかん。何個の0を省いたか分からんようになる。2001:db8:0:0:1:0:0:1 は 0 の続きが2か所あるけど、:: にできるのは1か所だけ。Python の ipaddress で縮めたら 2001:db8::1:0:0:1(前のほう)になった

8: 名無しさん

>>2
アドレスの数は?

9: 名無しさん

>>8
全部で

通り。普通は前の64ビットがネットワーク(プレフィックス /64)、後ろの64ビットがインターフェース ID で、1つの /64 の中だけで

個ある

10: 名無しさん

>>9
ほかの種類のアドレスは?

11: 名無しさん

>>10
::1/128:ループバック(IPv4 の 127.0.0.1)
fe80::/10:リンクローカル
fc00::/7(実際は fd00::/8):ユニークローカル。IPv4 のプライベートアドレスに近い
2000::/3:グローバルユニキャスト。インターネットで使う
ff00::/8:マルチキャスト
2001:db8::/32:文書用

12: 名無しさん

>>11
ブロードキャストは?

13: 名無しさん

>>12
IPv6 にはない。全部のノード宛てのマルチキャスト(ff02::1)などで代わりをする

14: 名無しさん

>>2
IPv4 で使ってた ARP は?

15: 名無しさん

>>14
ARP の代わりが近隣探索(NDP、Neighbor Discovery)。ICMPv6 の近隣要請・近隣広告で相手の MAC アドレスを調べる。ルーター要請・ルーター広告でルーターやプレフィックスも見つける
一覧は ip -6 neigh

16: 名無しさん

>>15
アドレスはどうやって決まるん

17: 名無しさん

>>16
ルーター広告でもらったプレフィックスに、自分でインターフェース ID を付ける SLAAC(ステートレス自動設定)がある。DHCPv6 でもらう方法も、手で付ける方法もある

18: 名無しさん

IPv4 とのほかの違いは?

19: 名無しさん

>>18
ヘッダーが固定長で単純になった。途中のルーターは分割(フラグメント)しない。IPv4 と IPv6 を同時に使うのがデュアルスタック
コマンドは ping -6 や昔の ping6、traceroute6、ip -6 route。URL にアドレスを書くときは http://[2001:db8::1]:8080/ のように [ ] で囲む

20: 名無しさん

>>19
試したマシンの lo には inet6 ::1/128 scope host が付いてた。IPv4 の 127.0.0.1/8 と並んでる

21: 名無しさん

>>3
128ビットを16進数で8つ、先頭の0と :: で省略(:: は1か所)、fe80 はリンクローカルで自動、ブロードキャストはなくて ARP の代わりは NDP。勝手に付いてたのは正常か

管理人のひとこと