I'm having trouble communicating with my virtual tap devices via ipv6. Essentially ping6 -I eth0 <tap interface link-local ipv6 address>
doesn't return anything. I can't even ping the host-facing endpoint of the tap:
[user ~]$ ping6 -I eth0 fe80::88a2:f6ff:fe6f:90cb
PING fe80::88a2:f6ff:fe6f:90cb(fe80::88a2:f6ff:fe6f:90cb) from fe80::4f3:9ff:fec9:2032%eth0 eth0: 56 data bytes
^C
--- fe80::88a2:f6ff:fe6f:90cb ping statistics ---
8 packets transmitted, 0 received, 100% packet loss, time 7162ms
and the tcpdump output from eth0:
20:54:00.658849 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 1
20:54:01.673920 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 2
20:54:02.698029 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 3
20:54:03.722004 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 4
20:54:04.745974 IP6 (flowlabel 0x1efcb, hlim 64, next-header ICMPv6 (58) payload length: 64) fe80::4f3:9ff:fec9:2032 > fe80::88a2:f6ff:fe6f:90cb: [icmp6 sum ok] ICMP6, echo request, seq 5
And as expected with the error the tcpdump from the tap device interface is empty. I'm able to ping eth0 from itself. I'm unable to ping eth0
from the tap interface w/ error connect: Network is unreachable
. However, this is a separate issue I believe as tcpdump indicates the pings aren't even reaching the tap device in the first place.
Here's my network setup
[user ~]$ ifconfig eth0
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 9001
inet 172.30.255.7 netmask 255.255.255.240 broadcast 172.30.255.15
inet6 2600:1f14:XXXX:XXXX:e134:ff0c:cccd:b262 prefixlen 128 scopeid 0x0<global>
inet6 fe80::4f3:9ff:fec9:2032 prefixlen 64 scopeid 0x20<link>
ether 06:f3:09:c9:20:32 txqueuelen 1000 (Ethernet)
[user ~]$ ifconfig tp-0ge-0000gf-0
tp-0ge-0000gf-0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 169.254.18.114 netmask 255.255.255.252 broadcast 0.0.0.0
inet6 fe80::88a2:f6ff:fe6f:90cb prefixlen 64 scopeid 0x20<link>
ether 8a:a2:f6:6f:90:cb txqueuelen 1000 (Ethernet)
and the current routes:
[user ~]$ ip -6 r s
2600:1f14:XXXX:XXXX:XXXX:ff0c:cccd:b262 dev eth0 proto kernel metric 256 expires 439sec pref medium
fe80::4f3:9ff:fec9:2032 dev eth0 metric 1024 pref medium
fe80::88a2:f6ff:fe6f:90cb dev tp-0ge-0000gf-0 metric 1024 pref medium
default via fe80::460:a1ff:fec3:9cb6 dev eth0 metric 1024 pref medium
and ip6tables filter table is letting everything through
[user ~]$ sudo 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
I have net.ipv6.conf.[inteface].forwarding
enabled on both the tap and eth0, and clearly ipv6 is enabled. If any other important kernel parameters come to mind i'll add them here.
This is on amazon linux 2, cat /etc/os-release
:
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
Let me know if there's any other information I should include. Any suggestions at all are much appreciated.