我需要向在 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'