I have an IPv6 device with link local addressfe80::204:9fff:fe04:7fb5 (output of ifconfig is below). My machine has an address fe80::d939:2d31:6fe2:c203. I tried to ping both ways (from machine to device and device from machine) but all I get is Destination unreachable: Address unreachable (Exact output is provided below).

I spent quite some time looking at different forums trying to figure out what is the issue, but wasn't able to find an answer. I also should note that I'm not very familiar with IPv6. I also did a lot of reading on the topic and just not sure if there is an issue with the settings.

ifconfig output from a device:

eth2      Link encap:Ethernet  HWaddr 00:04:9f:04:7f:b5
          inet6 addr: fe80::204:9fff:fe04:7fb5/64 Scope:Link
          inet6 addr: 2001:c001:5afe:b1::e20:d001/64 Scope:Global
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:23 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:1898 (1.8 KiB)

ifconfig output from my machine:

enp0s31f6: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet6 fe80::d939:2d31:6fe2:c203  prefixlen 64  scopeid 0x20<link>
        ether 54:e1:ad:92:26:52  txqueuelen 1000  (Ethernet)
        RX packets 545  bytes 62724 (61.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 4000  bytes 460567 (449.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 16  memory 0xec200000-ec220000

ping output from machine to device

ping6 -I enp0s31f6 fe80::204:9fff:fe04:7fb5
ping6: Warning: source address might be selected on device other than enp0s31f6.
PING fe80::204:9fff:fe04:7fb5(fe80::204:9fff:fe04:7fb5) from :: enp0s31f6: 56 data bytes
From fe80::d939:2d31:6fe2:c203%enp0s31f6: icmp_seq=1 Destination unreachable: Address unreachable
From fe80::d939:2d31:6fe2:c203%enp0s31f6: icmp_seq=2 Destination unreachable: Address unreachable
From fe80::d939:2d31:6fe2:c203%enp0s31f6: icmp_seq=3 Destination unreachable: Address unreachable

ping output from device to machine

ping6 -I eth2 fe80::d939:2d31:6fe2:c203
PING fe80::d939:2d31:6fe2:c203(fe80::d939:2d31:6fe2:c203) from fe80::204:9fff:fe04:7fb5%eth2 eth2: 56 dat
a bytes
From fe80::204:9fff:fe04:7fb5%eth2 icmp_seq=1 Destination unreachable: Address unreachable
From fe80::204:9fff:fe04:7fb5%eth2 icmp_seq=2 Destination unreachable: Address unreachable
From fe80::204:9fff:fe04:7fb5%eth2 icmp_seq=3 Destination unreachable: Address unreachable
  • I havn't done much with ip6 myself. But could you post the output from your network config from both devices. I don't see a link local for either of your devices. Plus below appears that the device you are trying to connect to has a teredo or global address: > inet6 addr: 2001:c001:5afe:b1::e20:d001/64 Can you ping6 it? can you ping6 ::1 on either device? Additionally, how are you connecting to the device from your pc? Are you using a router/switch? Or a direct link using an ethernet cable? If so, is it crossover or straight through cable? – Mr_____T May 22 at 1:18
  • 2
    Instead of using -I option, use the normal format for link-local addresses including the scope ID, e.g.: ping6 fe80::204:9fff:fe04:7fb5%enp0s31f6 – Michael Hampton May 22 at 2:24
  • I've finally found the references I was looking for and realised there were minor details which pushed my answer way off. Apologies for the misdirection. – Philip Couling May 22 at 5:26

[You should check your firewall/ip6tables rules. That should just work -- assuming, of course, that the two devices are connected directly]

When pinging a link-local ipv6 address, you could also include the link specification via the %-syntax:

ping6 fe80::dfef:2fb9:b91c:89a0%l_br0
PING fe80::dfef:2fb9:b91c:89a0%l_br0(fe80::dfef:2fb9:b91c:89a0%l_br0) 56 data bytes
64 bytes from fe80::dfef:2fb9:b91c:89a0%l_br0: icmp_seq=1 ttl=64 time=0.615 ms

(notice the ...%l_br0; l_br0 is the name of my bridge; you'll have to use ...%enp0s31f6 or ...%eth2 with your addresses).

When using netcat, etc you'll have to use the % syntax as they have no way to specify the interface as ping6 has via -I. Example, on a machine listen with:

nc -l fe80::dfef:2fb9:b91c:89a0%em0 8888

And connect from the other with:

nc fe80::dfef:2fb9:b91c:89a0%l_br0 8888

(the first machine with the em0 interface is running OpenBSD; the second with the l_br0 interface is running Linux).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.