我想了解 DNS 解析在我的计算机上是如何工作的。
我正在使用Ubuntu 20.04.2 LTS (Focal Fossa)
。我的网络连接是通过 NetworkManager 设置的:
$ cat /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile
dns=dnsmasq
[ifupdown]
managed=false
[device]
wifi.scan-rand-mac-address=no
这应该设置dnsmasq
为我的 DNS 服务器。
cat /etc/resolv.conf
# Generated by NetworkManager
search fritz.box corp.net
nameserver 127.0.1.1
如果我执行 a nslookup
,则表明它正在使用 dnsmasq:
nslookup example.org
Server: 127.0.1.1
Address: 127.0.1.1#53
Non-authoritative answer:
Name: example.org
Address: 93.184.216.34
Name: example.org
Address: 2606:2800:220:1:248:1893:25c8:1946
但是,如果我使用nmcli
查询 DNS 服务器 IP 地址,它会显示我的路由器的 IP 地址:
nmcli dev show enxcc483ab34466 | grep -i dns
IP4.DNS[1]: 192.168.178.1
IP6.DNS[1]: fd00::2e91:abff:fe96:3f60
NetworkManager
我假设当我使用 进行配置时,这些设置会被忽略dns=dnsmasq
。对吗?
假设这是正确的,我试图了解哪些 DNS 服务器dnsmasq
使用:
$ ps aux | grep dnsmasq
libvirt+ 2276 0.0 0.0 9252 2024 ? S Apr04 0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
root 2278 0.0 0.0 9224 332 ? S Apr04 0:00 /usr/sbin/dnsmasq --conf-file=/var/lib/libvirt/dnsmasq/default.conf --leasefile-ro --dhcp-script=/usr/lib/libvirt/libvirt_leaseshelper
nobody 4264 0.0 0.0 15128 4540 ? S Apr04 0:08 /usr/sbin/dnsmasq --no-resolv --keep-in-foreground --no-hosts --bind-interfaces --pid-file=/run/NetworkManager/dnsmasq.pid --listen-address=127.0.1.1 --cache-size=0 --clear-on-reload --conf-file=/dev/null --proxy-dnssec --enable-dbus=org.freedesktop.NetworkManager.dnsmasq --conf-dir=/etc/NetworkManager/dnsmasq.d
root 401382 0.0 0.0 9380 2824 pts/1 S+ 18:54 0:00 grep --color=auto dnsmasq
前两个进程来自libvirt
,根据配置文件,/var/lib/libvirt/dnsmasq/default.conf
它们仅绑定到虚拟接口。但我不知道为什么会有两个进程。
第三个进程的 IP 地址为 127.0.1.1,它从目录中获取所有配置/etc/NetworkManager/dnsmasq.d
。cat /etc/NetworkManager/dnsmasq.d/*
仅向我公司的 DNS 服务器返回 IP 地址。这些地址只能通过 VPN 连接访问。
如何在没有 VPN 连接的情况下解析 DNS 名称?我遗漏了什么吗?是否以某种方式从我的设备设置dnsmasq
中使用 DNS 服务器?NetworkManager