设置 dnsmasq 将主机名解析为本地机器的 IP

设置 dnsmasq 将主机名解析为本地机器的 IP

我正在运行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 地址。但是,对于如何改进这一点,我有两个问题:

  1. 有没有办法配置这个,而无需会心服务器的 IP 地址?我正在使用一个 bash 脚本,它可以从ifconfig输出中解析 IP 地址并将其传递给,dnsmasq但这看起来很麻烦。
  2. 如果服务器的 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 名称。

相关内容