![DNS 서버는 한 대의 컴퓨터에서만 실행할 수 없습니다.](https://linux55.com/image/207800/DNS%20%EC%84%9C%EB%B2%84%EB%8A%94%20%ED%95%9C%20%EB%8C%80%EC%9D%98%20%EC%BB%B4%ED%93%A8%ED%84%B0%EC%97%90%EC%84%9C%EB%A7%8C%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%97%86%EC%8A%B5%EB%8B%88%EB%8B%A4..png)
컴퓨터와 노트북이 있는데 둘 다 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-resolved
Linux 시스템의 새로운 DNS 확인자(= 클라이언트)에 의해 구현된 이전 버전과 호환되는 인터페이스입니다.
이를 사용하려는 의도된 방법은 libnss_resolve.so.2
라이브러리를 통하는 것입니다. 즉, resolve
파일 줄에 넣는 대신에 넣습니다 dns
. 이렇게 하면 대부분의 프로그램이hosts:
/etc/nsswitch.conf
완전히 무시하다/etc/resolv.conf
Unix 소켓을 사용하여 직접 systemd-resolved
연결됩니다 /run/systemd/resolve/io.systemd.Resolve
.
C 라이브러리의 표준 이름 확인 서비스에 의존하지 않도록 특별히 코딩된 일부 프로그램은 /etc/resolv.conf
사용할 DNS 서버를 찾기 위해 스스로 읽습니다. 이러한 프로그램을 잡기 위해서는 systemd-resolved
127.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-resolved
이 resolvectl
명령을 사용하여 시스템에서 사용하는 실제 DNS 서버를 확인합니다.
두 컴퓨터의 실제 DNS 서버 설정이 다를 것 같은데 /etc/resolv.conf
어느 컴퓨터 만 보고 계시나요?더이상를 사용할 때 주의할 점 systemd-resolved
.
답변2
이미 지적했듯이 컴퓨터에서 새로운 시스템화된 Linux를 실행하는 경우 systemd-resolved
문제를 일으킬 수 있는 "밝은 미래"(어둠을 이해하세요)의 또 다른 정크웨어일 수 있습니다.
DNS 확인을 하이재킹하기 위해 여러 해커에 의존하는데, 이는 중지 문제 수준의 문제이기 때문에 실제로 해결할 수 없습니다.
또한 의도치 않게 여러 네트워크 확인 네임스페이스를 난독화하고 이를 새로운 네임스페이스로 축소하여 비즈니스를 병합할 수도 있고 병합하지 않을 수도 있습니다.
다음을 선택해야 합니다.
- 올바르게 구성하는 방법을 배우고
systemd-resolved
베타 버그 테스터가 되어 모든 버그를 찾아 쪼아보겠습니다. /etc/resolv.conf
항상 예상되기 때문에 이를 비활성화하고 오래된 심술궂은 관리 스타일을 사용하게 됩니다 .