虽然IPV6是未来的趋势,许多Linux发行版默认也开启了IPV6的支持。但许多应用程序或服务并没有对IPV6进行充分测试,运营商对IPV6的支持也不尽人意,有时为了让系统更加可靠或是解决网络速度问题,需要关闭对ipv6的支持。这里以ubuntu为例来说明,其它发行版或嵌入式系统可以参考相应的办法。
一、使用sysctl来关闭ipv6
sysctl命令 被用于在内核运行时动态地修改内核的运行参数,可用的内核参数在目录/proc/sys中。要临时关闭IPV6支持,可以用下面命令:
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1 sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
操作完成可以用ip addr命令来验证ipv6是否已经关闭了。
上面做法只是临时,重启系统后就会失效,如果要永久禁用ipv6支持,就需要操作sysctl.conf配置文件。
在sysctl.conf配置文件的最后添加上
net.ipv6.conf.all.disable_ipv6=1 net.ipv6.conf.default.disable_ipv6=1
这种方法还要防止/etc/init.d/propcs 过早被调用,否则上面这些配置就可能没被启用,在rc.local的最后加上这两行:
/etc/init.d/procps restart exit 0
值得注意的是,用sysctl除了可以关闭所有接口的ipv6支持外,还可以仅关闭指定的网络接口,只需在配置命令中指定接口名称,比如用 net.ipv6.conf.enp0s25.disable_ipv6=1 ,修改完后,用sudo sysctl -p或重启系统即可。
二、使用GRUB来禁用ipv6
对于使用GRUB启动器的Linux系统,还可以用它来关闭ipv6的支持,修改/etc/default/grub,找到下面这两个命令行
GRUB_CMDLINE_LINUX_DEFAULT="ipv6.disable=1" GRUB_CMDLINE_LINUX="ipv6.disable=1"
注意我们只需添加,如果原来有其它参数值可以保留原来的值,用空格和其它参数隔开即可。保存后,
sudo update-grub sudo reboot