检查_MK已向我发送了以下电子邮件:
***** Nagios *****
Notification Type: PROBLEM
Service: Interface 5
Host: foo
Address: x.y.z.t
State: CRITICAL
Date/Time: Fri May 3 10:02:40 ICT 2013
Additional Info: CRIT - [tunl0] (up) speed unknown, in: 3.39MB/s, out: 0.00B/s, out-errors: 100.00%(!!) = 0.1
运行ifconfig
,我得到:
tunl0 Link encap:IPIP Tunnel HWaddr
inet addr:x.y.z.t Mask:255.255.255.255
UP RUNNING NOARP MTU:1480 Metric:1
RX packets:92101704629 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:652 dropped:0 overruns:0 carrier:0
collisions:652 txqueuelen:0
RX bytes:18941091817671 (17.2 TiB) TX bytes:0 (0.0 b)
注意错误和冲突。我知道冲突字段的非零值表示网络拥塞的可能性。但是:
- 确切原因可能是什么?我该如何排除故障?
- 是否有类似于
ethtool
IPIP Tunnel 接口的接口?
修改信息 ipip
filename: /lib/modules/2.6.18-194.17.1.el5/kernel/net/ipv4/ipip.ko
license: GPL
srcversion: 288C625C7521D577F7AD9E4
depends: tunnel4
vermagic: 2.6.18-194.17.1.el5 SMP mod_unload gcc-4.1
module_sig: 883f3504ca37590565662cff69dd0be11277ff0a08d3a3...
ip隧道秀
tunl0: ip/ip remote any local any ttl inherit nopmtudisc
更新于 2013 年 5 月 6 日星期一 10:05:01 ICT
@Danila Ladner:通过 Google 搜索,我发现这link 的观点和你一样:
我的隧道不工作:
ifconfig tunl<n>
报告错误和碰撞您是否使用过
ifconfig
,也许ifconfig ... pointopoint ...
来设置您的隧道?关闭它;删除它;重新开始
ip
。
但您能进一步详细说明一下吗?
@Sergey Vlasov:
tunl0 Link encap:IPIP Tunnel HWaddr
inet addr:x.y.z.t Mask:255.255.255.255
UP RUNNING NOARP MTU:1480 Metric:1
RX packets:81621711099 errors:0 dropped:0 overruns:0 frame:0
TX packets:2 errors:692 dropped:0 overruns:0 carrier:0
collisions:692 txqueuelen:0
RX bytes:16915649263419 (15.3 TiB) TX bytes:120 (120.0 b)
我不明白为什么tunl0
接口会发送 2 个数据包?我要设置一个事件处理程序tcpdump
每当collisions
计数器增加时运行。让我们拭目以待,看看会发生什么。
更新于 2013 年 5 月 7 日星期二 14:05:39 ICT
@Danila Ladner:为了排除这种可能性,我尝试了你的建议:
ifdown tun0
modprobe -r ipip
modprobe ipip
ip addr add dev tunl0 x.y.z.t/32 brd x.y.z.t
ip link set tunl0 up
我正在等待看问题是否得到解决:
tunl0 Link encap:IPIP Tunnel HWaddr
inet addr:x.y.z.t Mask:255.255.255.255
UP RUNNING NOARP MTU:1480 Metric:1
RX packets:19630041 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:4083271398 (3.8 GiB) TX bytes:0 (0.0 b)
答案1
正如 quanta 所说,我建议他拆除隧道(如果是用 构建的)ifconfig
并用 重建它ip
。几年前我在 Centos 5 内核 2.6.25 上遇到过类似的问题,就我的情况而言,它解决了这个问题,但我也在 IRC 上咨询网络人员和开发人员为什么会出现这个问题,因为我需要在生产环境中使用该路由,并且需要安排停机时间来清除它。我不记得具体情况,到目前为止也没有任何确凿的证据,但 Kuznetsov(此事内核源代码的原始重要贡献者)建议用 重建它,ip
因为他发现 存在问题ifconfig
。我希望这能帮助 quanta 解决他的问题。
离题:所以,底线是我自己很愚蠢,使用了很多ifconfig
,而且很难切换到ip
,只要我继续处理旧的 Solaris 8 盒子和 bsd 盒子。
答案2
collisions
隧道接口的计数器在ipip
两种情况下会增加:
如果封装后的数据包的下一跳是同一个隧道接口: ipip.c 第 437 行。
如果封装数据包的下一跳路径MTU小于68: ipip.c 第 447 行。
这两种情况通常只有在封装流量循环回到同一隧道时才会发生(第一种情况是直接循环,第二种情况是由于第一种情况没有立即检测到的更复杂的循环导致路径 MTU 降至零)。一个可能的原因是封装数据包的正常路由暂时中断,而这些数据包的下一个最佳路由恰好是隧道本身,从而导致循环。
然而,在 LVS-TUN 情况下,根本不应该向隧道发送任何内容(在这种情况下,隧道接口是仅接收的),除非一些误导性的软件通过添加了不需要的路由tunl0
。