Summary
Incoming IPV6 connection works on the pi but not on the Ubuntu.
Details
My home network is:
(internet)--|box|---+--------+
| |
|pi| |ubuntu|
/|\
- Pi serving as WiFi access point and hosting docker
- all connections are wired (RJ45) if that matters.
I have IPv4 access from outside just fine using NAT.
However, I can't access the Ubuntu server using a dedicated IPv6.
connection
accessing http://2001:0db8:0000:0000:ffff:xyz from a browser from ... to ...
All OK save from external to ubuntu.
local host |
Pi |
Ubuntu |
4G |
ubuntu |
✓ |
✓ |
(1) |
Pi |
✓ |
✓ |
✓ |
(1) I want to be able to connect to this host from outside.
I tested the connection from a python flask server on both hosts.
Outgoing connections to ipv6.google.com work fine.
I've redacted my IPv6 and local box address
host
lsb_release -a
ubuntu
Distributor ID: Ubuntu
Description: Ubuntu 20.04.4 LTS
Release: 20.04
Codename: focal
pi
Distributor ID: Raspbian
Description: Raspbian GNU/Linux 10 (buster)
Release: 10
Codename: buster
network interface
edited result of ip -6 address show dev $device
ubuntu
2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
inet6 2001:0db8:0000:0000:ffff:292c:2169:2be/64 scope global noprefixroute
valid_lft forever preferred_lft forever
inet6 2001:0db8:0000:0000:ffff:afce:b393:a1a6/64 scope global temporary dynamic
valid_lft 577013sec preferred_lft 58112sec
inet6 2001:0db8:0000:0000:ffff:7def:e93b:9721/128 scope global dynamic noprefixroute
valid_lft 50536sec preferred_lft 50536sec
inet6 2001:0db8:0000:0000:ffff:37af:30b9:1426/64 scope global temporary deprecated dynamic
valid_lft 491116sec preferred_lft 0sec
inet6 2001:0db8:0000:0000:ffff:63ae:6ede:cbcb/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 604458sec preferred_lft 604458sec
inet6 fe80::9b44:f31b:3c0d:9e07/64 scope link noprefixroute
valid_lft forever preferred_lft forever
pi
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
inet6 2001:0db8:0000:0000:ffff:7def:e93b:d67e/128 scope global dynamic noprefixroute
valid_lft 54268sec preferred_lft 54268sec
inet6 2001:0db8:0000:0000:ffff:ab8d:724e:d849/64 scope global dynamic mngtmpaddr noprefixroute
valid_lft 604397sec preferred_lft 604397sec
inet6 2001:0db8:0000:0000:ffff:c28:95b4:8/128 scope global
valid_lft forever preferred_lft forever
inet6 fe80::3448:1bbb:4a95:6158/64 scope link
valid_lft forever preferred_lft forever
V6 route
edited result of ip -6 route show
ubuntu
::1 dev lo proto kernel metric 256 pref medium
2001:0db8:0000:0000:ffff:292c:2169:2be dev enp2s0 proto kernel metric 256 pref medium
2001:0db8:0000:0000:ffff:7def:e93b:9721 dev enp2s0 proto kernel metric 100 pref medium
2001:0db8::/64 dev enp2s0 proto ra metric 100 pref medium
2001:0db8::/64 dev enp2s0 proto kernel metric 256 pref medium
fe80::/64 dev enp2s0 proto kernel metric 100 pref medium
default via fe80::defa:ult:box:local dev enp2s0 proto ra metric 20100 pref high
Pi
::1 dev lo proto kernel metric 256 pref medium
2001:0db8:0000:0000:ffff:c28:95b4:8 dev eth0 proto kernel metric 256 pref medium
2001:0db8::/64 dev eth0 proto ra metric 202 mtu 1500 pref medium
fe80::/64 dev eth0 proto kernel metric 256 pref medium
fe80::/64 dev wlan0 (and docker ...) proto kernel metric 256 pref medium
default via fe80::defa:ult:box:local dev eth0 proto ra metric 202 mtu 1500 pref medium
sysctl
I compared values from sysctl
< pi (eth0)
> ubuntu (enp2s0)
42d41
< net.ipv6.conf.eth0.rpl_seg_enabled = 0
43a43
> net.ipv6.conf.enp2s0.seg6_require_hmac = 0
48c48
< net.ipv6.conf.eth0.use_tempaddr = 0
---
> net.ipv6.conf.enp2s0.use_tempaddr = 2
51c51
< net.ipv6.neigh.eth0.base_reachable_time_ms = 30000000
---
> net.ipv6.neigh.enp2s0.base_reachable_time_ms = 30000
59c59
< net.ipv6.neigh.eth0.retrans_time_ms = 10000
---
> net.ipv6.neigh.enp2s0.retrans_time_ms = 1000
61,62c61,62
< net.ipv6.neigh.eth0.unres_qlen = 91
< net.ipv6.neigh.eth0.unres_qlen_bytes = 180224
---
> net.ipv6.neigh.enp2s0.unres_qlen = 101
> net.ipv6.neigh.enp2s0.unres_qlen_bytes = 212992
All other things tested are equal on both hosts.
Did I miss some obvious thing?