在同一网络中运行两个 DHCP 服务器

在同一网络中运行两个 DHCP 服务器

我已经将我的树莓派与无线接入点连接起来,并希望在 RPi 上运行 DHCP 服务器以正确分配 IP 和网关。这是因为 RPi 充当 VPN 的网关。不幸的是,接入点还运行 DHCP 服务器,出于某种原因我无法停用它。从 RPi 自动获取正确设置并传播给所有 wifi 用户的最佳方法是什么?

答案1

有趣的问题。基本上,如果您在同一个 LAN 上有两个 DHCP 服务器,那么就会有一场分配地址的竞赛,而且您无法确定谁会赢:您可能最终会得到一些由 Raspberry Pi 提供的地址,一些由 AP 提供的地址,而一台设备一旦断开连接,就不会重新获得与之前相同的地址。或者更糟糕的是,您可能有两个具有相同地址的设备。

因此,最好阻止其中之一。最简单的方法是:

  1. 首先,确保他们提取地址的范围不重叠:您可能将 192.168.1.11-74 用于其中一个,将 192.168.1.139-202 用于另一个。至少,这可以防止冲突。

  2. 我们现在阻止 AP 向有线客户端提供 IP 地址。假设 AP 插入 Raspberry Pi 上eth1,则以下命令将执行:

    sudo iptables  -A INPUT -i eth1 -p udp --dport 67:68 --sport 67:68 -j DROP
    sudo iptables  -A OUTPUT -i eth1 -p udp --dport 67:68 --sport 67:68 -j DROP  
    

我们已经完成了。两条评论:

DHCP 使用端口 67 和 68,采用 UDP 协议;通过阻止这些端口上的通信,您可以阻止有线客户端的 DHCP 请求到达 AP 上的 DHCP 服务器;因此有线客户端将仅由 Raspberry Pi 提供服务。

第二,你必须将 AP 直接插入树莓派(我知道树莓派只有一个以太网端口,而且已经被使用了:你可以买一个 USB 转以太网适配器,这样你的树莓派就会有第二张以太网卡)。原因是如果你将 AP 插入交换机,那么 DHCP 请求和回复将到达/来自 AP,而无需通过树莓派,因此iptables命令将毫无用处。

编辑:

我忘了说了,上面的 iptables 规则还会阻止 dhcp 请求从 AP 流向 raspberry,所以你现在的情况是 192.168.1.0xx 范围内的 DHCP 地址由 raspberry 分配给有线客户端,而 192.168.1.1xx 范围内的地址由 AP 分配给 wifi 客户端。至少,这是有序的。

相关内容