如何禁用 IPv4 映射的 IPv6?

如何禁用 IPv4 映射的 IPv6?

在我的 Linux 机器上,我有各种守护进程,它们可以绑定到 上所有启用 IPv6 的接口::。当它们这样做时,Linux 会将 IPv4 请求发送到该守护进程,例如,映射为::ffff:198.51.100.37

我希望守护进程绑定到 时,拒绝 IPv4 连接,只接受 IPv6 连接::。要接收 IPv4 连接,我希望守护进程必须明确绑定到0.0.0.0(以及::)。

换句话说,我想在 IPv6 上专门运行服务,而不是在 IPv4 上。

有办法实现这个吗?

答案1

这是由net.ipv6.bindv6onlysysctl 控制的。添加以下内容/etc/sysctl.conf并运行sudo sysctl -p以使更改生效。

net.ipv6.bindv6only=1

应用程序也可以明确地只绑定到 IPv6 地址,而不是全局更改,例如,nginx 可以ipv6only选择listen指令。这对应于IPV6_V6ONLY选项setsockopt()

相关内容