내 DNS 서버가 제대로 작동하는지 어떻게 확인하나요?

내 DNS 서버가 제대로 작동하는지 어떻게 확인하나요?

이 사례 시나리오는 Linux가 내장된 라우터에 대한 것이지만 대답은 아마도 모든 Linux 시스템에서 동일할 것이라고 생각합니다.

이 내 꺼야DNS 확인:

~ $ cat /etc/resolv.conf
nameserver 80.58.61.250
nameserver 80.58.61.254
~ $ ping 80.58.61.250
PING 80.58.61.250 (80.58.61.250): 56 data bytes
64 bytes from 80.58.61.250: seq=0 ttl=250 time=50.0 ms
64 bytes from 80.58.61.250: seq=1 ttl=250 time=40.0 ms
^C
--- 80.58.61.250 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 40.0/45.0/50.0 ms
~ $ ping www.google.es
PING www.google.es (2a00:1450:4007:808::101f): 56 data bytes
ping: sendto: Network is unreachable
~ $ ping 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=57 time=50.0 ms
64 bytes from 8.8.8.8: seq=1 ttl=57 time=40.0 ms
64 bytes from 8.8.8.8: seq=2 ttl=57 time=40.0 ms
^C
--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 40.0/43.3/50.0 ms

보시다시피 8.8.8.8인터넷( )에서는 응답이 있지만 도메인 이름( www.google.es, 마찬가지로 )에서는 www.google.com응답이 없습니다.
DNS 서버( 80.58.61.250)가 ping에 응답합니다.
그렇다면 DNS 서버에 문제가 있는 것인지 궁금합니다.

텔넷이나 그런 방법이 있나요?지정된 DNS가 있는지 확인합니다.IP가 제대로 작동합니까(예: 도메인 이름이 요청될 때 IP 주소로 응답)?

예를 들어 SSH 서버를 테스트할 때 가능한 기술 중 하나는 다음과 같습니다.

C:\Users\Luis>telnet Midnighter- 22
SSH-2.0-OpenSSH_6.7p1 Debian-5

타사 도구를 수락합니다. 명령줄과 오픈 소스가 선호됩니다.

답변1

ICMP 핑은 작동 중인 DNS 서버가 이러한 요청에 방화벽을 걸 수 있기 때문에 좋지 않은 테스트입니다. DNS-over-UDP에는 SSH-over-TCP와 같은 "연결" 핸드셰이크(SYN/SYN+ACK/ACK)가 없으므로 가장 좋은 방법은 가상의 DNS 서버에 DNS 쿼리를 실행하고 무슨 일이 일어나는지 확인하는 것입니다. . 방화벽이 있거나 쿼리가 DNS 속도 제한에 대해 실행되는 경우(방화벽 수준 또는 DNS 서버 자체에서 이러한 쿼리는 현재 DNS 증폭 공격으로 인해 더 일반적임) 쿼리 또는 DNS 서버에 따라 다릅니다. (예를 들어, 비재귀적 쿼리에 대한 것입니다. 쿼리가 재귀적입니까 NS? 아니면 DNS 서버가 로컬이 아닌 보기로 간주하는 클라이언트입니까? 등)

나는 보통 dig(또는Net::DNSPerl 프로그램에서) DNS 확인을 위해. 또한 보기모니터링 소프트웨어, DNS에 대한 모니터링, 그래프 작성 및 보고를 지원해야 하지만 내장 라우터에서 사용하기에는 너무 무거울 수 있습니다. 몇 가지 dig예:

# possibly get server version info (unreliable)
$ dig +short @128.95.120.1 TXT CHAOS version.bind
"UW 3A7_3"
$ dig +short @8.8.8.8 TXT CHAOS version.bind
$ 
$ dig +short @8.8.8.8 NS example.org
b.iana-servers.net.
a.iana-servers.net.
$ dig +short @8.8.8.8 SOA example.org
sns.dns.icann.org. noc.dns.icann.org. 2015082419 7200 3600 1209600 3600
$ 
$ dig +short @8.8.4.4 A www.example.org
93.184.216.34
$ dig +short @8.8.4.4 CNAME www.example.org
$ 
# checking via TCP and via IPv6 might also be useful
$ dig +tcp +short @2001:4860:4860::8888 A www.example.org
93.184.216.34
$ 

BIND 유틸리티를 설치하지 않으려면 nslookup및 명령도 있습니다. getent hosts이는 강력하거나 매우 약하지 dig는 않지만 특정 호스트에 대한 조회가 특정 IP를 반환하는지 확인해야 하는 경우에는 충분할 수 있습니다.

답변2

오늘 저는 매우 이상한 문제에 직면했습니다. 실제로 내 DNS 서버는 하나의 도메인을 제외한 모든 도메인에서 작동합니다. 다른 모든 도메인에서 작동하므로 분명히 방화벽 문제는 아닙니다. 뿐만 아니라 한동안 방화벽을 변경하지 않았습니다.

좀 더 자세히 살펴보니 해당 지역의 캐시된 버전이 언급된 페이지를 마침내 발견했습니다. 그 캐시가 범인입니다. 삭제하고 서버를 다시 시작했더니 다시 작동하더군요. 도메인이 실패하기 전에 도메인을 변경했지만 여전히 그렇습니다. 이는 예상된 동작이 아닙니다.

$ dig NS www.example.com

; <<>> DiG 9.11.3-1ubuntu1.12-Ubuntu <<>> NS www.example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62918
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;www.example.com.           IN  NS

;; Query time: 605 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Fri Jun 05 13:20:25 PDT 2020
;; MSG SIZE  rcvd: 42

파일을 재설정하는 명령:

$ sudo rm /var/lib/bind/example.com.zone.jnl
$ sudo systemctl restart bind9

그 후에는 예상대로 작동했습니다.

흥미로운 점은 named-checkzone소스 파일이 괜찮기 때문에 도구가 오류를 반환하지 않는다는 것입니다...

$ sudo named-checkzone example.com /etc/lib/bind/example.com.zone

위에서 언급했듯이 문서는 괜찮습니다. 일기가 때때로 우리를 속이는 것뿐입니다.

원천:로그 롤포워드가 실패하여 동기화되지 않았습니다. 면적이 있습니다

관련 정보