为什么即使 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-ra
为false
/ no
。然后,您必须通过以下方式静态设置地址列表addresses
并通过物体routes
。
如果您想使用 RA 的收据来设置路由,但不通过 SLAAC 设置地址,那么您应该accept-ra
完全不指定并依靠 sysctl 来配置所需的行为;请参阅文档(来自上面第一个链接指向的部分,重点是我的):
accept-ra
(布尔值)接受路由器通告,内核将自行配置 IPv6。启用时,接受路由器通告。禁用时,不响应路由器通告。如果未设置,则使用主机内核默认设置。