nslookup 从配置的本地 DNS 输出 SERVFAIL 错误

nslookup 从配置的本地 DNS 输出 SERVFAIL 错误

我正在观看有关配置 Nginx 和本地 DNS 设置的 YouTube 教程。当我在 Ubuntu 22.04 主机上进行操作时,我遇到了按照教程说明使用 Docker 设置的 DNS 服务器的问题。当我尝试解析输入的域名时,Docker DNS 服务器无法解析它。

nslookup ns.main.com

;; Got SERVFAIL reply from 127.0.0.1, trying next server
Server:         192.168.1.1
Address:        192.168.1.1#53

** server can't find ns.main.com: NXDOMAIN

我遇到的第一个问题是能够使用 docker-compose 成功构建 Docker 容器,但在尝试使用 docker-compose up 启动它们时出现错误。该错误表明端口 53 已被我的 Ubuntu 主机上的 systemd-resolved 使用。我能够解决此冲突并按照中概述的步骤运行容器Ubuntu:如何释放由 systemd-resolved 使用的端口 53这有助于从 systemd-resolved 中释放端口 53。

/etc/resolv.conf

nameserver 127.0.0.1
nameserver 192.168.1.1
nameserver fe80::1%3
search .

须藤 lsof -i :53

COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
com.docke 4079 juan  372u  IPv6 116841      0t0  UDP *:domain

我正在网上寻找 DNS 解析问题的解决方案,但我仍然不确定正确的方法。一些信息表明 IPv6 可能会导致问题,我应该避免使用它,但我不知道这是否是正确的举动。我不确定 DNS 问题的根本原因是什么 - 是否是 IPv6 兼容性问题、配置错误或其他问题。

docker-compose.yml

services:
  nginx:
    build:
      context: ./nginx/
    ports:
      - 80:80
    volumes:
      - ./nginx/html/:/usr/share/nginx/html/
      - ./nginx/conf.d/:/etc/nginx/conf.d/
  dns:
    build:
      context: ./dns/
    restart: always
    ports:
      - 53:53
      - 53:53/udp
    volumes:
      - ./dns/named.conf:/etc/bind/named.conf
      - ./dns/zone/:/etc/bind/zone/
    command: named -c /etc/bind/named.conf -g -u named

dns/Dockerfile

FROM alpine:latest
RUN apk add bind openrc
RUN rc-update -u named

dns/named.conf

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";
};

dns/zone/main.com

$ttl 86400
@       IN      SOA ns.main.com.    hostmaster.main.com.(
                    202 ; Serial
                    600 ; Refresh
                    3600 ; Retry
                    12378237) ; Expire

@       IN      NS  ns.main.com.
ns      IN      A   127.0.0.1

nginx/conf.d/default.conf

server {
    listen 80;
    server_name ns.main.com;

    location / {
        root /usr/share/nginx/html/main;
        index index.html;
    }
}

nginx/Dockerfile

FROM nginx:latest
COPY ./html /usr/share/nginx/html
RUN apt-get update && apt-get install -y procps

相关内容