为什么即使 sysctl 值设置为这样,我也无法禁用 IPv6 自动配置?

为什么即使 sysctl 值设置为这样,我也无法禁用 IPv6 自动配置?

为什么即使 sysctl 值设置为这样,我也无法禁用 IPv6 自动配置?

net.ipv6.conf.default.autoconf = 0
net.ipv6.conf.default.accept_ra = 0
net.ipv6.conf.all.accept_ra = 0
net.ipv6.conf.all.autoconf = 0
net.ipv6.conf.enp2s0.accept_ra = 0
net.ipv6.conf.enp2s0.autoconf = 0
net.ipv6.conf.enp2s0.use_tempaddr = 0
net.ipv6.conf.all.use_tempaddr = 0
net.ipv6.conf.default.use_tempaddr = 0

感谢您的帮助。

答案1

由于我不清楚的原因,我发现 netplan 需要对 accept_ra 进行明确配置,无论 sysctl 值中设置了什么,例如:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      accept-ra: false
      addresses:
        - xxx.xxx.xx.xx/22

并使用 应用新配置netplan try。无需重新启动。

我之前使用的是 Ubuntu 18.04,但我认为 20.04 也是一样的。

答案2

如果您正在使用 Netplan(Ubuntu 自 Ubuntu 18.04 起默认使用)并且只想禁用隐私地址(RFC 8981,以前的 RFC 4941),那么在您的 Netplan 配置文件(例如/etc/netplan/00-installer-config.yaml)中,将相关网络接口的ipv6-privacy参数设置为false/ no,如下例所示:

# This is the network config written by 'subiquity'
network:
  version: 2
  ethernets:
    eth0:
      accept-ra: yes
      ipv6-privacy: no

如果您既不想使用 SLAAC 来响应 RA 的接收,也不想使用 DHCPv6,则应改为设置accept-rafalse/ no。然后,您必须通过以下方式静态设置地址列表addresses并通过物体routes

如果您想使用 RA 的收据来设置路由,但不通过 SLAAC 设置地址,那么您应该accept-ra完全不指定并依靠 sysctl 来配置所需的行为;请参阅文档(来自上面第一个链接指向的部分,重点是我的):

  • accept-ra(布尔值)

接受路由器通告,内核将自行配置 IPv6。启用时,接受路由器通告。禁用时,不响应路由器通告。如果未设置,则使用主机内核默认设置。

相关内容