Check_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)
注意错误和碰撞。我知道 collisions 字段的非零值表示网络拥塞的可能性。但:
- 确切原因可能是什么?我该如何排除故障?
- 有没有类似
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
更新于 5 月 6 日星期一 10:05:01 ICT 2013
@Danila Ladner:通过谷歌搜索,我发现这个链接与你的观点相同:
我的隧道不工作:
ifconfig tunl<n>
报告错误和冲突你有没有使用
ifconfig
, 也许是ifconfig ... pointopoint ...
为了建立你的隧道?关掉它; 删除它; 重新开始
ip
。
但是你能再详细说明一下吗?
@谢尔盖弗拉索夫:
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
让我们拭目以待。
更新于 5 月 7 日星期二 14:05:39 ICT 2013
@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)
隧道接口的
collisions
计数器在两种情况下增加:ipip
如果封装包的下一跳是同一个隧道接口: ipip.c line 437。
如果封装包的下一跳路径MTU小于68: ipip.c第447行。
这两种情况通常只有在封装的流量循环回同一个隧道时才会发生(第一种情况是直接循环,第二种情况发生在路径 MTU 由于一些更复杂的循环而没有立即减少到零时)由第一个条件检测到)。一个可能的原因是封装数据包的正常路由暂时关闭,而这些数据包的下一条最佳路由恰好是隧道本身,导致环路。
然而,在 LVS-TUN 的情况下,根本不应该向隧道发送任何内容(在这种情况下,隧道接口是只接收的),除非一些被误导的软件通过添加不需要的路由
tunl0
。正如 quanta 指出的那样,我建议他拆除隧道,如果它是
ifconfig
用ip
. 几年前我在 Centos 5 内核 2.6.25 上遇到过类似的问题,就我而言,它解决了这个问题,但我也在 IRC 中咨询网络人员和开发人员,为什么这是一个问题,因为我需要在生产环境中使用该路由并且需要安排停机时间来解决它。我记不清了,到目前为止还没有任何确凿的证据,但 Kuznetsov(内核源代码的原始大贡献者建议重建它,ip
因为他看到了 . 的问题ifconfig
。我希望这有助于 quanta 解决他的问题。题外话:所以,最重要的是,我自己使用了很多,
ifconfig
而且很难切换到ip
,只要我继续处理旧的 Solaris 8 盒子和 bsd 盒子。