[原创]通过公网IPV6 IP访问虚拟机里面的docker服务

2023-02-25T14:54:00

方向与思路

  1. 通过IPV6解决内外网访问问题
  2. 打通IPV6链路访问可行方案
  3. 开启本地虚拟机和 docker IPV6功能
  4. IPV6动态解析DDNS-GO
  5. 解决网络问题好帮手chatGPT

实践内容

  1. Docker镜像架设的服务一般有公网IP可以通过ipv4访问,但是没有公网ipV4的网络环境就不能访问,突破这个限制是要利用公网的IPV6地址去访问,前提是宽带要改桥接模式由路由器拨号
  2. 检查是否获得公网IPV6地址,通过该网站检测:http://test-ipv6.com
  3. 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
  1. 虚拟机开启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]:端口 访问转发的服务了。注意要确保你的防火墙已经开放了对该端口的访问。

  1. 开启IPV6 DDNS,实现 IPV6域名+端口访问docker服务
  2. 推荐使用DDNS-GO
    项目地址:https://github.com/jeessy2/ddns-go
  3. 参考:chatGPT
    https://chat.openai.com/chat
当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »