我正在运行dnsmasq
一个简单的 DNS,用于解析正在运行的myserver.local.example.com
服务器的本地 IP 地址dnsmasq
。其他一切都转发到公共 DNS。
假设服务器的 IP 地址是 192.168.1.12,那么我的命令如下:
dnsmasq --no-hosts --no-resolv --localise-queries \
--server=1.1.1.1 --server=8.8.8.8 --server=8.8.4.4 \
--host-record=myserver,myserver.local.example.com,192.168.1.12
如果连接了多个网络接口,我会设置多个--host-record
条目,每个 IP 地址一个:
dnsmasq --no-hosts --no-resolv --localise-queries \
--server=1.1.1.1 --server=8.8.8.8 --server=8.8.4.4 \
--host-record=myserver,myserver.local.example.com,192.168.1.12 \
--host-record=myserver,myserver.local.example.com,192.168.99.57
这按预期工作。主机名解析为我配置的 IP 地址。但是,对于如何改进这一点,我有两个问题:
- 有没有办法配置这个,而无需会心服务器的 IP 地址?我正在使用一个 bash 脚本,它可以从
ifconfig
输出中解析 IP 地址并将其传递给,dnsmasq
但这看起来很麻烦。 - 如果服务器的 IP 地址因任何原因发生变化,例如网络连接后
dnsmasq
已经启动,我必须手动重启dnsmasq
。就上一个问题而言,如果dnsmasq
可以自动检测并更新而无需手动重启,那就更好了。
dnsmasq
有什么想法或建议吗?或者也许有更适合我的替代方案?
答案1
您可以使用
--interface-name=<name>,<interface>
例如
--interface-name=myserver.local.example.com,enp2s0
看http://www.thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html更多详情
使用默认配置,Dnsmasq 能够看到接口链接和 IP 地址事件,并且当接口关闭和启动时不需要重新启动来发布“接口”DNS 名称。