正式進入第19天,到了數饅頭的日子了,在了解scope之前,要先簡單講解一下什麼是IPv6的link local位置。
在IPv6裡,每張網卡一定會出現的位置叫做鏈路本位置,由fe80
開頭。既然所有網卡都有同一個fe80::
的網段,那是不是全世界都串接在一起,就算是loopback的lo0都有一個fe80::1%lo0
的IP,都可以用ping6
(IPv6的ping)去ping到全世界的IPv6設備呢?
答案是不行的
那剛剛提到的fe80::1%lo0
是什麼意思呢?為什麼多了後面一段%lo0
的後綴呢?
那一串後綴就是要限制他只能往這裡丟,也就是ping fe80::1
時會出現
ping6: UDP connect: No route to host
而加上%lo0
後
PING6(56=40+8+8 bytes) fe80::1%lo0 --> fe80::1%lo0
16 bytes from fe80::1%lo0, icmp_seq=0 hlim=64 time=0.095 ms
16 bytes from fe80::1%lo0, icmp_seq=1 hlim=64 time=0.169 ms
16 bytes from fe80::1%lo0, icmp_seq=2 hlim=64 time=0.168 ms
16 bytes from fe80::1%lo0, icmp_seq=3 hlim=64 time=0.179 ms
IPv6的兩個鏈路本位置,都是FE80
網段,如果按照IPv4的特性來說,FE80
網段在每個interface都去得了,那就要天下大亂了。因此,IPv6要在mac層是可以連通的,才能去ping到,因此必要限制%lo
這樣的路徑,不然他就會直接顯示No route to host
然後就GG惹。
看一下IPv6的routing table就大概知道是什麼回事了,我們使用ip -6 route show
fe80::/64 dev eth1 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev eth2 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev vlan1 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev br0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev ifb0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev ifb1 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev dpsta proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 0
fe80::/64 dev vlan2 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 0
每個device都有fe80::/64
的routing rule,他到底要走哪一條路?
每條路都叫忠孝東路,當然要先指定好高架橋還是平面道路還是地下道啊!!