当其中一个配置的接口被拔掉时,如何防止 dnsmasq 完全失败?

当其中一个配置的接口被拔掉时,如何防止 dnsmasq 完全失败?

我在 Arch Linux 上运行 dnsmasq,路由器上有 4 个 LAN 端口,用于有线、无线、DMZ 和管理接口。 dnsmasq 是我的 LAN 的 dhcp 服务器(并提供 dns 功能)。

我并不总是将东西插入所有 4 个 LAN 端口。但是,当我重新启动设备时,我希望它能够正确连接设备所连接的端口,特别是有线 LAN。

我的配置是这样的:

如果您希望 dnsmasq 仅在指定接口(和环回)上侦听 DHCP 和 DNS 请求,请在此处给出接口名称(例如 eth0)。对多个接口重复这一行。

interface=eth0
interface=eth1
interface=eth2
interface=eth3

我使用这个配置是因为我不希望 dnsmasq 在 WAN 端口上运行,在本例中我将其称为 eth4。

我的问题是,如果系统重新启动时没有将电缆插入 eth1(例如),dnsmasq 不会继续使用 eth0 或其他有效接口;它完全失败,如下所示:

Sep 16 14:16:10 router systemd[1]: Starting A lightweight DHCP and caching DNS server...
Sep 16 14:16:10 router dnsmasq[876]: dnsmasq: syntax check OK.
Sep 16 14:16:10 router dnsmasq[879]: dnsmasq: unknown interface eth1
Sep 16 14:16:10 router dnsmasq[879]: unknown interface eth1
Sep 16 14:16:10 router dnsmasq[879]: FAILED to start up
Sep 16 14:16:10 router systemd[1]: dnsmasq.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
Sep 16 14:16:10 router systemd[1]: dnsmasq.service: Failed with result 'exit-code'.
Sep 16 14:16:10 router systemd[1]: Failed to start A lightweight DHCP and caching DNS server.

此后,我的 LAN 没有 DHCP 服务器,并且我缺少 dnsmasq 提供的其他关键功能,直到我手动修复它并编辑配置文件,这只是临时(且不需要)的更改。在我的情况下,有没有办法让 dnsmasq 仅使用有效/连接的接口启动?

答案1

在评论中回答时,该选项的完整描述是(引自域名解析 手动的):

-I, -- except-interface= 不监听指定的接口。请注意, --listen-address --interface 和 -- except-interface 选项的顺序并不重要,并且 -- except-interface 选项始终覆盖其他选项。关于 --listen-address 接口标签的注释适用于此处。

相关内容