Some more investigation results (after refreshing my IPv6 know-how):
First, the problem is not with the specific LAN device, but with WiFi vs LAN. If I connect the same device through WiFi, IPv6 is working. If I connect through wired LAN, IPv6 is not working.
Specifically, when connecting through LAN I can ping the router using the link local address:
root@OpenWrt:~# ip addr show br-lan
5: br-lan: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP qlen 1000
link/ether 84:a4:23:06:4f:fa brd ff:ff:ff:ff:ff:ff
inet 192.168.1.1/24 brd 192.168.1.255 scope global br-lan
valid_lft forever preferred_lft forever
inet6 2001:8b0:7bab:b677::1/64 scope global dynamic noprefixroute
valid_lft 4883sec preferred_lft 4883sec
inet6 fdbb:473b:26a6::1/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 fe80::86a4:23ff:fe06:4ffa/64 scope link
valid_lft forever preferred_lft forever
# Elsewhere
root@vostro ~ [1]# ping -6 -c 1 fe80::86a4:23ff:fe06:4ffa
PING fe80::86a4:23ff:fe06:4ffa(fe80::86a4:23ff:fe06:4ffa) 56 data bytes
64 bytes from fe80::86a4:23ff:fe06:4ffa%eth1: icmp_seq=1 ttl=64 time=2.40 ms
--- fe80::86a4:23ff:fe06:4ffa ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 2.402/2.402/2.402/0.000 ms
but I cannot ping using the global unicast address:
root@vostro ~# ping -6 -c 1 2001:8b0:7bab:b677::1
PING 2001:8b0:7bab:b677::1(2001:8b0:7bab:b677::1) 56 data bytes
From 2001:8b0:7bab:b677:4eed:a8b1:eda0:ba2 icmp_seq=1 Destination unreachable: Address unreachable
--- 2001:8b0:7bab:b677::1 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms
The routing table on the LAN device seems correct though:
root@vostro ~# ip -6 route
::1 dev lo proto kernel metric 256 pref medium
2001:8b0:7bab:b677::/64 dev eth1 proto ra metric 100 pref medium # <--- this should be used, I think
fdbb:473b:26a6::/64 dev eth1 proto ra metric 100 pref medium
fdbb:473b:26a6::/48 via fe80::86a4:23ff:fe06:4ffa dev eth1 proto ra metric 100 pref medium
fe80::/64 dev eth1 proto kernel metric 100 pref medium
fe80::/64 dev rath proto kernel metric 256 pref medium
default via fe80::86a4:23ff:fe06:4ffa dev eth1 proto ra metric 100 pref medium
I do not think it's a firewall issue either, I have no IPv6 rules on the LAN device:
root@vostro ~# ip6tables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Similarly, the router can ping the LAN device on the link-local address, but not the global unicast address:
root@OpenWrt:~# ping -6 -c 1 fe80::1486:c933:4b71:62aa%br-lan
PING fe80::1486:c933:4b71:62aa%br-lan (fe80::1486:c933:4b71:62aa%5): 56 data bytes
64 bytes from fe80::1486:c933:4b71:62aa: seq=0 ttl=64 time=2.011 ms
--- fe80::1486:c933:4b71:62aa%br-lan ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 2.011/2.011/2.011 ms
root@OpenWrt:~# ping -6 -c 1 2001:8b0:7bab:b677:4eed:a8b1:eda0:ba2
PING 2001:8b0:7bab:b677:4eed:a8b1:eda0:ba2 (2001:8b0:7bab:b677:4eed:a8b1:eda0:ba2): 56 data bytes
--- 2001:8b0:7bab:b677:4eed:a8b1:eda0:ba2 ping statistics ---
1 packets transmitted, 0 packets received, 100% packet loss
Anyone an idea why communication between router and LAN only works with link local addresses?