当前位置: 首页>>技术问答>>正文


如何永久禁用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.<mydevice>.disable_ipv6 = 1

似乎第二行是必要的。

也许这与我使用TP-Link Archer T2U的事实有关,为此我必须从源代码定制构建驱动程序。我的假设是,因此,<mydevice>不算作“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"

应该没有输出。

Click here for info on how to disable IPV6 at boot.

第五种方案

如果您使用的是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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1859.html,未经允许,请勿转载。