[原创]通过公网IPV6 IP访问虚拟机里面的docker服务
方向与思路
- 通过IPV6解决内外网访问问题
- 打通IPV6链路访问可行方案
- 开启本地虚拟机和 docker IPV6功能
- IPV6动态解析DDNS-GO
- 解决网络问题好帮手chatGPT
实践内容
- Docker镜像架设的服务一般有公网IP可以通过ipv4访问,但是没有公网ipV4的网络环境就不能访问,突破这个限制是要利用公网的IPV6地址去访问,前提是宽带要改桥接模式由路由器拨号
- 检查是否获得公网IPV6地址,通过该网站检测:http://test-ipv6.com
- Docker 开启IPV6访问配置
centos系统修改daemon.json
文件,如果该文件不存在,可以手动创建:sudo nano /etc/docker/daemon.json
{
"ipv6": true,
"fixed-cidr-v6": "fd00::/80"
}
重启 Docker 守护程序:
sudo systemctl restart docker
确认 Docker 守护程序已经开始监听 IPv6:
sudo netstat -tulpen | grep docker
- 虚拟机开启IPV6
NAT设置里面开启IPV6,但是端口转发里面不显示IPV6
如果你在WIN系统使用了
netsh interface portproxy add v6tov4 listenaddress=[::1] listenport=端口 connectaddress=127.0.0.1 connectport=端口 protocol=tcp
netsh interface portproxy 命令将 IPv6 转发到 IPv4,那么默认情况下只有本地回环地址 [::1]
才能访问转发的服务,即 [::1]:端口
可以访问,而公网 IPv6 地址不能访问。
要允许外部 IPv6 地址访问转发的服务,你需要将 listenaddress 参数设置为 ::,这样就可以监听所有 IPv6 地址,而不仅仅是本地回环地址。命令如下:
netsh interface portproxy add v6tov4 listenaddress=:: listenport=端口 connectaddress=127.0.0.1 connectport=端口 protocol=tcp
可以通过
netsh interface portproxy show all
查看是否成功添加,这样就可以通过 [公网ipv6]:端口
访问转发的服务了。注意要确保你的防火墙已经开放了对该端口的访问。
- 开启IPV6 DDNS,实现 IPV6域名+端口访问docker服务
- 推荐使用DDNS-GO
项目地址:https://github.com/jeessy2/ddns-go - 参考:chatGPT
https://chat.openai.com/chat