dnsmasq/NetworkManager 真正使用哪些上游名称服务器?

Flo*_*nle 5 network-manager dns dnsmasq

我正在尝试进行一些故障排除并在我的笔记本电脑上安装 dnscrypt(-proxy)。我想找出我的标准 Ubuntu 安装(当然还有 NetworkManager 和 dnsmasq)有效地使用了哪些 DNS 服务器。但是我发现 dnsmasq 的配置是一个迷宫。我无法找出它设置要查询的 DNS 服务器。

首先,我检查了/etc/resolv.conf,当然,它设置为查询127.0.1.1dnsmasq-base 正在侦听的位置。好的,是时候检查 dnsmasq 配置,它设置为查询哪些服务器。/etc/dnsmasq.d/但是,它是空的,除了network-manager一个条目:bind-interfaces。那里帮助不大。所以我检查了 NetworkManager 如何调用 dnsmasq:

$ pgrep -a dnsmasq
1786 /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
Run Code Online (Sandbox Code Playgroud)

好了,所以它不使用/etc/resolv.conf,它忽略了/etc/hosts/,它的配置文件设置为/dev/null/etc/NetworkManager/dnsmasq.d是空的,太。所以那里也没有任何线索。必须回退到某些默认值还是什么?

我发现的其他文件:

  • /run/NetworkManager/resolv.confnameserver 127.0.1.1
  • /run/resolvconf/resolv.confnameserver 127.0.1.1
  • /etc/resolv.confnameserver 127.0.1.1
  • /etc/resolvconf/base为空,./head只有评论
  • /var/并且/run/没有其他文件命名resolv.conf

运行wireshark,我可以看到它正在向我的家庭路由器询问 DNS 答案(如预期)。但是它从哪里获得该 IP 以及我在哪里更改它,而不使用 dnsmasq 和 NetworkManager 的所有其他功能(例如,为 VPN 拆分 DNS)?

Flo*_*nle 4

找到通过 DHCP 接收到该信息后的保存位置:

/var/lib/NetworkManager/*lease
Run Code Online (Sandbox Code Playgroud)

更改这些设置,请参阅 NetworkManager 的文档

nmcli con modify my-office my-office ipv4.ignore-auto-dns yes ipv6.ignore-auto-dns yes
nmcli con mod test-lab ipv4.dns "8.8.8.8 8.8.4.4"
nmcli con mod test-lab ipv6.dns "2001:4860:4860::8888 2001:4860:4860::8844"
Run Code Online (Sandbox Code Playgroud)