MacOS – How to configure ipv6 on Mac OS X to ping its own address

ipv6macos

I'm trying to configure ipv6 on my local wifi network. I've already succeeded with ipv6 from my router (Zyxel Keentic Giga) to ipv6 internet via built-in 6to4 tunnels and the router can ping6 to remote hosts. Also, ipv6 works over the ethernet cable, and I can reach ipv6 internet. The problem is with my local network over wifi.

On my Mac OS X 10.9.4 I try to ping its own address, and I get nothing:

$ ping6 -n fe80::bae8:56ff:fe1b:d57c%en0
PING6(56=40+8+8 bytes) fe80::bae8:56ff:fe1b:d57c%en0 --> fe80::bae8:56ff:fe1b:d57c%en0
^C
--- fe80::bae8:56ff:fe1b:d57c%en0 ping6 statistics ---
5 packets transmitted, 0 packets received, 100.0% packet loss

Or this:

$ ping6 -n -I en0 fe80::bae8:56ff:fe1b:d57c%en0
ping6: UDP connect: Network is down

Or this:

$ ping6 -n fe80::bae8:56ff:fe1b:d57c
ping6: UDP connect: No route to host

Here, en0 is my wifi interface, and fe80::bae8:56ff:fe1b:d57c is the address taken from ifconfig or System Preferences pane.

Same happens when I try to ping6 router's address.

Same happens when I use %lo0 instead of %en0.

Curiously, ipv6 localhost is working fine:

$ ping6 ::1
PING6(56=40+8+8 bytes) ::1 --> ::1
16 bytes from ::1, icmp_seq=0 hlim=64 time=0.185 ms
^C
--- ::1 ping6 statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 0.185/0.185/0.185/0.000 ms

Even more curiously, it works fine via the ethernet cable: both fe80:: address and router address are reachable with ping6, and internet works over ipv6. But not WiFi.

Firewall is disabled. All settings are default, which usually means "automatically". Setting them manually or setting ipv6 address to "link-local" changes nothing.

The question: what do I do wrong? How to make ipv6 work on my Mac OS X?

Here is some detailed information below:


$ ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 16384
    options=3<RXCSUM,TXCSUM>
    inet6 ::1 prefixlen 128 
    inet 127.0.0.1 netmask 0xff000000 
    inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1 
    nd6 options=1<PERFORMNUD>
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
stf0: flags=0<> mtu 1280
en0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether b8:e8:56:1b:d5:7c 
    inet 192.168.1.11 netmask 0xffffff00 broadcast 192.168.1.255
    inet6 fe80::bae8:56ff:fe1b:d57c%en0 prefixlen 64 scopeid 0x4 
    nd6 options=1<PERFORMNUD>
    media: autoselect
    status: active
en1: flags=8963<UP,BROADCAST,SMART,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
    options=60<TSO4,TSO6>
    ether 32:00:18:f6:a0:00 
    media: autoselect <full-duplex>
    status: inactive
bridge0: flags=8822<BROADCAST,SMART,SIMPLEX,MULTICAST> mtu 1500
    options=63<RXCSUM,TXCSUM,TSO4,TSO6>
    ether ba:e8:56:b1:21:00 
    Configuration:
        id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
        maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
        root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
        ipfilter disabled flags 0x2
    member: en1 flags=3<LEARNING,DISCOVER>
            ifmaxaddr 0 port 5 priority 0 path cost 0
    nd6 options=1<PERFORMNUD>
    media: <unknown type>
    status: inactive
p2p0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 2304
    ether 0a:e8:56:1b:d5:7c 
    media: autoselect
    status: inactive
vboxnet0: flags=8842<BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 0a:00:27:00:00:00 
vboxnet1: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 0a:00:27:00:00:01 
    inet 192.168.59.3 netmask 0xffffff00 broadcast 192.168.59.255
vboxnet2: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
    ether 0a:00:27:00:00:02 
    inet 192.168.33.1 netmask 0xffffff00 broadcast 192.168.33.255

$ netstat -rn
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.1.1        UGSc           13        0     en0
127                127.0.0.1          UCS             0     4995     lo0
127.0.0.1          127.0.0.1          UH              6   875559     lo0
169.254            link#4             UCS             0        0     en0
192.168.1          link#4             UCS             3        0     en0
192.168.1.1        4e:5d:4e:4f:11:b0  UHLWIir        14     1014     en0   1185
192.168.1.11       127.0.0.1          UHS             0        0     lo0
192.168.1.15       e8:8d:28:54:41:de  UHLWIi          3      608     en0   1186
192.168.1.17       54:e4:3a:2:d8:e2   UHLWIi          5     4449     en0    825
192.168.33         link#10            UC              1        0 vboxnet
192.168.59         link#9             UC              1        0 vboxnet
192.168.59.3       a:0:27:0:0:1       UHLWIi          1      551     lo0

Internet6:
Destination                             Gateway                         Flags         Netif Expire
::1                                     ::1                             UHL             lo0
fe80::%lo0/64                           fe80::1%lo0                     UcI             lo0
fe80::1%lo0                             link#1                          UHLI            lo0
fe80::%en0/64                           link#4                          UCI             en0
fe80::12:c10:f6f1:69c3%en0              link#4                          UHLWI           en0
fe80::bae8:56ff:fe1b:d57c%en0           b8:e8:56:1b:d5:7c               UHLI            lo0
ff01::%lo0/32                           ::1                             UmCI            lo0
ff01::%en0/32                           link#4                          UmCI            en0
ff02::%lo0/32                           ::1                             UmCI            lo0
ff02::%en0/32                           link#4                          UmCI            en0

$ ndp -an
Neighbor                        Linklayer Address  Netif Expire    St Flgs Prbs
fe80::1%lo0                     (incomplete)         lo0 permanent R      
fe80::12:c10:f6f1:69c3%en0      (incomplete)         en0 expired   N      
fe80::bae8:56ff:fe1b:d57c%en0   b8:e8:56:1b:d5:7c    en0 permanent R

Best Answer

Those packets are either blocked or corrupted by a network appliance or OS X itself (pfctl).

If you are certain that Stealth Mode is disabled I would launch a packet capture with Wireshark and see if you get anything back from your ping6.

If you have an other computer I would try to ping6 :

Mac WiFi <=> router <=> PC Ethernet

Mac WiFi <=> router <=> PC WiFi

PC WiFi <=> router <=> Mac WiFi

PC WiFi <=> router <=> Mac Ethernet

Mac Ethernet <=> router <=> PC Ethernet

It would help you to figure is Mac is not able to craft/receive ping6 packets over WiFi, or if the issue is located to the router. You can also check the router firewall logs to see wether the firewall block those probes.