dnsmasq:在 IP 超出子网的网桥上提供 DHCP

dnsmasq:在 IP 超出子网的网桥上提供 DHCP

我想使用 dnsmasq 在 Linux 桥上提供 DHCP 服务:

  • 预计只有一个虚拟机可以连接到网桥
  • VM 的 MAC 已修复
  • VM 应通过 DHCP 获取静态 IP
  • 网桥本身不应该从子网获取任何 IP(但可以使用虚拟 IP,如 169.254.xx/16)

以下是我正在使用的配置:

port=0
bind-interfaces
interface=br0
dhcp-range=10.0.0.2,static,255.255.0.0
dhcp-host=52:54:00:d1:82:c4,10.0.0.2,infinite

问题是,在我看来,我必须为网桥指定一个子网内的 IP(如 10.0.0.1/16)才能使整个系统正常工作。如果我不在网桥上指定任何 IP,或者只指定一个虚拟 IP(如 169.254.xx/16),我的虚拟机将不会从 DHCP 获取任何 IP。

那么是否有任何 dnsmasq 选项/标志可让我利用来实现这一点?非常感谢!

答案1

DHCP 确实需要客户端和服务器之间的本地子网通信。

初始 DISCOVER、OFFER、REQUEST 和 ACK 是在 0.0.0.0 和 255.255.255.255 之间进行的,但服务器确实从其自己的 IP 进行响应。但是,任何续订都直接单播到服务器 IP。

因此,您想要做的事情有点超出规格,但是通过增加一层 DHCP 中继也许可以实现。

答案2

在深入研究了 dnsmasq 的源代码后,我发现共享网络功能似乎对我有用。添加的shared-network=...行确实起了作用,尽管我不能 100% 确定这是正确/安全的方法。

port=0
bind-interfaces
interface=br0
shared-network=br0,10.0.0.101
dhcp-range=10.0.0.101,static,255.255.0.0
dhcp-host=52:54:00:d1:82:c4,10.0.0.101,infinite

相关内容