17 在我的Linux机器上,我有各种守护程序可以绑定到上所有启用IPv6的接口::。当他们这样做时,Linux将IPv4请求发送到映射为例如的守护程序::ffff:198.51.100.37。 相反,当守护程序绑定到时,我希望IPv4连接被拒绝,仅IPv6连接被接受::。要接收IPv4连接,我希望守护程序必须显式绑定到0.0.0.0(以及::)。 换句话说,我想只在IPv6上而不是在IPv4上运行服务。 有没有办法做到这一点? linux ipv6 — 迈克尔·汉普顿 source
22 这由net.ipv6.bindv6onlysysctl 控制。将以下内容添加到/etc/sysctl.conf并运行sudo sysctl -p以实现更改。 net.ipv6.bindv6only=1 应用程序还可以显式仅绑定到IPv6地址,而不能全局更改此地址,例如,nginx具有ipv6only该listen指令的选项。这对应于的IPV6_V6ONLY选项setsockopt()。 — 米高尔文 source 幸运的是,我发现该应用程序(在本例中为OpenSSH)在设置时已经在套接字上设置了IPV6_V6ONLY,ListenAddress ::因此我无需诉诸使用sysctl(并重新配置其他所有内容)。 — 迈克尔·汉普顿
ListenAddress ::
因此我无需诉诸使用sysctl(并重新配置其他所有内容)。