Contents
1.31. tcpdump跟踪分组¶
只是知道哪个应用程序在使用特定的端口并不足以跟踪到问题所在。有时候还需要检查传输 的数据。 常用于Linux上的抓包
1.31.1. 安装tcpdum¶
yum -y install tcpdump
$ sudo apt-get install tcpdump
$ sudo yum install libpcaptcpdump
默认情况下tcpdump 会一直执行并嗅探网络分组,直到按下Ctrl-C或发送SIGTERM信号。
选项 -c 可以限制嗅探的分组数:
# tcpdump -w /tmp/tcpdump.raw -c 50
1. 只显示HTTP分组¶
# tcpdump -r /tmp/tcpdump.raw port http
2.只显示本机生成的HTTP分组¶
# tcpdump -r /tmp/tcpdump.rawsrc port http
3.查看分组载荷(payload)以及头部¶
# tcpdump -X -r /tmp/tcpdump.raw host noucorp.com and port http
tcpdump 可用于跟踪过载网段的问题源、产生异常流量的主机、网络环路、网卡故障、恶意分组等。
利用选项 -w 和 -r , tcpdump 可以将分组数据以原始格式保存,允许随后以普通用户身份查
看。举例来说,如果在凌晨3点出现了大量网络分组冲突,你可以设置一项 cron 作业,安排在凌
晨3点的时候运行 tcpdump ,然后对比检查正常时段的网络分组。
1.31.2. Linux系统下的网络抓包¶
[root@bogon ~]# tcpdump -nn -i ens32
[root@bogon ~]# tcpdump -nn -i ens32 port 22
[root@bogon ~]# tcpdump -nn -i ens32 -c 3
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens32, link-type EN10MB (Ethernet), capture size 262144 bytes
01:52:41.394331 IP 192.168.6.2.22 > 192.168.6.205.50489: Flags [P.], seq 1871374054:1871374250, ack 2529069835, win 76, length 196
01:52:41.394748 IP 192.168.6.205.50489 > 192.168.6.2.22: Flags [.], ack 196, win 2048, length 0
01:52:41.395320 IP 192.168.6.2.22 > 192.168.6.205.50489: Flags [P.], seq 196:472, ack 1, win 76, length 276
3 packets captured
3 packets received by filter
0 packets dropped by kernel
# -w 将抓取的包存储到某个文件中
[root@bogon ~]# tcpdump -nn -i ens32 -c 10 -w /root/tcpdump.txt
1.31.3. 使用方法举例¶
1)想要截获210.27.48.1的主机收到的和发出的所有数据包,命令如下:
tcpdump host 210.27.48.1
2)想要截获主机210.27.48.1和主机210.27.48.2或210.27.48.3的通信,使用了转义符号
tcpdump host 210.27.48.1 and \(210.27.48.2 or 210.27.48.3 \)
3)想要获取主机210.27.48.1和所有主机(除了210.27.48.2)通信的IP包,命令如下:
tcpdump ip host 210.27.48.1 and !210.27.48.2
4)想要获取主机210.27.48.1接收或发出的smtp包,命令如下:
tcpdump tcp port 25 and host 210.27.48.1
5)如果怀疑系统正受到拒绝服务攻击(DoS),网络管理员可以通过截获发往本机的所有ICMP包,来确定目前是否有大量的ping指令流向服务器,此时可用如下命令:
tcpmdump icmp -n -i eth0
6)想要将其结果生成详细的报告,命令如下:
tcpdump tcp port 25 and host 211.147.1.11 > awstat.txt