在CentOS上学习“Sniffer”(网络嗅探/抓包)是一个很好的网络技能提升方向。这里需要明确一点:Sniffer 通常指网络嗅探器(如 Wireshark、tcpdump),而不是指 CentOS 的发行版名称(虽然 CentOS 是 Linux 的一个发行版)。
以下是一份从零开始,在 CentOS 环境下学习网络嗅探的系统化指南:
在学习工具之前,你需要理解“嗅探”在做什么:
CentOS 上最常用、最经典的命令行嗅探工具是 tcpdump。图形化工具通常使用 Wireshark(在 CentOS 上可能叫 wireshark 或 wireshark-gtk)。
这是 Linux 下最标准的抓包工具,几乎所有服务器都会预装或可以轻松安装。
# 更新 yum 源(可选)
sudo yum update
# 安装 tcpdump
sudo yum install tcpdump
# 验证安装
tcpdump --version
如果你有 CentOS 桌面环境,或者想将抓包文件下载到本地 Windows/Mac 用 Wireshark 分析:
# 安装 wireshark (命令行版 tshark 和图形版)
sudo yum install wireshark wireshark-gtk
# 或者只安装命令行分析工具 tshark
sudo yum install wireshark-cli
这是学习的重点。请在 CentOS 终端中练习以下命令。
ip addr
# 或者
ifconfig
记下你的网卡名(如 eth0, ens33, enp0s3)。
# 监听指定网卡(如 eth0)
sudo tcpdump -i eth0
# 监听所有网卡
sudo tcpdump -i any
# 限制抓取数量(例如只抓 10 个包)
sudo tcpdump -i eth0 -c 10
抓包通常是为了事后分析,或者因为服务器没有图形界面。
# 将抓到的包保存到文件(.pcap 格式)
sudo tcpdump -i eth0 -w capture.pcap
# 读取抓包文件
sudo tcpdump -r capture.pcap
这是 Sniffer 最难也是最有用的部分。你需要学会过滤噪音,只看你关心的流量。
sudo tcpdump host 192.168.1.100
sudo tcpdump port 80
sudo tcpdump port 443 and host 1.1.1.1
sudo tcpdump icmp
sudo tcpdump tcp
sudo tcpdump src host 192.168.1.1
sudo tcpdump dst port 22
# 抓取非 SSH 流量
sudo tcpdump not port 22
# 抓取到达 80 端口且来自特定网段的 TCP 流量
sudo tcpdump tcp and dst port 80 and src net 192.168.1.0/24
# -n 不解析主机名(加快速度)
# -v, -vv, -vvv 显示详细程度
# -X 以十六进制和 ASCII 显示数据内容(看明文协议很有用)
# -A 以 ASCII 显示(看 HTTP 明文很方便)
sudo tcpdump -i eth0 -A -n port 80
使用 Wireshark 分析:
tcpdump -w file.pcap 抓包。scp 或 WinSCP 将 file.pcap 下载到你的 Windows 或 Mac 电脑。理解抓包结果:
SYN, ACK 就是 TCP 连接建立。PSH, ACK 通常就是有数据传输。RST 通常是连接被强制重置(拒绝或异常断开)。除了 tcpdump,CentOS 上还有其他相关工具:
sudo yum install wireshark-cli
tshark -i eth0
sudo yum install ngrep
sudo ngrep -d eth0 port 80
ss -tunap
root 权限(使用 sudo)。-c 限制数量或使用 -G 限制轮转时间。tcpdump -i any -n -c 100 看个大概。host, port, and 组合过滤,精准定位问题。-w 保存,用 Wireshark 分析 TCP 重传、延迟、握手失败等深层问题。iptables/nftables 和网络知识,分析复杂的网络架构问题。建议找一本《Wireshark 网络分析就这么简单》或看官方文档,结合实际操作,进步会非常快。