이것이 내 nslookup이 수행하는 작업입니다.
ubuntu@ca:~$ time nslookup focal-250
Server: 127.0.0.53
Address: 127.0.0.53#53
Non-authoritative answer:
Name: focal-250.test
Address: 128.8.8.187
;; connection timed out; no servers could be reached
real 0m15.024s
user 0m0.005s
sys 0m0.018s
처음 6줄(즉, 올바른 응답)이 즉시 인쇄된 다음 15초의 "시간 초과"가 기다립니다. 유사한 기능 ping
도 동일합니다. 15초 동안 일시 중지한 다음 작업을 시작합니다.
이것은 systemd-resolved를 실행하는 Ubuntu 20.04 LTS 시스템입니다. 유일한 이상한 점은 dnsmasq
인터페이스 중 하나에서 이름 서비스를 수신하고 해당 인터페이스의 주소가 자체 이름 서버로 구성된다는 것입니다.
ubuntu@ca:~$ resolvectl
Global
LLMNR setting: no
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test
Link 3 (ens5)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 128.8.8.254
DNS Servers: 128.8.8.254
DNS Domain: test
Link 2 (ens4)
Current Scopes: DNS
DefaultRoute setting: yes
LLMNR setting: yes
MulticastDNS setting: no
DNSOverTLS setting: no
DNSSEC setting: no
DNSSEC supported: no
Current DNS Server: 192.168.1.1
DNS Servers: 192.168.1.1
DNS Domain: freesoft.org
ubuntu@ca:~$ ip -br addr
lo UNKNOWN 127.0.0.1/8 ::1/128
ens4 UP 192.168.4.183/24 fe80::e2c:d2ff:fe67:0/64
ens5 UP 128.8.8.254/24 fe80::e2c:d2ff:fe67:1/64
ubuntu@ca:~$ tail -5 /etc/dnsmasq.conf
listen-address=128.8.8.254
bind-interfaces
dhcp-range=128.8.8.101,128.8.8.200,12h
dhcp-authoritative
domain=test
ubuntu@ca:~$ tail -4 /etc/resolv.conf
nameserver 127.0.0.53
options edns0 trust-ad
search test freesoft.org
".test" 도메인에 대한 쿼리에 응답하는 내가 원하는 작업을 수행하고 있지만 응답을 받은 후 15초 동안 응답하지 않는 이유를 이해할 수 없습니다.
답변1
nslookup
A 및 AAAA 레코드가 모두 쿼리되므로 A 쿼리가 즉시 반환되고 AAAA가 반환되지 않으면 nslookup
즉시 응답이 인쇄되고 시간 초과가 발생합니다.
dnsmasq
다음은 128.8.8.254의 서버가 다양한 유형의 쿼리에 응답하는 방법을 보여주는 표입니다 .
dig @128.8.8.254 A focal-250 immediate success (A record)
dig @128.8.8.254 A focal-250.test immediate success (A record)
dig @128.8.8.254 AAAA focal-250 immediate SERVFAIL
dig @128.8.8.254 AAAA focal-250.test 15 second timeout, no response
출력은 nslookup
A 레코드 응답(처음 6개 라인)을 받은 다음 AAAA 레코드 대기 시간이 초과됨을 의미합니다.
이 문제를 "수정"하는 한 가지 방법 은 해당 구성 파일을 넣어 도메인에 대한 권한이 dnsmasq
있음 을 나타내는 것입니다 . 이제 다음과 같이 동작합니다:test
auth-zone=test
dig @128.8.8.254 A focal-250 immediate success (A record)
dig @128.8.8.254 A focal-250.test immediate success (A record)
dig @128.8.8.254 AAAA focal-250 immediate SERVFAIL
dig @128.8.8.254 AAAA focal-250.test immediate NOERROR (no records)
nslookup
지금 ping
응답하세요 .
또한 dnsmasq
같은 이유로 "권한 있는" 것으로 만드는 것이 유용하다고 생각합니다 in-addr.arpa
. 따라서 시간 초과 대신 즉시 NOERROR를 반환합니다. 이 systemd-resolved
서비스는 아무것도 응답하지 않는 서버가 아닌 응답을 기록하는 서버의 응답을 사용하는 것으로 보입니다.
ubuntu@ca:~$ dig +short @128.8.8.254 -x 18.165.83.71
ubuntu@ca:~$ dig +short @192.168.1.1 -x 18.165.83.71
server-18-165-83-71.iad55.r.cloudfront.net.
ubuntu@ca:~$ dig +short @127.0.0.53 -x 18.165.83.71
server-18-165-83-71.iad55.r.cloudfront.net.
답변2
nslookup에는 3번의 재시도와 5초의 시간 제한이 있는 것 같습니다. 이것은 15초 지연을 설명합니다. 대화형 모드에서 시작 하여 nslookup
이를 확인할 수 있습니다(이름을 입력하고 Enter를 누르기만 하면 됩니다). 이 모드에서는 set all
사용된 모든 옵션(및 해당 값) 목록을 작성하고 가져옵니다 nslookup
. 아마도 이것이 가장 쉬운 부분일 것이다.
nslookup
이것이 정답을 줄 것이라고 말씀하셨습니다 . 예, 하지만 DNS 서버(/etc/resolv.conf에 있는 서버)에 접속하는 것은 127.0.0.53
답이 아닙니다. dnsmasq
응답의 주소가 해당 DHCP 서버 범위 내에 있기 때문에 응답 은 128.8.8.254의 서버 에서 옵니다 .
focal-250.test
파일에 주소가 없으면 /etc/hosts
. 당신은 그렇지 않은 것 같습니다. 따라서 의 관점에서는 nslookup
으로 보낸 주소 요청에 127.0.0.53
응답하지 않고 다시 시도하도록 구성됩니다.
어려운 부분은 서버가 어떻게 systemd-resolved
작동하는지 설명하는 것입니다. 도메인 이름이 정규화된 경우, 즉 와 같은 여러 지점이 있으면 example.com
확인이 간단하고 업스트림 DNS 서버로 전송됩니다.128.8.8.254
그리고192.168.1.1(이것이 로컬 라우터라고 가정합니다) 명령에 표시된 대로 resolvectl
. 하지만 사용한 이름처럼 이름에 점이 없으면 focal-250
해상도는가능한먼저 LLMNR, MulticastDNS 및/또는 Avahi 시스템으로 이동하고, 해결되지 않은 경우 일반 DNS 서버로 이동하세요. 읽어주세요포인트 4.1은 여기이 질문을 간략하게 연구하십시오.
즉, 실제로 확인하려는 DNS 서버에서 짧은 이름이 확인되고 있는지 감지하고 확인해야 합니다. A dig @128.8.8.254 focal-250
, dig @192.168.1.1 focal-250
그리고 dig @127.0.0.53 focal-250
어느 것이 성공했는지 알려주고 정답을 제공해야 합니다.
참고: 어딘가에 잘못된 인터페이스 구성이 있습니다 ens4
. 브리지 주소는 으로 설정되어 있지만 192.168.4.183
해당 인터페이스의 DNS 서버는 으로 설정되어 있습니다 192.168.1.1
.