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.