记录一次docker 只监听ipv6 导致无法访问

1、系统环境:

Ubuntu 18.04.1 LTS

Docker version 19.03.6

2、问题说明:

docker启动镜像后只监听ipv6,所以导致外网无法访问;用命令 netstat -nlp 查看端口信息:

root@VM-4-6-ubuntu:/# netstat -nlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0     :::8083              :::*               LISTEN      -

这里 :::8083即表示ipv6监听;这里简要做一下IP地址表示说明:

IP地址表示,IP地址有两个部分组成,net-id和host-id,即网络号和主机号。

127.0.0.1

127.0.0.1属于{127,}集合中的一个,所有的网络号为127的地址都被称为环回地址,所以环回地址不等价于127.0.0.1,后者只是环回地址的一份子,是包含关系,环回地址loop back。
相比于127.0.0.1,localhost 具有更多的意义,localhost是个域名,而不是一个ip地址。之所以我们经常把localhost与127.0.0.1认为同一个是因为我们使用的大多数电脑上都将localhost指向了127.0.0.1这个地址。

0.0.0.0

服务器端,通过0.0.0.0匹配所有服务器IP,如果进程监听0.0.0.0那么客户端访问服务器任何一个可达IP都可以使用此进程。
个人电脑未配置IP时表示本机地址
路由器表示默认路由

127.0.0.1是个环回地址,是IP,并不表示“本机”,0.0.0.0才是真正表示网路中的本地。
例:服务端绑定端口的时候一般选择绑定到0.0.0.0,这样用户可以通过多个本服务器的IP进行访问。
实际:服务器有内外网IP,一般财务系统绑定内网IP仅内部访问,OA绑定0.0.0.0内外网均可访问。

::

全0的IPV6地址,和IPV4的0.0.0.0一样,表示匹配多个IPV6地址。

用双冒号“::”表示一组0或多组连续的0,但只能出现一次,每项数字前导的0可以省略,省略后前导数字仍是0则继续。

2、解决方法:

目标是把ipv6监听改成ipv4监听,即改成这样:

在服务器上禁用IPv6,方法如下:

vim /etc/default/grub
#增加参数名为GRUB_CMDLINE_LINUX的值,即 ipv6.disable=1
GRUB_CMDLINE_LINUX="ipv6.disable=1 ..."
grub-mkconfig -o /boot/grub/grub.cfg
reboot

重启完成后查看结果:

修改成功!

猜你喜欢

转载自blog.csdn.net/Dengrz/article/details/111664801
今日推荐