支援IPv6的介面都會有一個位址稱為link-local位址,也就是以FE80開頭的IP,該IP只能在同網段內活動,不能跨網段。
link-local是由網卡的MAC去換算出來的,千萬不要像我這樣傻傻的,沒有先了解,就手動指定IP,還怪Linux怎麼會無法修改。
[oracle@oel62 ~]$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:9A:A8:28
inet addr:192.168.56.200 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fec0::a00:27ff:fe9a:a828/64 Scope:Site
inet6 addr: fe80::a00:27ff:fe9a:a828/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6270 errors:0 dropped:0 overruns:0 frame:0
TX packets:4327 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:606953 (592.7 KiB) TX bytes:900914 (879.7 KiB)
由上面的Scope可以知道,link-local IP是 fe80::a00:27ff:fe9a:a828,下面是換算的過程:
MAC 08:00:27:9A:A8:28
Step1 08:00:27:FF:FE:9A:A8:28
Setp2 0A:00:27:FF:FE:9A:A8:28
Setp3 fe:80:00:00:00:00:00:00:0A:00:27:FF:FE:9A:A8:28
Setp4 fe80:0000:0000:0000:0A00:27FF:FE9A:A828 --> Link_local IP
Step1:
將十六進位值 FF:FE 插入MAC位址的中間,也就是第三位元組與第四位元組中間。
Step2:
將MAC用來識別Universal或Local的那個位元做補數(complement)的動作,也就是將"08"這個byte由左到右的倒數第二個 bit 從原來的"0"轉成 "1"。
08(16) => 0000 1000(2) => 0000 1010(2) => 0A(16)
Setp3:
在最前面加上fe:80:00:00:00:00:00:00。
Setp4:
依照IPv6的格式重新排列,就可以得到fe80::a00:27ff:fe9a:a828的IP位址。
link-local是由網卡的MAC去換算出來的,千萬不要像我這樣傻傻的,沒有先了解,就手動指定IP,還怪Linux怎麼會無法修改。
[oracle@oel62 ~]$ ifconfig eth0
eth0 Link encap:Ethernet HWaddr 08:00:27:9A:A8:28
inet addr:192.168.56.200 Bcast:192.168.56.255 Mask:255.255.255.0
inet6 addr: fec0::a00:27ff:fe9a:a828/64 Scope:Site
inet6 addr: fe80::a00:27ff:fe9a:a828/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:6270 errors:0 dropped:0 overruns:0 frame:0
TX packets:4327 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:606953 (592.7 KiB) TX bytes:900914 (879.7 KiB)
由上面的Scope可以知道,link-local IP是 fe80::a00:27ff:fe9a:a828,下面是換算的過程:
MAC 08:00:27:9A:A8:28
Step1 08:00:27:FF:FE:9A:A8:28
Setp2 0A:00:27:FF:FE:9A:A8:28
Setp3 fe:80:00:00:00:00:00:00:0A:00:27:FF:FE:9A:A8:28
Setp4 fe80:0000:0000:0000:0A00:27FF:FE9A:A828 --> Link_local IP
Step1:
將十六進位值 FF:FE 插入MAC位址的中間,也就是第三位元組與第四位元組中間。
Step2:
將MAC用來識別Universal或Local的那個位元做補數(complement)的動作,也就是將"08"這個byte由左到右的倒數第二個 bit 從原來的"0"轉成 "1"。
08(16) => 0000 1000(2) => 0000 1010(2) => 0A(16)
Setp3:
在最前面加上fe:80:00:00:00:00:00:00。
Setp4:
依照IPv6的格式重新排列,就可以得到fe80::a00:27ff:fe9a:a828的IP位址。