우분투 18.04 .local 도메인 DNS 조회가 작동하지 않습니다 작동하지 않고 재부팅 후 작동하지 않는다고 말하려고했습니다.

Ubuntu 18.04와 함께 Raspberry Pi 3을 사용하고 있습니다. 우리 회사에는 DNS 서버와 “.local”이있는 몇 개의 도메인이 있습니다. 기술적으로 이것은 정확하지 않으며 .local은 멀티 캐스트 DNS를 위해 예약되어 있기 때문에 대신 “.lan”이어야합니다. 그러나 그것이 바로 그 길이며 쉽게 바꿀 수 없습니다. 그래서 내 Windows 컴퓨터에서 문제없이 도메인 이름을 핑하고 탐색 할 수 있습니다. 그러나 우분투에서는 할 수 없습니다.

일부 도메인이 동일한 컴퓨터에 있고 IIS 웹 서버가 상황을 정렬하기 때문에 IP를 사용할 수 없습니다.

나는 수색을하고 꽤 자주 나타납니다 :

그러나 /etc/nsswitch.conf를 변경해도 속임수가 없습니다. 나는 시도했다

  • 호스트 : 파일 mdns4_minimal [NOTFOUND = return] dns myhostname # default
  • 호스트 : 파일 DNS
  • 호스트 : 파일 mdns4_minimal [NOTFOUND = continue] dns myhostname
  • 호스트 : 파일 mdns4 [NOTFOUND = return] dns myhostname
  • 호스트 : 파일 mdns4 [NOTFOUND = continue] dns myhostname
  • 호스트 : 파일 dns mdsn4_minimal myhostname
  • 호스트 : dns
  • 다른 몇

어느 것도 효과가 없었습니다. 변경 후 재부팅을 시도했습니다. avahi에 /etc/avahi/avahi-daemon.conf의 domain-name = alocal이 서비스 재시작 후 작동하지 않고 재부팅 후 작동하지 않는다고 말하려고했습니다. 이것이 작동하지 않으면 나는 avahi-daemon 서비스를 완전히 비활성화하려고 시도했습니다.

sudo systemctl disable avahi-daemon

재부팅 후 /etc/nsswitch.conf에서 몇 가지 순열을 다시 시도했지만 아무런 효과가 없었습니다.

호스트 (파일 dns)의 현재 설정 으로이 응답을 얻습니다.

dig login.name.local # not the actual name

; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33538
;; flags: qr rd ra; QUERY: 1, ANSWER:0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.name.local. 0     IN     A

;; Query time: 2msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE  rcvd: 56

그러나 dig에게 서버를 직접 쿼리하도록 지시하면 정답이 나타납니다.

dig @dnsIP login.name.local
; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57866
;; flags: qr aa rd ra; QUERY: 1, ANSWER:1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.name.local. 0     IN     A

;; ANSWER SECTION:
login.name.local. 3600 IN    A        serverIP

;; Query time: 2msec
;; SERVER: dnsIP#53(dnsIP)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE  rcvd: 56

이 버전의 Ubuntu는 네트워크 관리자와 함께 netplan을 사용합니다. 올바른 DNS IP가 목록에 있습니다. (실제로 이것이 주 DNS입니다.) 또한 dnsIp는 serverIP와 동일하지만 문제가되지는 않습니다.

브라우저를 통한 Ping 또는 연결은 물론 작동하지 않습니다. dns 쿼리를 사용하지 마십시오.

무엇을해야할지 모르겠습니다. 확실히 다른 도메인 이름으로 전환 할 수 없습니다. 서버 이름을 / etc / hosts에 넣었지만 일시적인 해결책입니다.



답변

Linux Mint 19 (Tara)에서 매우 비슷한 문제 (정확히 동일하지 않은 경우)에 직면했습니다. 3 가지 정보를 결합하여 문제를 해결했습니다. systemd-resolved의 최근 변경 사항과 관련이있는 것 같습니다.

먼저, 예 와 같이 /etc/nsswitch.conf 를 구성해야했습니다 . dns가 mdns 앞에 오면 좋을 것입니다. 나는 간단하게 끝났다.

hosts:          files dns myhostname

심판 : /unix//a/457172/271210

이 민트 버전으로 업그레이드하기 전에 이것이 내가해야 할 유일한 것입니다. 이제도 작동하도록 두 가지 다른 변경 사항을 작성했습니다.


그 후 검색 도메인을 구성하여 systemd-resolved가 원하는대로 작동합니다. [resolve] 섹션 의 Domains 설정 인 /etc/systemd/resolved.conf 파일을 편집했습니다 . 제 경우에는 다음과 같이 보입니다.

[Resolve]
#DNS=
#FallbackDNS=
Domains=trilliant.local
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes

심판 : /ubuntu//a/1031271/872881

또한 avahi 구성을 다른 것으로 변경했습니다 (정확하게 기억하면 “mdns”이지만 중요하지 않습니다). 그러나 내 이해에서 필요하지 않아야합니다. 완전성을 위해 추가하기 만하면됩니다.


그러나 다음을 호출하기 전까지는 아무것도 작동하지 않았습니다.

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

심판 : /ubuntu//a/938703/872881

이것을 호출 한 후 모든 것이 완벽하고 예상대로 작동하기 시작했습니다!

따라서 실제로 /etc/systemd/resolved.conf 파일 을 변경할 필요는 없었지만이 변경 사항은 의미가 있으므로 DNS 확인이 작동하기 위해 완전한 FQDN없이 컴퓨터 이름 만 입력 할 수있게했기 때문에이 변경 사항을 유지했습니다. .


답변

수락 된 답변으로 문제가 해결되지 않았습니다. avahi와는 아무런 관련이 없습니다. avahi 서비스가 설치되지 않았습니다. DHCP에서 IP 및 DNS 서버 설정을 가져 오도록 시스템을 설정했습니다. 그러나 dhcp 제공 DNS는 .local을 사용하여 쿼리를 확인하지 않았습니다.

실제 문제는 Ubuntu 18.4에 resolv.conf가 이름 확인을 위해 로컬 호스트를 가리키는 스텁 파일에 심볼릭 링크되어 있다는 것입니다. Localhost dns 이름 확인은 시스템이 제공된 DNS 서버에서 .local 이름을 확인하지 않고 해당 이름이 유효하지 않다고 생각 함을 의미합니다. 이것은 /etc/resolv.conf의 기본 설정입니다 :

ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 39 Jan 22 13:26 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

스텁 파일의 내용은 다음과 같습니다 (의견 제거).

 cat /run/systemd/resolve/stub-resolv.conf
 .. removed comments..
nameserver 127.0.0.53
    search reddog.microsoft.com

‘실제’resolve conf에는 dhcp의 ‘correct’dns 설정이 있습니다.

cat /run/systemd/resolve/resolv.conf

..removed comments..
nameserver 10.168.200.250 # This is my server that can resolve .local
nameserver 208.67.220.220 # these are optional, fallback dns servers
nameserver 208.67.222.222
# Too many DNS servers configured, the following entries may be ignored.
nameserver 8.8.8.8
search reddog.microsoft.com

시스템이 localhost 대신 선호하는 DNS 확인자를 사용하게하려면 symrun을 /run/systemd/resolve/stub-resolv.conf 대신 /run/systemd/resolve/resolv.conf를 가리 키도록 변경하십시오.

sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

그 직후 .local의 해결책이 작동하기 시작했습니다. 다시 부팅하거나 서비스를 다시 시작할 필요가 없습니다.


답변

우분투 18.04의 작업 방식은 다음과 같습니다.

Avahi conf 편집 :

sudo vim /etc/avahi/avahi-daemon.conf

.local을 .alocal로 변경하십시오.

[server]
domain-name=.alocal

그런 다음 resolved.conf를 엽니 다.

sudo vim /etc/systemd/resolved.conf

도메인의 주석 처리를 제거하고 편집하십시오.

[Resolve]
...
Domains=yourdomain.local
...

마지막으로 서비스를 다시 시작하십시오.

sudo service systemd-resolved restart
sudo service avahi-daemon restart


답변

나를 위해 일한 것은 로컬 DNS를 네임 서버로 추가하는 것입니다 /etc/resolvconf/resolv.conf.d/head( here 설명 ).

  1. resolvconf 패키지를 설치하십시오.

    sudo apt install resolvconf
    
  2. /etc/resolvconf/resolv.conf.d/head다음을 편집 하고 추가하십시오.

    nameserver 8.8.4.4
    nameserver 8.8.8.8
    
  3. resolvconf 서비스를 다시 시작하십시오.

    sudo service resolvconf restart
    

수정 사항은 영구적이어야합니다.


답변

내 상황은 비슷하지만 다소 달랐습니다. 우리는 myserverWindows 와 같은 서버 이름을 사용 하지만 우분투 16.04에서는 작동하지 않았으므로 사용해야했습니다 myserver.mycompany.local. 18.04로 업그레이드 한 후 다음과 같은 동작이 나타납니다.

$ ping myserver.mycompany.local
ping: myserver.mycompany.local: Name or service not known

$ ping myserver
PING myserver.mycompany.local (192.168.x.y) 56(84) bytes of data.
64 bytes from myserver.mycompany.local (192.168.x.y): icmp_seq=1 ttl=62 time=3.05 ms
...

응용 프로그램에서 단순히 교체 myserver.mycompany.local해야 myserver했습니다.


답변