禁用 IPv4 映射 IPv6

禁用 IPv4 映射 IPv6

我在 IPv4 上运行服务,但有时,似乎是随机的,该服务会使用 TCPv6 套接字(我用 监视它ss -s)。我想避免这种情况,禁用任何 IPv6 连接。

我尝试通过输入 /etc/sysctl.conf 来禁用它:

net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

然后重新启动 sysctl sudo sysctl -p。但是,尽管已禁用 IPv6,服务仍然会使用 IPv6:

cat /proc/sys/net/ipv6/conf/all/disable_ipv6
1

我发现解决这个问题的唯一办法就是放下并抬起接口

sudo ifconfig eth1 down
sudo ifconfig eth1 up

注意:没有为任何接口分配 IPv6 地址。此外,我无法重新启动机器。

有什么解决办法吗?

答案1

您可以通过编辑 /etc/default/grub 从内核中完全禁用 IPv6。找到以下行:

GRUB_CMDLINE_LINUX_DEFAULT=""

替换为:

GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1"

然后运行:

update-grub

然后重新启动。

答案2

由于没有重启限制,我在这里采用了跳出思维定式的方法。也许如果您使用某种容器(例如 docker 或 lxc),则您的服务允许您禁用容器的 ipv6。

例如,Docker 守护进程有一个“--ipv6=true|false”标志

相关内容