CentOS下怎样干掉IPv6

作者: haw_haw | 来源:发表于2016-08-31 15:49 被阅读1009次

什么是IPv6

Internet Protocol version 6 (简称IPv6) 是 Internet Protocol(互联网协议) (IP)的最新一个版本,IPv6主要是为了解决IPv4地址枯竭的问题而开发的,目的是为了替换当前所用的IPv4。

虽然IPv6天生是为了替代IPv4的(生而自豪),而且最近几年IPv4地址也已然分配完,但是由于NAT这种技术的存在,使得IPv6还没有真正意义上的"取代"IPv4。尤其是在“我大宋”,除了教育网有IPv6的环境以外,其他基本都不支持IPv6。不过国外貌似发展的还可以,好些运营商都已经开始支持IPv6了。

IPv6的毛病

毛病?IPv6其实没毛病,而且作为要替换IPv4的下一代协议,优点还很多。:)只是因为我们身处天朝上国,网络根本就不支持IPv6,所以即使Linux系统缺省就支持IPv6,作为崇尚洁癖的系统管理员、运维工程师们,自然是婶婶可以忍,叔叔不可忍!(是可忍,孰不可忍)。

好啦,以上纯属扯蛋,说正经的,刚开始的时候,如果在不支持IPv6的环境里启用IPv6协议的话,是会导致很多性能问题的,但最近些年,各种操作系统也做了不少调整,到目前其实真没发现IPv6会对性能造成多大影响。一个长期以来大家都认可的理由就是:IPv6会优于IPv4,也就是说,一个数据包在发送时首先会先尝试IPv6的网关,然后再是IPv4的。其实就算这种情况是真的,我们也是可以通过/etc/gai.conf文件来调整的。

几种姿势

下面介绍几种在Linux系统里干掉IPv6的方法。

sysctl大法

几乎所有的Linux系统......好吧好吧,我就说我确认的吧,Debian系和RedHat系......算啦,最最最确认的就是CentOS(当然rhel也一样)下,可以在/etc/sysctl.d/目录下新建文件叫ipv6.conf(Linux系统在启动时会自动读取/etc/sysctl.conf以及/etc/sysctl.d/目录下的文件,并用sysctl -p来执行的,这里以.conf为扩展名是为了兼容CentOS7.x的系统,CentOS7.x认的是是“/etc/sysctl.d/<name>.conf”这种文件),文件的内容是:

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

配置完毕如果不重启机器的话,可以直接执行命令:

sysctl -p /etc/sysctl.d/ipv6.conf;

强制让其生效。然后再用命令

ip a s;

看,会发现原来的很多inet6的地址不存在了,配置生效了!

但需要注意的是:这种方式并没有真正把ipv6模块从内核里清除掉,不信用命令

lsmod | grep -i ipv6;

看,还是会有很多在用ipv6模块的。在这些模块里,又有好些并不是完全依赖ipv6模块不可的,只有极少数的是必须要ipv6模块的,所以,我们可以用后面的方法把ipv6模块以后系统还能正常工作。

modprobe劫持

此法又称“釜底抽薪”,CentOS7.x下不支持,CentOS6.x下测试可用。具体原理是截获系统自动加载ipv6模块的动作,直接返回true,并且将ipv6模块加入黑名单(blacklist)。这样系统就没法通过

modprobe ipv6;

insmod ipv6;

来加载ipv6模块了。具体方法如下:

echo -e "install ipv6 /bin/true\nblacklist ipv6" >\
        /etc/modprobe.d/ipv6.conf;
reboot; # 这种办法必须要重启机器来完全生效

机器重启过后再通过

lsmod | grep -i ipv6;

来看是看不到ipv6模块的,表示ipv6模块已经完全被从内核里除掉。

GRUB参数

注意:此法仅适用于CentOS7.x!
此法的原理是在GRUB里直接将参数"ipv6.disable=1"传递给内核,这样启动时内核会根据这个参数不再加载ipv6模块。
具体方法是:

if grep -q "ipv6.disable=1" /etc/default/grub
then
  echo "\"ipv6.disable=1\" found in /etc/default/grub"
else
  sed -i.ori 's/^GRUB_CMDLINE_LINUX="/&ipv6.disable=1 /' /etc/default/grub
  /usr/sbin/grub2-mkconfig -o /boot/grub2/grub.cfg
fi
# 此法自然也需要重启机器,于是:
reboot

个人推荐的解决方案

  • CentOS7.x下慎用GRUB法,因为一旦用GRUB法,以后万一有某个模块需要ipv6,那非重新修改GRUB文件并重启机器不能成功的
  • CentOS6.x下的话,建议用sysctl法和modprobe法结合,如果碰到有一定要依赖于ipv6的模块要加载,直接修改/etc/modprobe.d/ipv6.conf,注释掉相关语句以后,再重新就能modprobe ipv6了

相关文章

  • CentOS下怎样干掉IPv6

    什么是IPv6 Internet Protocol version 6 (简称IPv6) 是 Internet P...

  • ping

    Centos 下ping ipv6 地址: windows下 ping ipv6 地址:

  • 2019-12-05

    如何让你的scratch运行起来 1、centos下nodejs只监听ipv6的8333接口,要修改scratch...

  • CentOS 7 网页加载速度慢的解决办法

    原因 DNS解析缓慢的原因是CentOS 6/REHL 6 总是需要等待AAAA(IPv6)的结果,即使IPv6已...

  • 设置IPV6环境-Docker

    准备工作 按照上一篇博客:《设置IPV6环境-CentOS7》设置好宿主机的IPV6环境。 在docker的配置文...

  • iOS ipv4和ipv6

    IPv6的网络下,API 中直接使用 IPv4为什么不通?? 首先IPv6网络下只能访问IPv6站点,IPv4下只...

  • 解决win10下ettercap闪退问题

    解决win10下ettercap闪退问题!禁用IPV6!!!!禁用IPV6!!!!禁用IPV6!!!!禁用IPV6...

  • iOS ipv6相关

    [基础常识]为阿里云ECS(CentOS7)配置IPv6隧道地址https://bbs.aliyun.com/re...

  • 怎样干掉Zara

    “快”向来是以Zara、H&M为代表的快时尚品牌的制胜法宝,在高效的全程供应链体系的支撑之下,前者所属的母公司In...

  • 怎样干掉焦虑?

    焦虑每个人都有,特别是在现在这个快速变化的时代,人很容易焦虑。如何解决? 下面再来讲一个故事: 一天,一个孩子去森...

网友评论

    本文标题:CentOS下怎样干掉IPv6

    本文链接:https://www.haomeiwen.com/subject/erwqettx.html