我们如何通过终端命令禁用整个IPv6系统?
我已阅读编辑/etc/modprobe.d/aliases 并替换为:
alias net-pf-10 ipv6
与:
alias net-pf-10 off
alias ipv6 off
这样使用安全吗,并且在重新启动后会永久禁用ipv6吗?
我们如何通过终端命令禁用整个IPv6系统?
我已阅读编辑/etc/modprobe.d/aliases 并替换为:
alias net-pf-10 ipv6
与:
alias net-pf-10 off
alias ipv6 off
这样使用安全吗,并且在重新启动后会永久禁用ipv6吗?
Answers:
将以下行放入/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
sudo sysctl -p
或重新引导以使更改生效。
net.ipv6.conf.wlan0.disable_ipv6 = 1
如果您的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
/proc/sys/net/ipv6/
留其可产生类似的问题X11 forwarding request failed
,因为sshd
试图绑定到非配置的IPv6接口。请注意,类似地,您可以在纯IPv6 VM上以这种方式摆脱IPv4。谢谢。
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
default
线路可能是这里的问题。如果在执行sysctl时在引导过程中尚未加载驱动程序,则它不包含在其中all
-但是设置默认值将意味着它在加载后会得到设置。
default
条目,并且必须配置特定设备才能成功禁用它。
这是检查计算机上是否启用ipv6的方法
test -f /proc/net/if_inet6 && echo "Running kernel is IPv6 ready"
如果你看到
Running kernel is IPv6 ready
它被启用。
如果看不到输出,则不会。
如果您无法使用此页面上的其他答案,则要禁用ipv6,请将ipv6一起列入黑名单。为此,请使用以下命令:
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
功能部件是内核模块(blacklist.local
用于防止其加载)。在某些情况下,ipv6已编译到内核(不是模块)中,在这种情况下,有必要使用ipv6.disable=1
引导参数表引导内核(这样做是:(1)sudo gedit /etc/default/grub
(2)搜索该行GRUB_CMDLINE_LINUX_DEFAULT=<args>
,(3)添加ipv6.disable=1
到启动参数)
如果您使用的是现代版本的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
service procps restart
在ubuntu 18.04上运行