正常獲取IPV6地址卻無(wú)法使用的解決方案
WinXP無(wú)法連接 IPv6 站點(diǎn),但是 IPv6地址的獲取是正常的,同一臺(tái)電腦上的 Ubuntu IPv6工作也正常。經(jīng)過(guò)一些摸索發(fā)現(xiàn)可能是以下兩個(gè)原因造成的:
1. 分配到 2002 開頭的 IPv6地址并使用了它。2002::/16格式的地址是 6to4 的地址,不是 native 的 IPv6地址,所以在 IPV4+V6 雙棧網(wǎng)絡(luò)中不應(yīng)該使用 2002::/16 格式的地址。執(zhí)行 ping6 IPv6.google.com 可以看到自己使用的是什么 IPv6地址。
之所以會(huì)產(chǎn)生 2002::/16 格式的地址,一個(gè)很可能的原因是網(wǎng)絡(luò)中的 Windows Vista 操作系統(tǒng)默認(rèn)會(huì)發(fā)送 IPv6 的路由器公告。使用
netsh interface IPv6 show interface "本地連接"
命令可以查看本地連接的參數(shù),其中有一條:“發(fā)送路由器公告”,一定要設(shè)置為“否”。如果您的這個(gè)選項(xiàng)是“是”,那么您可以使用這個(gè)命令關(guān)閉它:
netsh interface IPv6 set interface “本地連接” advertise=disabled
如果獲得的全部是 2002 開頭的地址,可以使用下面命令進(jìn)行重分配:
netsh interface IPv6 reset
2. IPv6 的路由表(網(wǎng)關(guān))不對(duì)。tracert6 IPv6.google.com 就能看到本機(jī)是經(jīng)過(guò)什么路由到 IPv6.google.com 的。如果從***跳就顯示連接超時(shí),應(yīng)該就是路由表出了問(wèn)題。
兩個(gè)問(wèn)題的解決方案如下:
netsh interface IPv6 set prefixpolicy 2001::/16 1 1 persistent
上面這條命令的意思是設(shè)置 Windows 更偏好使用 2001 開頭的 IPv6地址,避免使用 2002 開頭的地址。如果您 ping IPv6.google.com 使用的是 2001 開頭的地址,那么您不必執(zhí)行上面這條命令。
netsh interface IPv6 add route 2001::/16 "本地連接" fe80::21a:30ff:fe4f:7000 persistent
上面這條命令的意思是為 2001 開頭的 IPv6地址使用正確的網(wǎng)關(guān) fe80::21a:30ff:fe4f:7000(中科院某公寓)。這個(gè)網(wǎng)關(guān)可能隨著用戶所在網(wǎng)絡(luò)的不同而不同,簡(jiǎn)單點(diǎn)兒的方法可以去看正常用戶的 ifconfig 網(wǎng)關(guān)地址。
之后執(zhí)行 ping6 IPv6.google.com 看能否 ping 通,如果能 ping 通就說(shuō)明 IPv6 工作正常了。
如果您經(jīng)過(guò)以上兩步之后仍然無(wú)法解決問(wèn)題的話,您可以使用 netsh interface IPv6 reset 命令來(lái)重置所有修改。
PS:
1. 如何確定網(wǎng)絡(luò)中哪些主機(jī)在發(fā)送路由器公告?
2002 后面的兩個(gè)字段就是該主機(jī)的 IPV4 地址,比如 2002:3b41:177e:8:18fc:7649:9e1d:2880,其中 3b41:177e 從 16 進(jìn)制顯示換算成 IPV4 的 10 進(jìn)制顯示地址就是 59.65.23.126。一般來(lái)說(shuō),V4 地址的分配更有規(guī)律,您可以從 V4 地址大致確定該主機(jī)的位置。
2. 如何確定虛假的路由記錄?
一般來(lái)說(shuō),IPv6 地址的*** 4 個(gè)域應(yīng)該從網(wǎng)卡的物理地址中獲得,假設(shè)網(wǎng)卡物理地址是:00-17-31-94-99-EA,在 3,4 字節(jié)之間插入 FFFE 換成 EUI-64 格式是:00-17-31-FF-FE-94-99-EA,再對(duì)***個(gè)字節(jié)的第二位取反,就變成 02-17-31-FF-FE-94-99-EA,然后裝載到 IPv6 的本地地址中,就變成本地地址 fe80::217:31ff:fe94:99ea。根據(jù)網(wǎng)段的不同,在前面加上 4 個(gè)網(wǎng)絡(luò)域,就是主機(jī)的公網(wǎng)地址 2001:xxxx:xxxx:xxxx:217:31ff:fe94:99ea。
由于雙棧路由器是使用同一個(gè)網(wǎng)卡提供 V4 和 V6 的路由,那么路由器的 V4 地址和 V6 地址的物理地址是一樣的。通過(guò) ping gateway_ipaddress_v4,然后 arp -a 看 V4 的網(wǎng)關(guān)地址對(duì)應(yīng)的物理地址,與上面 V6 網(wǎng)關(guān)本地地址中獲得的物理地址相對(duì)照,就可以確定某路由記錄是否為可用的記錄。