在 CS/docker 中啟用可用的 IPV6

所以我從安裝開始就有 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 連線,所以我覺得我都設對了。