当 dnsmasq 由 NetworkManager 进程启动时,是否可以配置 NetworkManager 或 dnsmasq 来监听 0.0.0.0 ?
我已经注意到我放进去的任何东西/etc/NetworkManager/dnsmasq.d/00-example.conf文件,例如:
listen-address=0.0.0.0
dnsmasq 由 NetworkManager 使用以下参数启动:
/usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/var/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 --conf-file=/dev/null --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d
知道如何改变吗--监听地址选项 ?
答案1
我认为你使用的是 Ubuntu,这里发生的事情是域名系统由网络管理器用作插入缓存本地 DNS 查询,这是在命令行上预定义的原因是:
--listen-address=127.0.0.1
因此,为了为您的当地的网络,你需要禁用默认的 dnsmasq,方法是注释掉上述文件下的行/etc/NetworkManager/NetworkManager.conf:
#dns=dnsmasq
完成后,重新启动 NM:
systemctl restart NetworkManager
然后你需要安装一个标准版本的 dnsmasq 并将其用于您自己的目的。
补充:一旦标准版本安装在您的一台服务器上,这将是您的 DNS 服务器,它应该有一个固定的ip,因为你的网络使用的是 dhcp 服务器,最后让你的 dns 服务器监听它的所有入侵防御系统不仅在loopback (127.0.0.1) ** 你应该把它放在配置文件 **/etc/dnsmasq.conf 下:
listen-address=0.0.0.0
答案2
我也为此苦恼过。我认为 Reda Salih 可能有正确的答案。但我已经投入了大量时间尝试让 NetworkManager 服从我的意愿,最后我终于让它工作了。我只想补充我的答案:
- 确保您的主机有静态 IP。如果您使用 DHCP(即使使用静态分配),DnsMasq 也会选择不良设置,例如对本地地址使用不同的 DNS 服务器。
- 不要将本地 IP 放入其中
/etc/hosts
,因为这样无法读取。请使用addn-hosts
其他文件的选项。 dhcp-option=3
如果它与此 Dnsmasq 主机不同(我的是),则设置为您的网关。- 请勿设置
dhcp-option=6
(除非您知道自己在做什么) - 要覆盖
listen-addr
NetworkManager 强制的设置,您可以使用interface
conf 文件中的设置。我的设置为 ,interface=eth0,lo
对我来说相当于listen-addr=0.0.0.0
。其他设置(例如 dhcp-host)正常,不需要额外提及。