我有一个DHCP数据包嗅探器,需要logging,如果它看到来自客户端的DHCP拒绝响应。我需要知道客户端可以发送dhcp服务器DHCP响应的场景。 我试图通过最小化在dhcpserver的ip的小范围和重复的静态IP分配给客户端说client_A和client_B上运行dhclient clientB而client_B接受重复的ip(ip已经与ip client_A),而不是发送dhcpdecline响应。
这是一个更好和有保证的方式来重现DHCP下降的情况。 我使用的客户端是Ubuntu的和DHCP服务器的各种选项是可用的,如vyos /微软。
感谢和提前!
它看起来应该是可能的,但是这将需要一些摆弄…
正如您在评论中所build议的那样,dhclient不validation路由器地址的DHCP服务器响应,所以我去了文档,发现什么样的情况可能导致dhclient发送DHCPDECLINE。
Dhclient文档显示发出租约时调用dhclient脚本 :
dhclient获取租约时调用的networkingconfiguration脚本。 如果未指定,则使用缺省CLIENTBINDIR / dhclient脚本。 有关此文件的说明,请参阅dhclient-script(8)。
http://manpages.ubuntu.com/manpages/wily/en/man8/dhclient.8.html
Dhclient脚本文档显示,在configurationDHCP服务器提供的地址之前,先configurationdhclient-script ARP,并在地址已经存在的情况下产生DHCPDECLINE。
在实际configuration地址之前,dhclient-script应该以某种方式ARP,如果它收到一个回复,它将以非零状态退出。 在这种情况下,客户端将发送DHCPDECLINE消息到服务器并获取不同的地址。
http://manpages.ubuntu.com/manpages/wily/en/man8/dhclient-script.8.html
我没有Ubuntu的副本来查看mo(检查你的/ etc / dhclient-script),但是Linux dhclient脚本的源代码可以在这里findhttp://bazaar.launchpad.net/ 〜ubuntu的分支/ ubuntu的/狡猾/ ISC-DHCP /狡猾/视图/头:/客户/脚本/ Linux的
我在想(但不幸的是不能testing它),你可以备份你现有的dhclient脚本并编辑这个部分
Must be used on exit. Invokes the local dhcp client exit hooks, if any. exit_with_hooks() { exit_status=$1 if [ -f /etc/dhclient-exit-hooks ]; then . /etc/dhclient-exit-hooks fi # probably should do something with exit status of the local script exit $exit_status }
我认为改变exit $exit_status到exit 1将导致任何DHCP租约被拒绝…
试一试。 如果它按照我认为的那样工作,它将完全中断DHCP客户端,但是每次运行dhclient时都应该生成一个DHCPDECLINE。