在windows和linux同時安裝ipv6之後,系統將會自動分配一個link-local(鏈接本地)地址,也就是ifconfig -a看到的一行inet6 addr: fe80::20c:29ff:feda:aaa/64 Scope:Link,紅色部分就是ipv6的鏈接本地地址。
現在假設windows下通過ipconfig看到的ipv6地址如下:
fe80::250:56ff:fec0:1%5 //%後面是本ipv6地址對應的網絡接口的index,windows術語叫scope id,可理解為一個接口序號
而linux的ipv6地址是:
fe80::20c:29ff:feda:aaa
這樣的配置,在linux下使用ping6 -I eth0 fe80::250:56ff:fec0:1能夠正常ping通windows的ipv6鏈路本地地址,但是在windows下使用ping -6 fe80::20c:29ff:feda:aaa是不能ping通linux的ipv6地址的。如果我給linux配置一個全局的單播地址(比如2001::1),然後在windows使用ping -6 2001::1是能ping通的。折騰了好久,還以為是本地鏈路地址的原因,後來發現原來是windows系統的一個很搞笑的事情(~_~也許只是我感覺搞笑),必須使用ping -6 fe80::20c:29ff:feda:aaa%5才能ping通linux的ipv6鏈路本地地址,也就是需要再linux的ipv6地址後面加上%和windows網絡接口序號。
下面是我的整個環境設置,我是使用vmware裝的linux,並且vmware設置的網絡方式是host-only,因此物理機和虛擬機通信使用的VMNet1這個網絡接口。如果使用的windows和linux都是物理主機的話,那麼windows應該看"本地連接"這個網絡接口,也就是ping -6 $linux_ipv6address時,linux的ipv6地址應該加上%和"本地連接"網絡接口的index.
Windows>ipconfig /all
Ethernet adapter VMware Network Adapter VMnet1:
Connection-specific DNS Suffix . :
Description . . . . . . . . . . . : VMware Virtual Ethernet Adapter for
Physical Address. . . . . . . . . : 00-50-56-C0-00-01
Dhcp Enabled. . . . . . . . . . . : No
IP Address. . . . . . . . . . . . : 192.168.0.1
Subnet Mask . . . . . . . . . . . : 255.255.255.0
IP Address. . . . . . . . . . . . : fe80::250:56ff:fec0:1%5
Default Gateway . . . . . . . . . :
DNS Servers . . . . . . . . . . . : fec0:0:0:ffff::1%3
fec0:0:0:ffff::2%3
fec0:0:0:ffff::3%3
Linux>ifconfig -a
-
eth0 Link encap:Ethernet HWaddr 00:0C:29:DA:0A:AA
inet addr:192.168.0.3 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:feda:aaa/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:69 errors:0 dropped:0 overruns:0 frame:0
TX packets:95 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:7140 (6.9 KiB) TX bytes:14550 (14.2 KiB)
Interrupt:67 Base address:0x2024