如何生成 DHCP 拒绝场景/数据包

如何生成 DHCP 拒绝场景/数据包

我有一个 dhcp 数据包嗅探器,如果它发现dhcp 拒绝来自客户端的响应。我需要了解客户端可以向 dhcp 服务器发送 dhcp 拒绝响应的场景。我尝试通过最小化 dhcpserver 上的小范围 ip 并将重复的静态 ip 分配给客户端(例如 client_A)并在 client_B 上运行 dhclient 来重现此情况。但 client_B 接受重复 ip(已与 ip client_A 相同的 ip),而不是发送 dhcpdecline 响应。

这是重现 dhcp 拒绝场景的更好且更可靠的方法吗?我使用的客户端是 ubuntu,对于 dhcp 服务器,有各种可用的选项,如 vyos/microsoft。

感谢并前进!!

答案1

看起来这应该是可能的,但是需要一点点调整......

正如您在评论中所建议的那样,dhclient 不会验证路由器地址的 DHCP 服务器响应,因此我查看了文档并找出了什么样的情况可能导致 dhclient 发送 DHCPDECLINE。

客户端文档显示dhclient 脚本在签发租约时调用:

...dhclient 在获得租约时调用的网络配置脚本。如果未指定,则使用默认的 CLIENTBINDIR/dhclient-script。有关此文件的说明,请参阅 dhclient-script(8)。

http://manpages.ubuntu.com/manpages/wily/en/man8/dhclient.8.html

Dhclient 脚本文档表明,在配置 DHCP 服务器提供的地址之前,dhclient-script 会对其进行 ARP,如果该地址已经存在,则会引发 DHCPDECLINE。

在实际配置地址之前,dhclient-script 应该以某种方式对其进行 ARP,并在收到回复时以非零状态退出。在这种情况下,客户端将向服务器发送 DHCPDECLINE 消息并获取不同的地址。

http://manpages.ubuntu.com/manpages/wily/en/man8/dhclient-script.8.html

我目前没有 Ubuntu 的副本可以查看(检查你的 /etc/dhclient-script),但是 Linux 的源代码dhclient 脚本可以在这里找到http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/wily/isc-dhcp/wily/view/head:/client/scripts/linux

我在想(但不幸的是无法测试)你可以备份现有的 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_statusexit 1会导致任何 DHCP 租约被拒绝......

试一试。如果它像我认为的那样工作,它将完全破坏 DHCP 客户端,但每次运行时都会生成一个 DHCPDECLINEdh客户端

答案2

从任何流量生成器创建一个以太网 IPv4-DHCP 消息 type53,其中 04 表示拒绝,06 字节表示 NAK

相关内容