DNS 서버는 한 대의 컴퓨터에서만 실행할 수 없습니다.

DNS 서버는 한 대의 컴퓨터에서만 실행할 수 없습니다.

컴퓨터와 노트북이 있는데 둘 다 DNS 서버로 127.0.0.53을 실행하고 있습니다. 한 컴퓨터가 현재 DNS 서버에서 제대로 실행되고 있지만 랩탑에 "도메인 이름 확인이 일시적으로 실패했습니다"라는 오류 메시지가 나타납니다. /etc/resolv.conf의 DNS 서버를 8.8.8.8로 변경하자 다시 작동하기 시작했습니다.

DNS 서버가 한 대의 컴퓨터에서만 작동하지 않는 이유는 무엇입니까?

편집: libnss_dns.so.2가 설치되어 있음을 확인했습니다(우분투를 사용하고 있습니다).

나는 이 가이드를 따랐다 https://manpages.debian.org/bullseye/libnss-resolve/libnss_resolve.so.2.8.en.html 내 nsswitch.conf를 수정했습니다 (코멘트 없음)

passwd:         files systemd
group:          files systemd
shadow:         files
gshadow:        files

hosts:          files mdns4_minimal [NOTFOUND=return] dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

호스트 라인을 다음으로 변경했습니다.

passwd:         files systemd
group:          files systemd
shadow:         files
gshadow:        files

hosts:          mymachines resolve [!UNAVAIL=return] files
myhostname dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

하지만 google.com ping: google.com: Name or service notknown ping을 하면 오류가 발생합니다.

Edit2: 내 노트북에서 resolvctl을 실행했는데

Global
       Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub

Link 2 (wlo1)
Current Scopes: none
     Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported

Link 3 (ipv6leakintrf0)
    Current Scopes: DNS
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: ::1
       DNS Servers: ::1
        DNS Domain: ~.

Edit3: 일부 업데이트 후에는 자동으로 제대로 작동합니다.

답변1

127.0.0.53은 실제 DNS 서버가 아니며 systemd-resolvedLinux 시스템의 새로운 DNS 확인자(= 클라이언트)에 의해 구현된 이전 버전과 호환되는 인터페이스입니다.

이를 사용하려는 의도된 방법은 libnss_resolve.so.2라이브러리를 통하는 것입니다. 즉, resolve파일 줄에 넣는 대신에 넣습니다 dns. 이렇게 하면 대부분의 프로그램이hosts:/etc/nsswitch.conf완전히 무시하다/etc/resolv.confUnix 소켓을 사용하여 직접 systemd-resolved연결됩니다 /run/systemd/resolve/io.systemd.Resolve.

C 라이브러리의 표준 이름 확인 서비스에 의존하지 않도록 특별히 코딩된 일부 프로그램은 /etc/resolv.conf사용할 DNS 서버를 찾기 위해 스스로 읽습니다. 이러한 프로그램을 잡기 위해서는 systemd-resolved127.0.0.53에서 DNS 확인자 서버/프록시 역할을 하고 그렇게 할 때 자동으로 줄을 삽입하는 것이 일반적입니다 nameserver 127.0.0.53. /etc/resolv.conf하지만 이 기능이 필요하지 않으면 끌 수 있습니다.

귀하(또는 귀하의 배포판)가 설치/사용 단계를 놓쳤고 libnss_resolve.so.2여전히 /etc/nsswitch.conf클래식 버전을 가지고 있는 dns경우 hosts:모든 DNS 액세스는 127.0.0.53 이전 버전과의 호환성 인터페이스를 통해 이루어지므로 그다지 효율적이지 않습니다.

사용하는 경우 systemd-resolvedresolvectl명령을 사용하여 시스템에서 사용하는 실제 DNS 서버를 확인합니다.

두 컴퓨터의 실제 DNS 서버 설정이 다를 것 같은데 /etc/resolv.conf어느 컴퓨터 만 보고 계시나요?더이상를 사용할 때 주의할 점 systemd-resolved.

답변2

이미 지적했듯이 컴퓨터에서 새로운 시스템화된 Linux를 실행하는 경우 systemd-resolved문제를 일으킬 수 있는 "밝은 미래"(어둠을 이해하세요)의 또 다른 정크웨어일 수 있습니다.

DNS 확인을 하이재킹하기 위해 여러 해커에 의존하는데, 이는 중지 문제 수준의 문제이기 때문에 실제로 해결할 수 없습니다.

또한 의도치 않게 여러 네트워크 확인 네임스페이스를 난독화하고 이를 새로운 네임스페이스로 축소하여 비즈니스를 병합할 수도 있고 병합하지 않을 수도 있습니다.

다음을 선택해야 합니다.

  • 올바르게 구성하는 방법을 배우고 systemd-resolved베타 버그 테스터가 되어 모든 버그를 찾아 쪼아보겠습니다.
  • /etc/resolv.conf항상 예상되기 때문에 이를 비활성화하고 오래된 심술궂은 관리 스타일을 사용하게 됩니다 .

관련 정보