对于给定接口永久禁用 IPv6?

对于给定接口永久禁用 IPv6?

我希望在特定接口上永久禁用 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

相关内容