由于经常定位VoIP中碰到的问题,笔者经常需要在Linux服务器上抓包,然后将生成的.pcap文件用wireshark打开进行分析。常用命令如下:

tcpdump -nq -s 0 -i eth0  -w ronny-2019-0701-1415.pcap

以上命令假设要抓包的网卡名为eth0,-w后面跟的是生成的抓包文件名

如果要抓包的服务器上呼叫量比较大,那么生成的pcap文件将会非常大,这样抓出来的包是没有任何意义的(一般电脑是无法打开那么大的包的),所以就需要用到抓包分片功能:

tcpdump -nq -s 0 -i eth0 -C 100 -w ronny-2019-0701-1415.pcap

-C参数指定了多少兆(M)为单位生成一个包,上面语句,如果包超过了100M大小,则会生成新文件ronny-2019-0701-1415.pcap1,如果再次超过,则生成ronny-2019-0701-1415.pcap2,...... ,依次类推。

如果想持续抓包,即不想ssh客户端关闭后抓包停止,则可后台运行tcpdump,即:

nohup tcpdump -nq -s 0 -i eth0 -C 100 -w ronny-2019-0701-1415.pcap  &

nohup xxx & 会后台执行tcpdump,可通过ps -ef | grep tcpdump命令查看是否运行成功:

如果执行tcpdump时(不论是前台运行还是后台运行)碰到如下错误:

则可以在执行命令的加上root权限或者其他具有操作权限的用户名,-Z参数便是干这个事的:

nohup tcpdump -nq -s 0 -i eth0 -C 100 -w ronny-2019-0701-1415.pcap  -Z root  &

若想抓取经过【网卡名】并且是主机【ip1】和主机【ip2】或者主机【ip1】和主机【ip3】之间的通信,则使用host选项:

tcpdump udp -nq -s 0 -i [网卡名] -C 100 host [ip1] and \(ip2 or ip3 \) -w xxx.pcap

Logo

更多推荐