如何永久禁用IPv6?

如何通过终端命令禁用IPv6系统?

我读过编辑/etc/modprobe.d/aliases并替换:

alias net-pf-10 ipv6 

有:

 alias net-pf-10 off alias ipv6 off 

这是否可以安全应用并在重新启动后永久禁用ipv6?

/etc/sysctl.conf以下行后,我成功禁用了IPv6:

 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 

还运行此命令以加载更改

 sudo sysctl -p 

如果您的PC在启动时没有加载/etc/sysctl.conf(对我来说就是这种情况),则需要从grub中禁用IPv6。 Linux内核有一个名为“ipv6.disable = 1”的引导选项,它禁用启动时的IPv6。

要编辑引导选项,请使用任何文本编辑器以root用户身份编辑“/ etc / default / grub”:

 sudo nano /etc/default/grub 

找到包含“GRUB_CMDLINE_LINUX_DEFAULT”的行:

 GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" 

将“ipv6.disable = 1”添加到引导选项,然后保存您的grub文件:

 GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1 quiet splash" 

最后,更新grub:

 sudo update-grub 

Carvalho的答案包括关于必须运行sudo sysctl -P的评论对我帮助最大。

但是,至少在我的情况下:

 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf..disable_ipv6 = 1 

似乎第二行是必要的。

也许这与我使用TP-Link Archer T2U的事实有关,为此我必须从源代码定制构建驱动程序。
我的假设是,因此, 不算作“ all ”之一。
因此,简而言之,如果您已定制添加(自定义)网络驱动程序, net.ipv6.conf.all.disable_ipv6 = 1可能不足以禁用IPv6网络。

但不得不承认,我没有试过这条线
net.ipv6.conf.default.disable_ipv6 = 1

以下是检查计算机上是否启用了ipv6的方法

 test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready" 

如果你看到

 Running kernel is IPv6 ready 

它已启用。

如果你看不到输出,那就不是。

如果此页面上的其他答案不适合您,请禁用ipv6,黑名单ipv6 all-together。 为此,请使用以下命令:

 echo 'blacklist ipv6' | sudo tee -a '/etc/modprobe.d/blacklist.local' >/dev/null 

此外,这也可能有所帮助:

 echo 'install ipv6 /bin/true' | sudo tee -a '/etc/modprobe.d/blacklist.local' >/dev/null 

重新启动以使更改生效。 要在启动后检查它是否已启用,请再次运行此命令:

 test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready" 

应该没有输出。

单击此处获取有关如何在引导时禁用IPV6的信息。

如果您使用的是Ubuntu的现代版本(我是16.04 LTS),那么您可以使用这个整洁的解决方案:

创建包含以下文本的/etc/sysctl.d/60-ipv6-disable.conf

 net.ipv6.conf.all.disable_ipv6 = 1 net.ipv6.conf.default.disable_ipv6 = 1 net.ipv6.conf.lo.disable_ipv6 = 1 

运行service procps start