I am LAZY bones? AN ancient AND boring SITE

IPv6路由错误引起的怪异问题

我那Ubuntu源服务器(u.srt.cn),最近出现了一些很诡异的错误。
比如:之前设置的crontab同步linux.deepin.org的iso镜像,已经有一段时间没有成功过了,手工执行rsync,却发现连的似乎是自己,因为banner都出来“Thanks for using SRT ubuntu mirror.”了,但是ping linux.deepin.org 却又能得到正确的结果。
再比如之前我设置了用公钥可以ssh登录另外一台机器,但是现在却提示我输入密码。
排查了许久之后,发现了一个问题,很多(但不是全部)公网的域名虽然ping的时候对应了正确的ip,但是正在使用(比如上面的rsync或ssh)的时候,好像都指到本地了。
再后来,无意之中,发现用ping6 去ping那些有问题的域名,返回的都是 localhost(::1),于是终于知道怎么回事了:系统用IPv6去访问那些域名了,而那些域名的IPv6解析不正确。
为了验证这点,只需要把系统的IPv6彻底禁用再试试就成了,但是服务器也是ubuntu,而ubuntu最新的版本都已经把IPv6编译进内核了,不能通过rmmod来禁用IPv6了,要完全禁用需要修改grub的配置,给内核传参数才行(方法见这里)。
这显然太麻烦了,其实暂时禁用一下还是有方便的办法的,就是这样:

echo 1 | sudo tee /proc/sys/net/ipv6/conf/all/disable_ipv6

执行完以后,可以执行

ip a | grep inet6

来确认已经禁用成功了,如果这命令没有输出就OK了。
然后现在再用ping6的话,会提示connect: Network is unreachable
再去试试之前的rsync和ssh,果然都正常了。

现在我担心的是:IPv4地址不都已经枯竭了吗?接下来该怎么办呢?

最后修改时间: 2017年04月21日 16:20

本文章发表于: 2011年02月10日 17:50 | 所属分类:故障分析. | 您可以在此订阅本文章的所有评论. | 您也可以发表评论, 或从您的网站trackback.

6 个评论 关于: “IPv6路由错误引起的怪异问题”

  1. yegle 在 2011年02月10日 17:52 说:回复

    ping6得到ipv6解析不对的问题应该是你使用的DNS的问题,看看host XXXX.com的结果吧

    • bones7456 在 2011年02月10日 21:05 说:回复

      host luy.li 显示的是正确的IPv4地址。但是 ping6 luy.li 就到localhost了。应该是我的 nameserver 有问题,我用的 nameserver 是同一个机房的一个IP。

  2. Jimmy Xu 在 2011年02月10日 17:52 说:回复

    您该台计算机的完整主机名是什么?(

    hostname --fqdn

    • Jimmy Xu 在 2011年02月10日 18:02 说:回复

      之前遇到的类似问题是因为 hostname 的 domain part 设置了泛解析,导致 resolver 在目标地址没有 AAAA RR 的时候转而带上后缀查询然后返回诡异的结果…

    • bones7456 在 2011年02月10日 21:19 说:回复

      FQDN 就是 SRT,没啥异常的。

  3. g0t3n 在 2011年05月31日 02:10 说:回复

    弱弱的问下骨头兄,我用rhel6,我关ipv6的方法是,先在sysctl里disable,然后在syrctl.conf里加上关闭那一句…重启发现大多的关于ipv6的module都没了,剩下一个ko文件直接rmmod后把/lib/module/里的ipv6的都删了…不知到这样干净没?

发表评论