一、OpenWrt 抓包简介
用 Wireshark 抓包是常见的网络故障排查手段之一。但在路由器中,整合 Wireshark 并不现实,而 OpenWrt 内置的 tcpdump 工具就成了抓包的首选。tcpdump 是一款基于命令行的数据包嗅探器,支持捕获与过滤各种协议的数据包,是网络进行故障排查的重要工具。
下面,我们将主要从如下方面介绍 OpenWrt 抓包:
二、OpenWrt 抓包的命令行操作
1. 安装 tcpdump 工具
使用 SSH 连接到 OpenWrt 路由器,并使用 opkg 安装 tcpdump 工具。注意,为了能够成功执行该操作,必须先配置好路由器的网络连接。
opkg update opkg install tcpdump
2. 简单抓包并保存到文件
基本用法很简单,执行以下命令,tcpdump 就会开始抓包并将结果输出到终端:
tcpdump
为了方便查看,我们可以将结果保存到文件中:
tcpdump -i eth0 -w /tmp/test.pcap
其中,-i 参数指定采用的网卡(这里是 eth0),-w 参数指定保存的文件路径及文件名(这里是 /tmp/test.pcap)。这样,tcpdump 抓到的数据包就会被保存到 test.pcap 文件中。
3. 过滤器的使用
tcpdump 可以通过过滤器来捕获特定的数据包。比如,我们只想抓取目的 IP 是 192.168.1.100 的数据包:
tcpdump -i eth0 -w /tmp/test2.pcap dst 192.168.1.100
在这个例子中,我们使用了 dst 过滤器并指定了 IP 地址,这样 tcpdump 就只会捕获目的 IP 是 192.168.1.100 的数据包,而忽略其他的数据包。
三、Wireshark 分析抓包结果
1. 下载并安装 Wireshark
首先,需要在本机下载并安装 Wireshark。下载地址为:https://www.wireshark.org/download.html
2. 从路由器下载 pcap 文件
从路由器下载 pcap 文件非常简单,只需使用 SCP 命令:
scp root@192.168.1.1:/tmp/test.pcap /path/to/your/local/folder/
在这个例子中,我们将 test.pcap 文件下载到了 /path/to/your/local/folder/ 目录下。
3. 打开 Wireshark 并分析 pcap 文件
用 Wireshark 打开刚刚下载的 pcap 文件,操作步骤如下:
1)打开 Wireshark
2)点击 File -> Open 或者使用 Ctrl + O 打开 pcap 文件
3)分析抓包结果
Wireshark 的详细使用方法不再赘述。
四、OpenWrt 抓包其他技巧
1. 联机调试
为了方便调试,Tcpdump 提供了联机调试功能。只要将数据包发送到相应端口上,Tcpdump 就可以将其拦截并显示或输出至文件。如下所示,将入站 IP 数据包通过 TCP 端口放行:
tcpdump -i eth0 -n -p tcp port 80 -w /tmp/test.pcap
2. 抓取指定应用数据包
如果你只想抓取指定应用的数据包,可以结合 Tcpdump 和流控制工具一起使用。以抓取 HTTP 数据包为例,使用 tcpdump 加上流控制工具来指定仅抓取 TCP 协议中端口为 80、80 和 25 的 HTTP 数据包示例如下:
tcpdump -i eth0 -n -p -s 0 -w /tmp/http.pcap tcp port 80 or port 8080 or port 25
五、小结
本文主要介绍了 OpenWrt 抓包的基础用法和其他技巧,并介绍了如何用 Wireshark 对抓包结果进行分析。通过本文的学习,您应该已经掌握了 OpenWrt 抓包的基本技能,并能更好地排查网络故障。