我希望在特定接口上永久禁用 IPv6,因为它已损坏并且我关于超级用户的问题来解决它已经死了,那么我该怎么做呢?我已经添加了net.ipv6.conf.eth0.disable_ipv6=1
,/etc/sysctl.conf
但由于某种原因它不起作用。目前,我只是在每次打开电脑时使用 sysctl 命令来禁用它。
答案1
首先,编辑 /etc/default/grub 并找到以下行:
GRUB_CMDLINE_LINUX=""
并将该行改为这样(这将完全禁用 ipv6):
GRUB_CMDLINE_LINUX="ipv6.disable=1"
或者,要保持 ipv6 堆栈正常运行但禁用 ipv6 地址分配,您可以使用以下选项:
GRUB_CMDLINE_LINUX="ipv6.disable_ipv6=1"
最后,运行:
sudo update-grub
并重新启动以应用更改。
这将在内核级别禁用 ipv6,以便从一开始就不会启用它。
另外,进行以下更改后/etc/sysctl.conf
net.ipv6.conf.eth0.disable_ipv6 = 1
运行以下命令以应用更改:
sudo sysctl -p
最后,如果使用 sysctl.conf 中禁用 ipv6 的选项,您还需要确保在 /etc/hosts 中注释掉 ipv6。看这里https://wiki.archlinux.org/index.php/IPv6#Disable_functionity
答案2
grub 和 sysctl 解决方案都不适合我。我的猜测是 systemd 在启动期间重新启用了 ipv6。
所以我将 systemd 更改为只为我的en*
设备配置 ipv4:
sudo vim /etc/systemd/network/en-all.network
[Match]
Name=en*
[Network]
DHCP=ipv4
LinkLocalAddressing=ipv4