Docker端口映射只有Ipv6端口导致Ipv4访问不通

本文涉及的产品
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Redis 版,经济版 1GB 1个月
简介: Docker端口映射只有Ipv6端口导致Ipv4访问不通

前言


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

23abbc6cb0e149e18d77d83bdaeef9e2.png


正文

端口检测 lsof

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

Dev


a2a4db6acccd4c55ae365a898bfba592.png

Test


0748f418097247fe95529135417abbe3.png

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


容器状态 docker ps


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

Dev

a222da3a1f614784a4e4bc21dc3b7f5a.png

Test


85dcdb01318f4335b882c76c299bb8f8.png

可以看到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 查看:


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:

net.ipv4.ip_forward = 1


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

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2月前
|
安全 网络协议 网络安全
端口转发:解锁网络访问的新维度
端口转发技术,简化网络数据流,用于家庭至企业服务器场景。它隐藏内部网络服务,提供远程访问、个人网站公开、NAT穿透及安全的VPN连接。设置涉及路由器管理界面,添加转发规则,但需注意安全风险,仅开放必要端口并加强内部安全措施。了解和善用端口转发,提升网络服务可达性与安全性。
144 5
|
21天前
|
人工智能 Serverless API
函数计算产品使用问题之如何在一个Docker容器内运行一个持续监听特定端口的应用程序
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
24天前
|
SQL 关系型数据库 分布式数据库
PolarDB产品使用问题之怎么对外网提供可访问域名端口
PolarDB产品使用合集涵盖了从创建与管理、数据管理、性能优化与诊断、安全与合规到生态与集成、运维与支持等全方位的功能和服务,旨在帮助企业轻松构建高可用、高性能且易于管理的数据库环境,满足不同业务场景的需求。用户可以通过阿里云控制台、API、SDK等方式便捷地使用这些功能,实现数据库的高效运维与持续优化。
|
7天前
|
网络协议 Docker 容器
Docker——如何修改运行中容器的映射端口
Docker——如何修改运行中容器的映射端口
9 0
|
1月前
|
前端开发 应用服务中间件 nginx
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
网页设计,若依项目修改(It must be done)01----若依打包位置,nginx代理前端静态资源和后端接口,就是怎样设置转载,访问固定端口,让他访问其他资料的配置文件,访问/,给你那些
|
1月前
|
JavaScript Linux 网络安全
若依修改,若依启动之后,网页端无法访问接口,宝塔和云服务器的端口都要放开,就好了,软件开发常见流程,后台端口就可以访问了
若依修改,若依启动之后,网页端无法访问接口,宝塔和云服务器的端口都要放开,就好了,软件开发常见流程,后台端口就可以访问了
|
2月前
|
网络协议 安全 Docker
windows环境下的设置docker远程访问(开放2375端口)
windows环境下的设置docker远程访问(开放2375端口)
332 0
|
28天前
|
弹性计算 应用服务中间件 Linux
阿里云服务器开放端口完整图文教程
笔者近期开发完成的服务端程序部署在阿里云的ECS云服务器上面,一些应用程序配置文件需要设置监听的端口(如Tomcat的8080、443端口等),虽然通过CentOs 7系统的的「防火墙」开放了对应的端口号,任然无法访问端口号对应的应用程序,后面了解到原来还需要设置云服务器的「安全组规则」,开放相应的端口权限,服务端的接口才能真正开放。
223 1
阿里云服务器开放端口完整图文教程
|
20天前
|
弹性计算 运维 数据安全/隐私保护
云服务器 ECS产品使用问题之如何更改服务器的IP地址或端口号
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
21天前
|
网络协议 Linux Unix
面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解
面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解
29 0
面试官:服务器最大可以创建多少个tcp连接以及端口并解释下你对文件句柄的理解