![Docker 容器中的简单 DNS 服务器返回服务器未知](https://linux22.com/image/783478/Docker%20%E5%AE%B9%E5%99%A8%E4%B8%AD%E7%9A%84%E7%AE%80%E5%8D%95%20DNS%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E8%BF%94%E5%9B%9E%E6%9C%8D%E5%8A%A1%E5%99%A8%E6%9C%AA%E7%9F%A5.png)
这是我第一次在这里发帖。我正在尝试使用 nginx 配置 DNS 服务器,以便有两个 docker 容器。出于某种原因,当我执行 nslookup ns.main.com 时,它返回服务器:未知。
这是我的 DNS 文件
$TTL 86400
@ IN SOA ns.main.com. hostmaster.main.com. (
202 ; Serial
600 ; Refresh
3600 ; Retry
1209600 ; Expire
3600) ; Negative Cache TTL
@ IN NS ns.main.com.
ns IN A 127.0.0.1
我在本地执行此操作,因此我使用环回地址。当我执行 nslookup ns.main.com 时,我收到此消息:
Server: UnKnown
Address: fd28:8d22:2169:0:9221:6ff:feb3:1438
named.config 文件如下所示:
options {
directory "var/bind";
allow-transfer { "none"; };
allow-query { any; };
listen-on { any; };
};
zone "main.com" IN {
type master;
file "/etc/bind/zone/main.com";
};
zone "secondary.com" IN {
type master;
file "/etc/bind/zone/secondary.com";
};
这可能是什么问题?
这是我正在遵循的教程。
https://www.youtube.com/watch?v=GlCloo47p_E&list=PLOLrQ9Pn6cawvMA5JjhzoQrnKbYGYQqx1&index=3&ab_channel=VeryAcademy
答案1
我在本地执行此操作,因此我使用环回地址。当我执行 nslookup ns.main.com 时,我收到此消息...
您具体运行了什么命令?如果您只是运行nslookup ns.main.com
,nslookup 就会/etc/resolv.conf
查找名称服务器,这可能不是您想要的。
您可以nslookup
通过传递第二个命令行参数来提供显式的服务器:
nslookup <name_to_lookup> <server_to_query>
您的 ; 中有一个拼写错误named.conf
,您有:
directory "var/bind";
你可能指的是:
directory "/var/bind";
您还需要确保该目录存在。
如果我named.conf
根据上述更改进行部署并将区域记录放入/etc/bind/zone/main.com
,则nslookup
似乎可以正常工作:
# nslookup ns.main.com localhost
Server: localhost
Address: ::1#53
Name: ns.main.com
Address: 127.0.0.1
我已经准备好了完整的 Dockerfile 和相关文件这里作为演示;如果你构建一个图像:
$ docker build -t named .
然后运行它:
$ docker run --name named --rm -d named
你可以验证它是否有效:
$ docker exec named nslookup ns.main.com localhost
Server: localhost
Address: ::1#53
Name: ns.main.com
Address: 127.0.0.1