Docker 容器中的简单 DNS 服务器返回服务器未知

Docker 容器中的简单 DNS 服务器返回服务器未知

这是我第一次在这里发帖。我正在尝试使用 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

相关内容