多个 DHCP 上行链路 - 除了一个之外,如何忽略所有的 DNS 和默认路由?

Nil*_*ann 4 networking dhcp ubuntu debian

多宿主设备需要为 DHCP 配置多个上行链路。除了一个DHCP 上行链路,它需要忽略所有的默认路由和 DNS 。

这里有一个类似的问题 [ Debian 接口文件 - 忽略来自 dhcp 的网关和 dns 条目],但那里的答案并没有解决我的问题:

  • 编辑全局 DHCP 客户端配置 (/etc/dhcp[3]/dhclient.conf) 将导致默认路由和 DNS 在所有DHCP 上行链路上被忽略。
  • ifmetric建议仅涉及路由,而不涉及 DNS。

此外,我希望自 2009 年以来情况有所改变。

请注意,我说的是无头嵌入式系统。NetworkManager 不是一个选项。

首选解决方案仅是 /etc/network/interfaces{.d/}。我正在寻找这样的东西:

auto  eth0
iface eth0 inet dhcp

auto  eth1
iface eth1 inet dhcp
    ignore-dhcp-option routers domain-name-servers domain-name
Run Code Online (Sandbox Code Playgroud)

附录:

我们在各种环境中安装了数十个这样的盒子。网络不在我们的控制之下。在某些情况下,这些盒子需要在多个接口上执行 DHCP。我们通常事先不知道默认路由和 DNS,即使知道,它们也可能会随着时间的推移而更改,恕不另行通知。因此我们不能静态设置它们,而必须通过“主”DHCP 客户端配置它们。

Nil*_*ann 5

(我仍然对只接触/etc/network/interfaces{,.d/}而不是接触的解决方案感兴趣/etc/dhcp/。在没有这样的解决方案的情况下,我使用了这个。)

在 中/etc/dhcp*/dhclient.confrouters, domain-name-servers, domain-name, domain-search从全局request语句中删除选项。然后加入(假设eth0就是默认路由和DNS应在设备被忽略):

interface "eth0" {
    also request routers, domain-name-servers, domain-name, domain-search;
}
Run Code Online (Sandbox Code Playgroud)

该解决方案至少适用于 isc-dhcp-client 版本 4.2.2.dfsg.1-5+deb70u8,因为它随 Debian 7 一起提供。我认为它也适用于更高版本。


编辑:

  • 确认最初的想法有细微的变化(eth0必须引用,应该是request,不是required
  • 指定适用的 dlclient 版本