解决无法访问服务器IPV6地址的问题

解决无法访问服务器IPV6地址的问题

场景:

  • 使用Redis、Mongo的可视化工具,通过服务器公网IP进行连接。每次请求都连接超时。

架构:

  • 服务器:CentOS 7
  • Redis、Mongo 创建在Docker容器中;

解决连接不上问题:

查看服务器的端口:

  • 执行:netstat -ntlp

    可以看出 这两个端口 都是绑定在ipv6地址上面

看看应用程序是否只能bind在ipv6上面:

  • 执行命令:sysctl net.ipv6.bindv6only

    net.ipv6.bindv6only = 0
    

    =0 ,可以看出并不是程序仅能bind ipv6上

看看ipv4是否能够转发:

  • 执行命令:sysctl net.ipv4.ip_forward

    net.ipv4.ip_forward = 0
    

    =0,可以看出ipv4不能够进行转发

在阿里云后台上,安全组织列表,出、入方向都是ipv4地址段访问;

找到了问题,将ipv4转发包进行配置就可以了。

解决方案:

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

2.将net.ipv4.ip_forward=1添加到sysctl.conf文件中

3.然后重启网络:

  • 执行命令:systemctl restart network

4.这样再次执行:sysctl net.ipv4.ip_forward

net.ipv4.ip_forward = 1

通过外网IP连接可视化工具都可以了。

总结:

访问云主机的时候是通过IPV4访问的,但是我的主机没有开启IPV4的IP包转发,导致我的Redis、Mongo因为bind在一个IPV6的地址上,所以接收不到任何IP包;

开启IPV4转发就OK了,有些服务器默认是不开启的,需要自行配置;

发布了147 篇原创文章 · 获赞 170 · 访问量 4万+

猜你喜欢

转载自blog.csdn.net/Fe_cow/article/details/102821377