Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1491943
  • 博文数量: 263
  • 博客积分: 10851
  • 博客等级: 上将
  • 技术积分: 2627
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-26 22:40
文章分类

全部博文(263)

文章存档

2013年(4)

2012年(25)

2011年(33)

2010年(50)

2009年(138)

2008年(13)

分类: 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

阅读(3619) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~