tcpdump的简单使用
Tcpdump
是一个常用的网络数据包抓取工具,可以在 Linux/Unix 和其他类 Unix 操作系统中使用。它可以嗅探网络接口上的数据包,并将它们写入文件或输出到屏幕上。以下是 tcpdump
的基本使用教程:
-
命令格式:
tcpdump [选项] [表达式]
-
常用选项:
-i
:指定抓取数据包的网络接口。-n
:以数字形式显示 IP 地址。-s
:设置抓取数据包的最大长度(单位为字节)。-w
:将抓取的数据包写入文件。-r
:读取一个保存的数据包文件。
-
表达式:
表达式是指定需要抓取的数据包的条件。以下是一些常用的表达式:
host
:指定抓取某个主机发送或接收的所有数据包。port
:指定抓取某个端口发送或接收的所有数据包。tcp
:指定抓取 TCP 数据包。udp
:指定抓取 UDP 数据包。icmp
:指定抓取 ICMP 数据包。and
: 使用 and 语句or
: 使用 or 语句not
: 使用 not 语句len
: 指定现实数据包的长度src/dst
: 指定源地址和目标地址例如,以下命令将从
eth0
接口抓取所有来自主机192.168.1.100
的TCP
数据包并将它们输出到屏幕上:tcpdump -i eth0 host 192.168.1.100 and tcp
常见的表达式:
src host 192.168.1.100 # 发起连接的地址为 192.168.1.100 的数据包 tcp port 80 or udp port 53 # TCP 端口为80和 UDP 端口为53的数据包
-
示例:
a. 抓取数据包并输出到屏幕上:
tcpdump
b. 抓取 eth0 接口上所有主机的 ICMP 数据包:
tcpdump -i eth0 icmp
c. 抓取来自 192.168.1.100 的所有 TCP 数据包并将它们写入文件:
tcpdump -i eth0 host 192.168.1.100 and tcp -w packets.txt
d. 读取已保存的数据包文件并输出到屏幕上:
tcpdump -r packets.txt