首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >docker里镜像用ipv6无法访问_虚拟服务器端口设置

docker里镜像用ipv6无法访问_虚拟服务器端口设置

作者头像
全栈程序员站长
发布2022-09-27 15:34:20
发布2022-09-27 15:34:20
2.9K0
举报

前言

我有一个朋友, 他在Dev 和 Test 服务器用Docker 搭建了Redis 供项目使用, 然后今天Test 环境的Redis 端口访问不通了, 在服务上可以正常连接, 真是离了个大齐, 让我们试试排查排查问题;

正文

端口检测 lsof

已确认在本地用 telnet ip 6381 访问不通, 那就上服务上看看端口情况

Dev

Test

Dev环境同时映射到Ipv6和Ipv4端口, Test环境仅映射到Ipv6, 那基本上就可以断定是环境问题了

容器状态 docker ps

既然端口映射有问题, 就先看下容器的状态 Dev

Test

可以看到Dev同时映射了Ipv6和Ipv4, Test只映射了Ipv4, 这就能解释上面的情况了, 他说他搭建命令是一样的, emmm那就是环境问题, 看看Docker版本

Docker版本 docker -v

果然Test 版本是 Docker version 1.13.1, Dev 版本是Docker version 20.10.8, 这就能讲通为何同样的搭建命令但映射的不同;

但这又产生了一个新问题, 之前是这样是可以访问的, Ipv6 是可以兼容访问Ipv4的, Ipv4不能访问ipv6; 会不会是Ipv4的转发出了问题!

数据包转发 net.ipv4.ip_forward

当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包。这通常是路由器所要实现的功能;

执行 /sbin/sysctl net.ipv4.ip_forward 查看:

代码语言:javascript
复制
net.ipv4.ip_forward = 0

果然没开, 那就把这个转发打开

临时修改 net.ipv4.ip_forward

可以用 sysctl -w net.ipv4.ip_forward=1 或者 echo 1 > /proc/sys/net/ipv4/ip_forward

重启Redis 容器 docker restart redis, 可以访问通了! 那就把这个配置永久生效

永久修改 net.ipv4.ip_forward

vim 修改文件/etc/sysctl.conf:

代码语言:javascript
复制
net.ipv4.ip_forward = 1

保存后调用 sysctl -p 生效, ok问题解决;

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/183735.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
    • 端口检测 lsof
    • 容器状态 docker ps
    • Docker版本 docker -v
    • 数据包转发 net.ipv4.ip_forward
    • 临时修改 net.ipv4.ip_forward
    • 永久修改 net.ipv4.ip_forward
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档