Check_MK给我发了一封电子邮件,内容如下:
***** Nagios ***** Notification Type: PROBLEM Service: Interface 5 Host: foo Address: xyzt 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:xyzt 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)
注意错误和碰撞。 我知道碰撞字段的非零值表示networking拥塞的可能性。 但:
ethtool
的? modinfo 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 :通过Googlesearch,我发现这个链接与你有相同的意见:
我的隧道不工作:
ifconfig tunl<n>
报告错误和冲突你用
ifconfig
,也许ifconfig ... pointopoint ...
来build立你的隧道?关掉它; 删除它; 用
ip
重新开始。
但是,请您进一步阐述一下吗?
@Sergey弗拉索夫 :
tunl0 Link encap:IPIP Tunnel HWaddr inet addr:xyzt 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)
我不明白为什么有2个来自tunl0
接口的传输数据包? 我将设置一个事件处理程序来在collisions
计数器增加时运行tcpdump
。 让我们拭目以待,看看会发生什么。
更新于5月7日星期二14:05:39 ICT 2013
@Danila Ladner :为了排除这种可能性,我试过了你的build议:
ifdown tun0 modprobe -r ipip modprobe ipip ip addr add dev tunl0 xyzt/32 brd xyzt ip link set tunl0 up
我在等着看问题是否解决了:
tunl0 Link encap:IPIP Tunnel HWaddr inet addr:xyzt 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)
作为量子指出,我build议他采取的隧道,如果它是用ifconfig
build立,并用ip
重build它。 就像我几年前在Centos 5内核2.6.25上遇到过类似的问题,在我的情况下,它解决了这个问题,但是我也在IRC咨询networking人员和开发人员,为什么这是一个问题,因为我需要生产线上的路线并需要安排停机时间来核实它。 我不记得确切和迄今没有任何硬性的证据,但Kuznetsov(内核源的原始大贡献者build议用ip
重build它,因为他已经看到了ifconfig
问题。我希望这有助于量子解决他问题。
closures主题:所以,底线是我很笨,我使用了很多ifconfig
,只要继续处理旧的Solaris 8盒和bsd盒,很难切换到ip
。
ipip
通道接口的collisions
计数器在两种情况下增加:
如果封装的数据包的下一跳是相同的隧道接口: ipip.c line 437 。
如果封装的数据包的下一跳的pathMTU小于68: ipip.c line 447 。
这两种情况通常只有在被封装的stream量回到相同的隧道时才会发生(第一种情况是直接循环,第二种情况是当pathMTU由于一些更复杂的循环而减less到零时发生由第一条件检测)。 一个可能的原因是封装数据包的正常路由暂时closures,这些数据包的下一个最佳路由恰好是隧道本身,导致了一个循环。
然而,在LVS-TUN情况下,根本不应该发送到隧道(在这种情况下,隧道接口是只接收的),除非有些被误导的软件通过tunl0
添加了不需要的路由。