IPv6 link-local address format

后端 未结 3 1606
北海茫月
北海茫月 2020-12-06 05:44

I am working on a project related to networking/compression. One of the machines is Windows Vista, which already has IPv6 configured.

When I try ipconfig

相关标签:
3条回答
  • 2020-12-06 06:13

    The %10 after the address is called the scope zone. When you use link-local IPv6 addresses, the scope zone is required so that the system knows which interface to send the packet out on.

    On Windows, if you issue the netsh interface ipv6 show addresses command, you'll see the addresses assigned to the system complete with their zone IDs. Notice that the zone IDs match the interface index. For example:

    Interface 22: VirtualBox Host-Only Network
    
    Addr Type  DAD State   Valid Life Pref. Life Address
    ---------  ----------- ---------- ---------- ------------------------
    Other      Preferred     infinite   infinite fe80::15c3:6bea:aaac:a015%22
    

    This address is scoped %22 because it is on an interface whose index is 22. Similarly, on Linux, you might see a link-local address like fe80::15c3:6bea:aaac:a016%eth0. The format of the zone ID is unique to each individual machine running IPv6, which is why it might be different if you try the ping from the other system.

    For example, if you have:

    System A (Windows): fe80::15c3:6bea:aaac:a015%22
    System B (Linux):   fe80::15c3:6bea:aaac:a016%eth0
    

    ... and you want to ping the Linux box from the Windows box, you cannot do ping fe80::15c3:6bea:aaac:a016%eth0. But you can do ping fe80::15c3:6bea:aaac:a016%22. This is the problem. Link-local addresses can be tricky in this way.

    Try specifying the correct zone ID. That is, when you do your ping fe80::9dc8:72fa:aacd:76e2%10, first do netsh interface ipv6 show addresses on the machine you are pinging from, and change the %10 to the interface index for whichever interface you want to use on the source system.

    If the machine you are pinging from is Linux, you will have to do ping6 -I eth0 fe80::9dc8:72fa:aacd:76e2 (assuming the other system is on eth0), because the Linux command-line utility does not support the % way of specifying the zone (the last time I checked, anyway).

    Ideally you should set up an IPv6-capable router on your network to do router advertisements, so that you can use stateless address auto-configuration (SLAAC) and get global unicast addresses. Then this will not be an issue.

    0 讨论(0)
  • 2020-12-06 06:13

    The number after % is the interface name. if you open the status->detail of your network interface, you will see the ipv6 link-local address, with the %xx at the end of the address, which is the index of the interface, in case you want to find the index for some application. The System Information or ipconfig might just give you different index numbers, at least on my Windows 7 Pro, which is very confusing. The description you get from the OS could also be wrong.

    0 讨论(0)
  • 2020-12-06 06:27

    you cannot ping ipv6 addresses with the classic ping utility, only ipv4 addresses. linux has a commandline tool called ping6 to ping ipv6 addresses, windows probably has something similar. a little research told me that windows uses ping -6 for pinging ipv6 addresses.

    0 讨论(0)
提交回复
热议问题