所以我從安裝開始就有 ipv4 正常運作(這很明顯),但我遇到的一個痛點是有時候 Windows 或 Android 會選擇用 ipv6 而不是 ipv4。
我的 ISP 提供的數據機給了我一個 /56,目前我不想讓我的 bridge 容器拿到全球可路由的 IP。這就是我這樣設定的全部原因。
所以我讓 docker 支援 ipv6
"experimental": false,
"ipv6": true,
"fixed-cidr-v6": "fd00:69:420:8::/64",
"ip6tables": true
我建立了一個給需要容器用的網路。
docker network create \
--driver "bridge" \
--opt "encrypted" \
--scope "local" \
--subnet "172.27.1.0/24" \
--subnet "fd00:69:420:42::/64" \
--ipv6 \
--attachable \
"external_edge"
相關的容器會拿到 172.27.1.0/24 和 fd00:69:420:42::/64 的 IP。
eth0 Link encap:Ethernet HWaddr 02:42:AC:1B:01:06
inet addr:172.27.1.6 Bcast:172.27.1.255 Mask:255.255.255.0
inet6 addr: fd00:69:420:42::8/64 Scope:Global
inet6 addr: fe80::42:acff:fe1b:106/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:207924 errors:0 dropped:0 overruns:0 frame:0
TX packets:223200 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:32793948 (31.2 MiB) TX bytes:29743646 (28.3 MiB)
容器內部向外連線看起來沒問題。
TheVault:/# ping -4 google.ca
PING google.ca (142.251.32.67): 56 data bytes
64 bytes from 142.251.32.67: seq=0 ttl=118 time=20.570 ms
64 bytes from 142.251.32.67: seq=1 ttl=118 time=21.572 ms
^C
--- google.ca ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 20.570/21.071/21.572 ms
TheVault:/# ping -6 google.ca
PING google.ca (2607:f8b0:400b:804::2003): 56 data bytes
64 bytes from 2607:f8b0:400b:804::2003: seq=0 ttl=117 time=20.918 ms
64 bytes from 2607:f8b0:400b:804::2003: seq=1 ttl=117 time=13.735 ms
64 bytes from 2607:f8b0:400b:804::2003: seq=2 ttl=117 time=21.750 ms
^C
--- google.ca ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 13.735/18.801/21.750 ms
但我無法從外部連到服務。
ipv4 沒問題 https://thevault.local:9043/#!/3/docker/dashboard
ipv6 不行 https://[fe80::265e:beff:fe6b:ae54]:9043/#!/3/docker/dashboard 或 https://[2607::]:9043/#!/3/docker/dashboard
Bridge 到 host 以及 host webUI 本身在 https://[fe80::265e:beff:fe6b:ae54]/ 或 https://[2607::]/ 是可以的。
所以明確來說,從我這邊進到 NAS 的 6to6 路由沒成功。
我應該會在 ip6tables -t mangle --list 看到什麼嗎?
-t filter 和 -t nat 都很滿,而且我容器裡有 ipv6 連線,所以我覺得我都設對了。