在我的 Linux 机器上,我有各种守护进程,它们可以绑定到::
. 当他们这样做时,Linux 将 IPv4 请求发送到该守护进程,例如映射为::ffff:198.51.100.37
.
相反,我希望拒绝 IPv4 连接,并且当守护程序绑定到::
. 要接收 IPv4 连接,我希望守护程序必须显式绑定到0.0.0.0
(以及::
)。
换句话说,我想只在 IPv6 上运行服务,而不是在 IPv4 上运行。
有没有办法做到这一点?
mgo*_*ven 27
这是由net.ipv6.bindv6only
sysctl控制的。添加以下内容/etc/sysctl.conf
并运行sudo sysctl -p
以实现更改。
net.ipv6.bindv6only=1
Run Code Online (Sandbox Code Playgroud)
应用程序也可以明确地只绑定到 IPv6 地址,而不是全局更改它,例如,nginx 可以ipv6only
选择该listen
指令。这对应于 的IPV6_V6ONLY
选项setsockopt()
。