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

bon*_*nza 9 networking home-server dhcp-server

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

Mar*_*iae 13

有趣的问题。基本上,如果您在同一个 LAN 上有两个 DHCP 服务器,就会出现分配地址的竞争,并且您无法确定谁会获胜:您最终可能会得到一些地址由 raspberry 提供,一些由 AP 提供,还有一个单个设备,一旦断开连接,不会重新获得与以前相同的地址。或者,更糟糕的是,您可能有两个地址相同的设备。

因此,阻止两者之一是个好主意。最简单的事情如下:

  1. 首先,确保他们绘制地址的范围不重叠:一个是 192.168.1.11-74,另一个是 192.168.1.139-202。至少,这可以防止冲突。

  2. 我们现在阻止 AP 为有线客户端提供 IP 地址。假设 AP 插入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  
    
    Run Code Online (Sandbox Code Playgroud)

我们完了。两条评论:

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

其次,一定要把AP直接插在树莓派上(我知道树莓派只有一个网口,已经用过了:你可以买一个USB转以太网的适配器,你的树莓派会有第二张网卡)。原因是如果您将 AP 插入交换机,那么 DHCP 请求和回复将到达/来自 AP,而不会通过树莓派,因此iptables命令将毫无用处。

编辑:

我忘了说上面的 iptables 规则还阻止了 dhcp 请求从 AP 流向树莓派,因此您现在的情况是 192.168.1.0xx 范围内的 DHCP 地址由树莓派提供给有线客户端,而192.168.1.1xx 范围内的地址由 AP 提供给 wifi 客户端。至少,这是有序的。

  • @bonanza 害怕这样:从无线客户端到 AP 的所有流量都不会通过树莓派,既没有请求也没有回复。所以没有办法阻止它:一切都发生在 AP 内部。 (2认同)