在 OpenWRT 中使用 UCI 向 dnsmasq 添加 --address=... 选项

在 OpenWRT 中使用 UCI 向 dnsmasq 添加 --address=... 选项

我需要向在 OpenWRT 上运行的 dnsmasq 添加通配符地址记录。

如果我从命令行调用 dnsmasq,它将看起来像这样:

dnsmasq --address=/#/123.123.123.123 ...

我想使用UCI 配置 dnsmasq,但我无法弄清楚如何添加此选项。

config dnsmasq <some name>一个复杂因素是,我为不同的接口配置了两个 dnsmasq 实例。因此,我在 中有两个部分/etc/config/dhcp。不幸的是,我只需要将此通配符添加到其中一个部分,因此我认为我不能使用/etc/dnsmasq.conf它来指定此选项,因为它将应用于两个实例(如果我理解正确的话)。而且,不幸的是,似乎没有允许我dnsmasq.conf为其中一个接口指定附加选项的选项。

我的第一个想法是添加一个option addnhosts ...仅针对其中一个实例指定另一个主机文件,但似乎主机文件不支持通配符。

这有可能吗?如果可以,怎么做?

答案1

事实证明,实际上有一个未记录的列表选项address可以解决这个问题......

list address '/#/123.123.123.123'

我想这是有道理的...:)

答案2

您可以使用 DHCP 和这些命令通过 UCI 在 Dnsmasq 中添加地址:

将选项 address=/example.local/192.168.123.123 添加到 Dnsmasq

uci add_list dhcp.@dnsmasq[0].address='/example.local/192.168.123.123'

保存对 DHCP 的更改:

uci commit dhcp

重新启动 Dnsmasq:

/etc/init.d/dnsmasq restart

就是这样。

您还可以使用相同的过程添加其他选项,例如使用以下方式有条件转发到 Dnsmasq:

uci add_list dhcp.@dnsmasq[0].server='/example.com/1.1.1.1'

要显示所有选项,请使用:

uci show dhcp

要删除任何添加的选项,只需使用:

uci del_list dhcp.@dnsmasq[0].server='/example.com/1.1.1.1'

相关内容