技术知识库

帮助中心 >  产品文档 >  云服务器 >  Linux系统如何禁用IPv6以解决连接超时问题

Linux系统如何禁用IPv6以解决连接超时问题


IPv6和IPv4同属于网络协议,在Linux系统中,IPv6和IPv4同时存在时可能会出现连接超时的情况,这时只需将IPv6禁用即可解决这个问题。

临时禁用IPv6


  如果你想要在你的Linux系统上临时关闭IPv6,你可以用 /proc 文件系统。“临时”的意思是我们所做的禁用IPv6的更改在系统重启后将不被保存。IPv6会在你的Linux机器重启后再次被启用。


  要将一个特定的网络接口禁用IPv6,使用以下命令: 

$ sudo sh -c ‘echo 1 》 /proc/sys/net/ipv6/conf/《interface-name》/disable_ipv6’

  举个例子,将eth0接口禁用IPv6: 

$ sudo sh -c ‘echo 1 》 /proc/sys/net/ipv6/conf/eth0/disable_ipv6’

2015061017024657.jpg

重新启用eth0接口的IPv6:

  

$ sudo sh -c ‘echo 0 》 /proc/sys/net/ipv6/conf/eth0/disable_ipv6’


  如果你想要将整个系统所有接口包括回环接口禁用IPv6,使用以下命令:


$ sudo sh -c ‘echo 1 》 /proc/sys/net/ipv6/conf/all/disable_ipv6’


  永久禁用IPv6


  以上方法是不能永久禁用IPv6的,你一旦重启系统IPv6还是会被启用。如果你想要永久关闭它,有几个方法你可以试试。


  方法一


  第一种方法是通过 /etc/sysctl.conf 文件对 /proc 进行永久修改。


  换句话说,就是用文本编辑器打开 /etc/sysctl.conf 然后添加以下内容:


  # 禁用整个系统所有接口的IPv6

  

net.ipv6.conf.all.disable_ipv6 = 1


  # 禁用某一个指定接口的IPv6(例如:eth0, lo)

  

net.ipv6.conf.lo.disable_ipv6 = 1

  

net.ipv6.conf.eth0.disable_ipv6 = 1


  在 /etc/sysctl.conf 使这些更改生效,运行以下命令:

  

$ sudo sysctl -p /etc/sysctl.conf


  或者直接重启。 


  方法二


  另一个永久禁用IPv6的方法是在开机的时候传递一个必要的内核参数。


  用文本编辑器打开 /etc/default/grub 并给GRUBCMDLINELINUX变量添加“ipv6.disable=1”。

  

$ sudo vi /etc/default/grub

  

GRUB_CMDLINE_LINUX=“xxxxx ipv6.disable=1”


  上面的“xxxxx”代表任何已有的内核参数,在它后面添加“ipv6.disable=1”。

2015061017024658.jpg


  最后,不要忘记用以下方法保存对GRUB/GRUB2的修改:


  Debian、Ubuntu或Linux Mint系统:

  

$ sudo update-grub


  Fedora、CentOS/RHEL系统:

  

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg


  现在只要你重启你的Linux系统,IPv6就会完全被禁用。


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: