.local로 끝나는 도메인 이름이 확인되지 않습니다.

.local로 끝나는 도메인 이름이 확인되지 않습니다.

내 Linux(우분투) 데스크탑에서 .local 호스트를 확인하는 데 이상한 문제가 있습니다. (프린터가 작동하지 않아서 알아차렸습니다. 프린터의 IP 주소를 mdns를 사용하여 확인했는데 작동하지 않는 것을 발견했습니다.) 그리고 다른 컴퓨터에 ping을 시도했습니다. 결과 :

ping: zoe.local: Name or service not known

avahi-browse는 IP 주소를 확인할 수 있습니다

= enp0s31f6 IPv4 zoe [xx:xx:xx:xx:xx:xx]                       Workstation          local
   hostname = [zoe.local]
   address = [192.168.3.221]
   port = [9]
   txt = []

그런 다음 내용을 확인했습니다 /etc/nsswitch.conf. 정상인 것 같습니다.

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

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

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

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

netgroup:       nis

/etc/resolv.conf는 /run/resolvconf/resolv.conf에 대한 심볼릭 링크이며 내용은 표준으로 보입니다.

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53
search intern

libnss-mdns도 설치됩니다.

동일한 네트워크의 두 번째 시스템에서는 .local 주소 확인이 제대로 작동합니다. 그런 다음 strace를 사용하여 두 ping 명령을 비교했습니다. systemd-resolved의 결과가 다르다는 것을 알았습니다. 루프백 인터페이스에서 트래픽을 캡처했습니다. 흥미롭게도 systemd-resolvd는 .local 도메인에 대한 SOA를 보고합니다. 다음 단계에서 지오코딩은 라우터에 .local 주소를 요청합니다. 이로 인해 위의 오류가 발생합니다.

Wireshark 캡처는 다음을 보여줍니다.

1   0.000000000 127.0.0.1   127.0.0.53  DNS 65  Standard query 0x70d2 SOA local
2   0.001437    127.0.0.53  127.0.0.1   DNS 113 Standard query response 0x459c SOA local SOA router.intern

두 번째 컴퓨터의 로컬 systemd 확인자가 SOA를 보고하지 않고 mdns 주소 확인이 제대로 작동합니다.

1   0.000000000 127.0.0.1   127.0.0.53  DNS 65  Standard query 0x70d2 SOA local
2   0.027250385 127.0.0.53  127.0.0.1   DNS 65  Standard query response 0x70d2 No such name SOA local

DNS 캐시를 플러시하려고 시도했지만 systemd-resolve --flush-caches아무런 차이가 없었습니다.

systemd-resolvd가 이상하게 동작하는 것 같습니다. 여기서 무슨 일이 일어나고 있는지 아는 사람이 있습니까? systemd가 해결하는 문제를 해결하기 위해 SOA를 사용하는 이유는 무엇입니까?

systemd-resolve --status내가 보기엔 괜찮아 보이는데:

Global
       LLMNR setting: no                  
MulticastDNS setting: no                  
  DNSOverTLS setting: no                  
      DNSSEC setting: no                  
    DNSSEC supported: no                  
          DNS Domain: intern              
          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 6 (vmnet8)
      Current Scopes: none
DefaultRoute setting: no  
       LLMNR setting: yes 
MulticastDNS setting: no  
  DNSOverTLS setting: no  
      DNSSEC setting: no  
    DNSSEC supported: no  

Link 5 (vmnet1)
      Current Scopes: none
DefaultRoute setting: no  
       LLMNR setting: yes 
MulticastDNS setting: no  
  DNSOverTLS setting: no  
      DNSSEC setting: no  
    DNSSEC supported: no  

Link 4 (virbr0-nic)
      Current Scopes: none
DefaultRoute setting: no  
       LLMNR setting: yes 
MulticastDNS setting: no  
  DNSOverTLS setting: no  
      DNSSEC setting: no  
    DNSSEC supported: no  

Link 3 (virbr0)
      Current Scopes: none
DefaultRoute setting: no  
       LLMNR setting: yes 
MulticastDNS setting: no  
  DNSOverTLS setting: no  
      DNSSEC setting: no  
    DNSSEC supported: no  

Link 2 (enp0s31f6)
      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.3.1             
         DNS Servers: 192.168.3.1             
                      fe80::2a0:57ff:fe24:94c9
          DNS Domain: ~.                      
                      intern 

답변1

고쳐 쓰다:

다음과 같은 문제를 발견했습니다.https://github.com/lathiat/nss-mdns/issues/75

내 라우터/ISP는 .local 도메인에 대한 SOA를 제공합니다. mdns 해결을 방지합니다 unicast SOA heuristic. /etc/mdns.allow다음을 추가했습니다 .

.local.
.local

mdns4_minimal 대신 mdns4로 전환하면 작동합니다.

hosts:          files mdns4 [NOTFOUND=return] dns myhostname mymachines

관련 정보