Docker部署Bind9 DNS服务器无法解析自定义域名test-name.test.home的问题求助
我正在跟着教程尝试用Docker部署Bind9 DNS服务器,但遇到了自定义域名无法解析的问题,想请大家帮忙看看哪里出问题了。
我的配置情况
1. named.conf配置文件
我设置了named.conf,里面的ACL和选项部分用了本地机器和网关的IP,具体内容如下:
acl internal { 192.168.1.0/24; 192.168.0.0/24; 127.0.0.1; localhost; 192.168.0.144; }; options { forwarders { 8.8.8.8; 8.8.4.4; }; allow-query { internal; }; }; zone "test.home." IN { type master; file "/etc/bind/test-home.zone"; };
2. test-home.zone区域文件
对应的区域文件内容是:
$TTL 2d $ORIGIN test.home. @ IN SOA test.home. root.test.home. ( 202306151534 ; serial 12h 15m 3w 2h ) IN NS ns.test.home. @ IN NS ns.test.home. ns IN A 172.19.0.1 test-name IN A 192.168.0.144
测试结果
- 解析公网域名正常:用
nslookup google.com 172.19.0.1能成功返回Google的IP,输出如下:
Server: UnKnown
Address: 172.19.0.1Non-authoritative answer:
Name: google.com
Addresses: 2a00:1450:401b:814::200e
142.250.203.142
- 自定义域名无法解析:执行
nslookup test-name.test.home 172.19.0.1时,返回“Non-existent domain”,输出:
Server: UnKnown
Address: 172.19.0.1*** UnKnown can't find test-name.test.home: Non-existent domain
Docker容器网络信息
我用的是Ubuntu系统,Docker容器的网络配置(来自docker inspect)如下:
"NetworkSettings": { "Bridge": "", "SandboxID": "4b80c61e0f521afd51926708b1bfcc0fdb71a755566114af9cbe93cd0a44a462", "HairpinMode": false, "LinkLocalIPv6Address": "", "LinkLocalIPv6PrefixLen": 0, "Ports": { "53/tcp": [ { "HostIp": "0.0.0.0", "HostPort": "53" } ], "53/udp": [ { "HostIp": "0.0.0.0", "HostPort": "53" } ], "953/tcp": null }, "SandboxKey": "/var/run/docker/netns/4b80c61e0f52", "SecondaryIPAddresses": null, "SecondaryIPv6Addresses": null, "EndpointID": "", "Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "IPAddress": "", "IPPrefixLen": 0, "IPv6Gateway": "", "MacAddress": "", "Networks": { "dns-experiments_default": { "IPAMConfig": null, "Links": null, "Aliases": [ "bind9", "ab0859f8c64b" ], "NetworkID": "9d5d03264503be5fee52e99bc04407da0d41f87eff3b07393805bc7aa019c734", "EndpointID": "e8612947adc69d959dbac41abf78f8f14b7394efb5bb11a4d453e8bea745c298", "Gateway": "172.19.0.1", "IPAddress": "172.19.0.2", "IPPrefixLen": 16, "IPv6Gateway": "", "GlobalIPv6Address": "", "GlobalIPv6PrefixLen": 0, "MacAddress": "02:42:ac:13:00:02", "DriverOpts": null } } }
更新情况
根据建议,我尝试用Docker容器自身的IP(172.19.0.2)进行nslookup,但直接超时了,输出如下:
DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
DNS request timed out.
timeout was 2 seconds.
*** Request to UnKnown timed-out
现在想请教大家,为什么我的自定义域名test-name.test.home无法被正确解析?应该怎么修复这个问题?
备注:内容来源于stack exchange,提问作者Michał Turczyn

