Answers:
首先,您需要获取路由器的以太网硬件地址(因为通过它发送的流量可以通过发送到此链路层地址来识别):
$ arp -n 192.168.0.1
? (192.168.0.1) at 0:12:34:56:78:9a on en0 ifscope [ethernet]
然后使用此地址告诉tcpdump寻找什么:
sudo tcpdump 'ether host 0:12:34:56:78:9a and not host 192.168.0.1 and (port http or https)'
请注意,需要使用引号来防止外壳跳到括号内。另外,如果你离开了and not host 192.168.0.1
一部分,它会包括流量到路由器(即,它会告诉你打开路由器的基于Web的配置界面),以及通过它。最后,如果碰巧为192.168.0.1定义了DNS或/ etc / hosts名称,则可以使用tcpdump的网关原语(sudo tcpdump 'gateway somename and (port http or https)'
),但不适用于IP地址。
编辑:这只会报告通过它所运行的计算机的流量-通常只是去往/来自那台计算机的流量。如果要查看本地局域网上所有主机通过路由器的流量,则需要设置某种机制以将所有这些数据包发送到捕获计算机。WireShark文档对此选项进行了很好的讨论。