.foo.local 도메인 이름을 확인할 수 없습니다


15

내 직장과 같은 도메인 이름과 인트라넷이 server01.foo.local, server02.foo.local등 나는 최근에 그것을 테스트 할 수있는 페도라 16 실제 환경을 부팅하고이 도메인 이름 결의를하지 않는 것을 발견합니다.

예를 들면 다음과 같습니다.

$ ping server01.foo.local
ping : 알 수없는 호스트 server01.foo.local
$ ping server01
PING server01.foo.local (XXXX) ...

왜 것 server01해결 (및 이름 등을 인쇄 server01.foo.local),하지만 server01.foo.local하지 않습니다?


VMBox에서 실행되는 Ubuntu와 정확히 동일한 문제가 있습니다. @ adam820의 솔루션도 저에게 효과적이었습니다.
jimbo

답변:


22

예상대로 작동하지 않는 이유에 대해 100 % 올랐지는 않지만 mDNS 서비스 (Linux의 Avahi, Mac / Windows의 Bonjour / Zeroconf) 및 Windows 네트워크와는 매우 큰 충돌이있는 것으로 보입니다. .local을 도메인의 내부 라우팅 이름으로 사용하십시오. 발생하는 것처럼 보이는 것은 server01을 ping 할 때 해결을 위해 mDNS를 사용하지 않고 요청에 검색 도메인 (foo.local)을 추가하여 server01.foo.local에 대한 DNS 서버를 성공적으로 쿼리하는 것입니다. 그러나 mDNS (.local을 기본 컴퓨터 이름 확장명으로 사용)를 사용하는 경우 server01.foo.local을 핑하려고하면 실제로는 "server01.foo"라는 이름의 컴퓨터를 찾는 mDNS를 통해 브로드 캐스팅됩니다. 실패하면 어떤 이유로 든 직선 DNS로 이동하지 않습니다. 이에 대한 큰 해결 방법은 도메인 이름을 .local로 지정하지 않는 것입니다. 이는 도메인 구성에 대한 대부분의 Windows 관리자 교육에 위배됩니다. 그 말은 :

엔터프라이즈에서 mDNS가 종종 사용되는 홈 네트워크와 전용 DNS 서버를 실행하는 경향이있는 것처럼 mDNS가 네트워크에 영향을 미치지 않는 경우 검색 순서를 변경하는 것이 가장 쉬운 해결 방법입니다.

이것은 /etc/nsswitch.conf에 있습니다. 호스트 섹션에는 순서가 나열되며 Fedora 16의 기본값은 다음과 같습니다.

hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname

이를 다음과 같이 변경하면 :

hosts:      files dns mdns4_minimal [NOTFOUND=return] myhostname

검색 순서에서 dns를 앞으로 이동 시키면 현재 문제가 해결됩니다. 또는 mDNS가 필요하지 않다는 것을 알고 있다면 "mdns4_minimal [NOTFOUND = return]"부분을 제거하십시오.

Red Hat의 트래커 에서이 버그를 살펴보면 현재로서는 명백한 수정이없는 오래된 문제 인 것 같습니다. 왜 이런 일이 이런 식으로 발생하는지에 대해 더 많은 통찰력을 제공 할 수 있다면 감사하겠습니다.


mDNS를 섹션을 해결 제거 문제
rhollencamp

이것을 추가해 주셔서 감사합니다. 정확히 같은 문제가 있었고 dns 항목을 이동하면 먼저 해결되었습니다. 필자의 경우 Fedora가 아닌 최신 Ubuntu를 사용하고 있지만 솔루션은 정확히 동일합니다.
jimbo

아무것도 시도하지 않았지만 방금 시도해 보았고 vpnchosts: .*줄에서 해당 항목을 제거한 후 시스코 VPN을 사용하여 연결할 수 없다는 것을 알았 습니다 /etc/nsswitch.conf. 이 설정을 바꾸면 문제가 해결되었습니다.
dobbs

"실패하면 어떠한 이유로 든 직진 DNS로 이동하지 않습니다." . 그 이유는 분명하다. [NOTFOUND=return]"mDNS에서 .local 이름을 찾을 수 없다면, 그 이름은 신뢰할 수 있고 더 이상 묻지 않아도됩니다"라는 의미입니다. mDNS 이전에 DNS를 이동하는 것이 해결 방법이지만 mDNS 실패를 권한없는 것으로 만드는 것만으로도 충분합니다.
MSalters

그렇습니다. 유효한 의견입니다. 이것은 7 년 전이었습니다. 당시에는 그 사실을 몰랐습니다. 그러나 예, 패키지를 제거하거나 아래 명시된대로 패키지를 제거하거나 순서를 변경하는 것은 모두 유효한 해결 방법 / 솔루션입니다.
adam820

2

.local도메인을 사용하는 경우 다른 해결책을 제안 합니다. 먼저 .local일부 멀티 캐스트 동적 검색 에 사용하는 표준 / 컨벤션 인 것처럼 보이므로 좋지 않습니다 .

그러나 주장하면 배포판에 따라 nss-mdns패키지 또는 libnss-mdns패키지를 제거하는 것이 더 쉬우 므로 문제가 해결됩니다. 그 기능이 필요하지 않다면 왜 거기에 남아 있습니까?

여기 있습니다 yum info nss-mdns:

Summary     : glibc plugin for .local name resolution
URL         : http://0pointer.de/lennart/projects/nss-mdns/
License     : LGPLv2+
Description : nss-mdns is a plugin for the GNU Name Service Switch (NSS)
            : functionality of the GNU C Library (glibc) providing host name
            : resolution via Multicast DNS (aka Zeroconf, aka Apple Rendezvous,
            : aka Apple Bonjour), effectively allowing name resolution by common
            : Unix/Linux programs in the ad-hoc mDNS domain .local.
            : 
            : nss-mdns provides client functionality only, which means that you
            : have to run a mDNS responder daemon separately from nss-mdns if
            : you want to register the local host name via mDNS (e.g. Avahi).

1

확인할 수있는 사항 :

  • /etc/host.conf에 DNS를 쿼리하기 전에 / etc / hosts를 확인하도록 지정하는 명령이 있습니까?

  • server01이 / etc / hosts에 있습니까?

  • search foo.local에서의 / etc / 알아낼 수, conf의는? foo.local을 찾는 모든 호스트 이름에 추가합니다.

이름 서버가 올바르게 설정되어 있는지 궁금합니다. 당신은 여전히 nslookup을하는 경우, 그것은 무엇을 반환하지 server01, server01.foo.local그리고 IP 주소는 (조회 역)?


* host.conf에는 순서가 없습니다. * server01은 / etc / hosts에 없습니다. * 검색 foo.local은 /etc/resolv.conf(NetworkManager에 있습니다)에 있지만 제거해도 도움이되지 않습니다. NM이 덮어 쓰기 및 재부팅 할 수 없도록 편집 한 후 /etc/resolv.conf 쓰기 방지를 시도했습니다. 주사위 없음
rhollencamp

@ rhollencamp : 시스템에 nslookup이 있습니까?
ott--
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.