如何在 tcpdump 中过滤掉“BOOTP/DHCP,请求”?

如何在 tcpdump 中过滤掉“BOOTP/DHCP,请求”?

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可以了。

相关内容