有谁在 docke 上启用 ipv6 成功过?

256 天前
 godall
按照文档在/etc/docker/daemon.conf 文件添加一下内容:

{
"ipv6": true,
"fixed-cidr-v6": "2001:db8:1::/64",
"experimental": true,
"ip6tables": true
}
上面 v6 地址根据自己机器配置。

重启后,还是不正常啊,发现只有 ipv4 可以访问

docker run -p 80:80 traefik/whoami
550 次点击
所在节点    Docker
4 条回复
Ggmusic
256 天前
fixed-cidr-v6 的掩码大于 64 ,比如设置成 80 。这样宿主机才能设置路由指向 docker0 (这个路由需要确认下是不是 docker 能自行管理)。如果是需要让公网能通过 ipv6 访问容器服务,还需要在宿主机上配置 proxy_ndp 。有个内核参数,搭配 ip -6 neigh add 命令;或者试试 systemd-networkd 提供的用户态 proxyndp 。
rebecca554owen
226 天前
`cat /etc/docker/*`
```
{
"experimental": true,
"fixed-cidr-v6": "fd10::/80",
"ip6tables": true,
"ipv6": true,
"registry-mirrors": [
"https://ghcr.io"
]
}
```
这个地方一定不能写/64 ,然后新建子网的时候,还需要重新弄一个 ipv6 子网即可。
给一个 docker compose 示例你看看。
```
version: '3'
services:
openppp1: # 服务名,openppp2 对应 appsettings2.json ,多开的时候用上。
image: rebecca554owen/ppp:latest
container_name: openppp1 # 容器名,openppp2 对应 appsettings2.json ,多开的时候用上。
restart: always
cap_add:
- NET_ADMIN
devices:
- /dev/net/tun:/dev/net/tun
volumes:
- ./appsettings1.json:/app/appsettings.json # appsettings1.json ,用于区别接入多个服务端。
ports:
- "7891:8080" # bridge 模式,7891 端口对接第一个服务端,7892 端口对接第二个服务端互不干扰,也不会全局代理。
networks:
- openpppnetwork
command: ppp --mode=client --tun-static=yes --block-quic=no --set-http-proxy=yes # --tun-static=yes 或者 no ,按需修改,服务端未开启 udp 则不要选 yes 。

networks:
openpppnetwork:
driver: bridge
# enable_ipv6: true # docker 是否启用 ipv6 ,需要提前设置修改 /etc/docker/daemon.json 以便于支持 ipv6 。
ipam:
driver: default
config:
- subnet: 172.20.0.0/24 # 新建的 docker 桥接网络 ipv6 子网
# - subnet: 2001:db8:1::/64 # 新建的 docker 桥接网络 ipv6 子网
```
godall
215 天前
@rebecca554owen 谢谢,我发现在 ipv6 下面 docker run -p 88:80 xxx ,端口在 ipv6 下有问题的

命令:curl localhost:88 返回正常
Hostname: abc2
IP: 127.0.0.1
IP: ::1
IP: 172.17.0.3
IP: fd10::242:ac11:3
IP: fe80::42:acff:fe11:3
RemoteAddr: [fd10::1]:40854
GET / HTTP/1.1
Host: localhost:88
User-Agent: curl/7.29.0
Accept: */*

命令:curl localhost , 返回失败
curl: (7) Failed connect to localhost:80; Connection refused

命令 :curl -g [::1]:88 ,返回正常
命令 :curl -g [::1]:80 ,返回失败

----奇怪的来了------------
命令:curl -g [fd10::242:ac11:3]:88 , 返回失败
命令:curl -g [fd10::242:ac11:3]:80 , 返回是正常的!相当于去掉了端口映射,直接端口访问了。!!!
godall
215 天前
同样
命令:curl 172.17.0.3:88 , 返回失败
命令:curl 172.17.0.3:80 , 返回是正常的!相当于去掉了端口映射,直接端口访问了。!!!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1018465

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX