Linux下用tcpdump抓包出现kernel drop packets的问题

Linux下面,特别是命令行环境下,tcpdump是用来录制网络包的不二之选。但是,在使用基本必要参数时,往往不能满足正确抓取特定流量的包,比如,过快,过大。经过一番搜索求助后,试了几个方法,唯有一种比较靠谱。


首先,基本的必要参数是:

tcpdump -i ethx  (不管三七二十七,这个口上的包统统抓下来)

小包,慢速环境下,这个方式基本没有问题


然后,如果流量过快,包也过大的时候,就会出现kernel drop packets的问题,怎么办?有的说,用“-nn”, "-n"参数,去掉域名解析操作;有的建议用“-s xxxx”放大默认抓包的大小;还有的建议用“-B xxxx”. 都试过一遍后,靠谱的是

tcpdump -i ethx -nn -n -B xxxx -s0 -w xxx.pcap

-nn: don't convert protocol and port number etc. to names either

-n: don not convert host addresses to names.  This can be used to avoid DNS lookups.

-s: packet length (0: capture the whole packet; default is 68 bytes)

-B: Set the operating system capture buffer size to buffer_size (unit: kilobytes)

这个buffer size根据具体情况可以设置大一些,当然,这个要跟抓包的时长和具体的应用有关。


另外,对于被抓包的那个网卡,要事先关闭rx checksumming 和 GRO(general receive offload)功能

ethtool -K ethx rx off

ethtool -K ethx grp off

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值