1
Ggmusic 273 天前 via iPhone
fixed-cidr-v6 的掩码大于 64 ,比如设置成 80 。这样宿主机才能设置路由指向 docker0 (这个路由需要确认下是不是 docker 能自行管理)。如果是需要让公网能通过 ipv6 访问容器服务,还需要在宿主机上配置 proxy_ndp 。有个内核参数,搭配 ip -6 neigh add 命令;或者试试 systemd-networkd 提供的用户态 proxyndp 。
|
2
rebecca554owen 243 天前
`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 子网 ``` |
3
godall OP @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 , 返回是正常的!相当于去掉了端口映射,直接端口访问了。!!! |
4
godall OP 同样
命令:curl 172.17.0.3:88 , 返回失败 命令:curl 172.17.0.3:80 , 返回是正常的!相当于去掉了端口映射,直接端口访问了。!!! |