*를 얻으려고 합니다.. 현지의vagrant-dns와 함께 DNS 서버를 사용하려면 도메인을 사용하세요. 작동하게 하기 위해 dnsmasq가 그 앞에서 실행되도록 설정했습니다.
NetworkManager가 설치되었지만 다음으로 설정되었습니다.dns=none
해결.conf:
nameserver 127.0.0.1 #this points to dnsmasq
테스트 솔루션:
$ nslookup domain.local
Server: 127.0.0.1
Address: 127.0.0.1#53
Name: domain.local
Address: 10.222.222.22
Dig는 동일한 문제를 해결합니다.
$ dig domain.local
; <<>> DiG 9.10.3-P4-Debian <<>> domain.local
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18052
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;domain.local. IN A
;; ANSWER SECTION:
domain.local. 86400 IN A 10.222.222.22
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sun Jan 29 19:18:52 CST 2017
;; MSG SIZE rcvd: 49
정확한 주소입니다. IP에 핑을 보낼 수 있습니다.
ping 10.222.222.22
PING 10.222.222.22 (10.222.222.22) 56(84) bytes of data.
64 bytes from 10.222.222.22: icmp_seq=1 ttl=64 time=0.185 ms
하지만 다음 주소로 ping을 보낼 수는 없습니다.
$ ping domain.local
ping: domain.local: Name or service not known
또한 브라우저에서 호스팅된 페이지를 로드하려고 시도했지만 DNS 오류가 발생했습니다. 이상하게도 다른 모든 사이트는 제대로 작동하는 것 같습니다. 하지만 해당 사이트가 localhost DNS 서버를 사용하는지 알 수는 없습니다.
데비안 8 사용 Jessie/테스트
답변1
답을 찾았어요! 따라서 대부분의 사람들은 /etc/hosts 파일이 DNS 서버와 같이 도메인을 확인한다는 것을 알게 될 것입니다. 하지만 시스템은 이 파일을 찾는 방법을 어떻게 알 수 있습니까? 파일이나 DNS 서버를 어떤 순서로 보는지 어떻게 알 수 있나요?
파일이 있습니다:/etc/nsswitch.conf
제게는 이런 말이 있습니다:
hosts: files myhostname mdns4_minimal [NOTFOUND=return] dns
이는 /etc/hosts와 같은 파일을 먼저 확인하는 것을 의미합니다. 그런 다음 시스템 호스트 이름을 확인하십시오. 그리고 mdns4가 있는데, 내 생각엔 로컬 네트워크에서 다른 컴퓨터를 찾는 데 사용되는 프로토콜인 것 같아요.
mdns4가 나를 방해하고 있습니다. [NOTFOUND=return]
. mdns는 로 끝나는 이름을 찾습니다 .local
. 발견되지 않으면 다음 및 최종 검색 방법으로 전달될 뿐만 아니라 dns
실제로 중지되고 시스템에 도메인이 존재하지 않는다고 알려줍니다. dnsmasq에 설정한 도메인은 도메인이므로 .local
절대 거기에 도달하지 않습니다.
따라서 이 문제를 해결하는 방법에는 두 가지가 있습니다. 첫 번째는 삭제입니다 [NOTFOUND=return]
. 그것이 제가 이 일을 선택한 방법이고, 아주 훌륭하게 작동합니다. mdns가 보고 .local
전달하기 전에 찾아보려고 시도하는 것 같아서 약간의 지연이 있습니다 dns
.
현재 내 파일은 다음과 같습니다.
hosts: files myhostname mdns4_minimal dns
또 다른 옵션은 실제로 mdns를 사용하지 않기 때문에 mdns를 완전히 제거하거나 다른 tld를 사용하도록 지시할 수 있는 방법이 있다는 것입니다. .alocal
그러나 그렇게 하면 mdns를 효과적으로 비활성화할 수도 있다고 생각합니다.
답변2
제 경우에는 여러 개의 네임서버 행이 있었고 /etc/resolv.conf
제가 사용하고 싶은 행은 첫 번째 행에 있었습니다.
나는 지침을 읽었고 다음과 같이 말했습니다.
여러 서버가 있는 경우 파서 라이브러리는 나열된 순서대로 쿼리합니다.
그러나 나는 그것이 항상 마지막 네임서버를 먼저 선택한다는 것을 발견했습니다.
그래서 노선을 반대로 바꿨어요/etc/resolv.conf
문제가 해결되었습니다.
답변3
RFC에 따르면 도메인 이름에는 밑줄을 사용할 수 없습니다. 내가 아는 한 이것은 문제이다. 이름을 확인하는 데 자신만의 방식을 사용 dig
하면 nslookup
괜찮습니다. Ping은 시스템 라이브러리를 사용하지만 실패합니다. 실제로 이름의 일부가 밑줄로 시작하거나 끝나는 경우 ping은 구문 분석할 수 없습니다.
답변4
사용 사례의 작은 하위 집합(예: Fedora Core 31, 긴 업그레이드 기록)에서 문제는 nss-mdns
avahi-daemon 소켓에 대한 경로가 하드코딩되었지만 다른 소켓 경로를 지정했다는 것 /var/run/avahi-daemon/socket
입니다./usr/lib/systemd/system/avahi-daemon.socket
ListenStream=/run/avahi-daemon/socket
/var/run
그리고 에 심볼릭 링크 /run
(또는 /var/run/avahi-daemon
심볼릭 링크 ) 하지 않으면 /run/avahi-daemon
연결되지 않습니다. 아래 답글을 쓰다가 우연히 이 내용을 발견했습니다.Red Hat 버그질라 버그그리고 달리는 중
strace -e open,openat,connect,read /usr/bin/getent hosts MY_PRINTER_NODE.local
개발자/유지관리자를 위한 유용한 정보를 충분히 디버깅하고 준비하는 동안 연결에 실패하는 것을 발견했습니다.
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/avahi-daemon/socket"}, 110) = -1 ENOENT (No such file or directory)
호기심에 nsswitch.conf
다음 줄을 사용했습니다.
hosts: files mdns4 [NOTFOUND=return] dns myhostname
/etc/mdns.allow
파일이 있어요
.local
.local.
여기와 다른 포럼 및 질문에 언급된 다른 모든 방법을 시도했지만 아무것도 작동하지 않습니다. 이 작업을 수행한 후:
ln -s /run/avahi-daemon /var/run/avahi-daemon
이름 .local
확인은 서비스를 다시 시작하지 않고도 ping
작동하고 작동합니다.getent
ListenStream
경로를 변경해도 괜찮을 것 같지만 /usr/lib/systemd/system/avahi-daemon.socket
설치 시 이것이 기본값입니다. 이것이 내가 해야 할 장기적인 해결책인지 아직 결정하지 못했지만, 이것이 다른 불쌍한 영혼에게 유용할 수 있기를 바랍니다.