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を使用して起動しようとするとエラーが発生することでした。エラーは、私のUbuntuホストでsystemd-resolvedがすでにポート53を使用していることを示します。この競合を解決し、次の手順に従ってコンテナを実行できました。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 .

sudo 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/ドッカーファイル

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/ドッカーファイル

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

ベストアンサー1

おすすめ記事