我在使用 docker 网络(特别是自定义 DNS 代理设置)时遇到了一些问题,我发现我的 resolv.conf 有点奇怪:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 172.17.0.1
nameserver 10.0.0.10
nameserver 127.0.0.53
因此,3d 方自定义 DNS 代理基本上将第三个 IP 更改为如下所示:
#nameserver 127.0.0.53
nameserver [proxy-dns-entry-ip]
我在这个 DNS 下对主机名的所有请求都被打破10.0.0.10
了nslookup
:
$ nslookup container1.hostname
;; Got recursion not available from 172.17.0.1, trying next server
Server: 10.0.0.10
Address: 10.0.0.10#53
** server can't find container1.hostname: NXDOMAIN
$ nslookup container1.hostname [proxy-dns-entry-ip]
Server: 192.168.144.3
Address: 192.168.144.3#53
Non-authoritative answer:
Name: container1.hostname
Address: 192.168.128.3
Name: container1.hostname
Address: 192.168.128.3
我已经编辑了文件,只是注释掉了前两个 IP 地址,并且新的 DNS 工作正常,当这个代理被禁用并且唯一的条目是127.0.0.53
时,主机网络也工作正常(比如,我可以 ping google并使用我的浏览器),码头工人和容器也在工作。
我对网络很陌生(尤其是 Linux)。有人可以向我解释这 3 个地址发生了什么以及它们如何与 ubuntu 的 DNS 服务器耦合(我的意思是我在 GUI 网络设置中定义的那些)?