tcpdump中有很多“BOOTP/DHCP,Request”,我想将其过滤掉。
过滤掉arp很容易。
tcpdump -nni eth0 not arp
关于什么BOOTP/DHCP, Request
?
我已经尝试过以下方法,但它不起作用
$ sudo tcpdump -nni eth0 not bootp
tcpdump: can't parse filter expression: syntax error
$ sudo tcpdump -nni eth0 not dhcp
tcpdump: can't parse filter expression: syntax error
$ sudo tcpdump -nni eth0 not dhcpd
tcpdump: can't parse filter expression: syntax error
正确的 tcpdump 是什么?
答案1
长话短说
在 tcpdump 中,协议“BOOTP/DHCP”的端口“昵称”是bootps
。例如,仅过滤 DHCP 数据包:
sudo tcpdump -n -i eth0 port bootps
或者排除它们:
sudo tcpdump -n -i eth0 not port bootps
细节
作为提示,要获取给定端口/协议的“昵称”,请检查文件/etc/services
:
$ cat /etc/services | grep bootp
bootps 67/udp
bootpc 68/udp
请注意,bootps
用于服务器端口和bootpc
客户端端口。
尽管从技术上讲,人们可能认为我们必须同时使用两者(例如tcpdump -n -i eth0 port bootps or bootpc
),但事实是每个 DHCP 数据包都在源或目的地使用端口 67(某些数据包将具有源端口 67 和目标端口 68,而其他数据包则具有源端口 68 和目标端口 68)端口 67)。所以通常只过滤就port bootps
可以了。