tcpdump
查看主机 10.1.1.1 收到的和发送的数据包
[root@node1 Desktop]# tcpdump -i eth0 -nn host 10.1.1.1
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
22:33:25.148389 ARP, Request who-has 10.1.1.254 tell 10.1.1.1, length 28
22:33:25.148896 ARP, Reply 10.1.1.254 is-at 00:50:56:c0:00:01, length 46
22:33:30.714605 IP 10.1.1.254 > 10.1.1.1: ICMP echo request, id 1, seq 237, length 40
22:33:30.714619 IP 10.1.1.1 > 10.1.1.254: ICMP echo reply, id 1, seq 237, length 40
-i 指定网络接口,对于多个网络接口有用
-n 显示 IP 地址,不查主机名。当 DNS 不起作用时常用到这个参数
-nn 不显示协议和端口名。即显示 IP 地址和端口
-w 将抓的包保存到指定的文件里方便后续分析
其他用法:
man tcpdump
TCP Packets
The general format of a tcp protocol line is:
src > dst: flags data-seqno ack window urgent options
Src and dst are the source and destination IP addresses and ports. Flags are some
combination of S
(SYN), F (FIN), P (PUSH), R (RST), W (ECN CWR) or E (ECN-Echo), or a single ‘.’
(no flags).
1.获取主机 10.1.1.1 接收或发出的 telnet 包
1#tcpdump tcp port 23 and host 10.1.1.1
2.对本机的 udp 协议的 123 端口进行监听(123 是 ntp 服务端口)
1tcpdump udp port 123
3.只对 hostname 的主机的通信数据包进行监视。主机名可以是本地主机,也可以是网络上的任何一台计算机。
下面的命令可以查看主机 hostname 发送的所有数据:
1#tcpdump -i eth0 src host hostname
2
3#tcpdump -i eth0 src host 10.1.1.254
4.下面的命令可以查看所有送到主机 hostname 的数据包:
1#tcpdump -i eth0 dst host hostname
2
3#tcpdump -i eth0 dst host 10.1.1.1
5.监视通过指定网关的数据包:
1#tcpdump -i eth0 gateway Gatewayname
2
3#tcpdump -i eth0 gateway 10.1.1.254
6.其他
只需要列出送到 80 端口的数据包,用 dst port;
1#tcpdump –i eth0 host hostname and dst port 80 //目的端口是80
只需要看到返回 80 端口的数据包,用 src port
1#tcpdump –i eth0 host hostname and src port 80 //源端口是80,一般是提供http的服务的主机
如果条件很多的话要在条件之前加 and 或 or 或 not
1#tcpdump -i eth0 host ! 210.161.223.70 and ! 210.161.223.71 and dst port 80