分类: LINUX
2012-05-22 15:14:53
服务器群集采用LVS模式后,将请求流量发到了eth1上,然后虚拟了网卡tunl0。
其实用tcpdump是可以在eth1上看到ip-tunnel的流量的,抓下来的包,在包的最后出现了“(ipip-proto-4)”这样的信息。
认真看包格式,其实ip-tunnel协议就是在原来IP包的外面,再包了20字节的IP头。在外面的这个IP头里,其协议的标识是4(TCP是6)。
查下/usr/include/linux/in.h,可以发现这样的定义:
/* Standard well-defined IP protocols. */
enum {
IPPROTO_IP = 0,/* Dummy protocol for TCP*/
IPPROTO_ICMP = 1,/* Internet Control Message Protocol*/
IPPROTO_IGMP = 2,/* Internet Group Management Protocol*/
IPPROTO_IPIP = 4,/* IPIP tunnels (older KA9Q tunnels use 94) */
IPPROTO_TCP = 6,/* Transmission Control Protocol*/
IPPROTO_EGP = 8,/* Exterior Gateway Protocol*/
IPPROTO_PUP = 12,/* PUP protocol*/
IPPROTO_UDP = 17,/* User Datagram Protocol*/
绕了个大圈子,我想答案已经很明显了:(找协议的位置,匹配为4即可)
tcpdump -i eth1 "ip[9]==4"
可惜不能去掉头后再用TCPDUMP过滤!
本文转自:http://hi.baidu.com/ah__fu/blog/item/02669e89628425a70e2444f2.html