회사에서 Ubuntu를 설치할 때 로컬 컴퓨터에 ping을 보낼 수 없습니다.
$ ping foobar.mycompany.local
ping foobar.mycompany.local: Name or service not known
하지만 목록의 시작 부분에 dns
넣으면 작동 합니다./etc/nsswitch.conf
# hosts: files mdns4_minimal [NOTFOUND=return] dns
hosts: dns files mdns4_minimal [NOTFOUND=return]
이유를 이해하고 싶습니다.
답변1
.local
귀하의 회사는 실제로 특수 목적의 접미사이며 IETF에서 예약한 로 끝나는 DNS 도메인을 사용합니다.멀티캐스트 DNS. 따라서 mDNS 클라이언트가 설치되어 있으므로(mdns4_minimal) 모든 *.local
이름을 우선적으로 처리하도록 구성됩니다.
(안타깝게도 기업 인트라넷에서는 존재하지 않는 도메인 이름을 만들어 내는 것이 여전히 일반적인 관행입니다.IP 주소그리고 그것이 영원히 존재하지 않기를 바랍니다...)
구성된 모듈을 하나씩 살펴보세요.
hosts: files mdns4_minimal [NOTFOUND=return] dns
- 'files' 모듈은 /etc/hosts를 검색한 다음 "찾을 수 없음"을 반환합니다.
- 처리는 다음 모듈로 계속됩니다.
- 'mdns4_minimal' 모듈은 멀티캐스트 DNS(mDNS)를 사용하여 로컬 LAN 서브넷을 검색한 다음 "찾을 수 없음"을 반환합니다.
[NOTFOUND=return]
이 오류 이후에는 처리를 계속할 수 없음을 나타냅니다. 즉, "찾을 수 없음"은 즉시 프로그램에 반환되어야 합니다.- 'dns' 모듈에 도달하지 않습니다.
왜 "[NOTFOUND=return]"이 추가됩니까? 다양한 출처에 따르면 실패한 쿼리 속도를 높이고 정보 유출을 방지하며 공용 DNS 서버의 부하를 줄이기 위해 존재합니다.
누군가의 네트워크를 가정해보자실제로 사용됨mDNS(Linux/macOS에서 일반적임). 사용자가 "MyLittleLaptop.local"을 확인하려고 시도했지만 찾을 수 없는 경우 시스템은 다음 모듈('dns')을 계속 시도하고 쿼리는 공용 DNS(예: 학교의 DNS 서버, 또는 커피숍의 라우터로).
그러나 IETF의 예약에 따르면 *.local
이름은 공용 DNS에 존재할 수 없으므로 이러한 쿼리는 쓸모가 없으며 개인 정보를 네트워크 관리자에게 공개하는 것뿐입니다. 따라서 [NOTFOUND=return] 태그가 추가되어 DNS에 완전히 도달하지 못하게 됩니다.
회사 네트워크가 .local
내부 DNS를 사용하고 있고상당히 확실하다mDNS를 사용하지 않으므로 전체 모듈을 제거하면 다음과 같은 결과가 발생합니다.
hosts: files dns
DNS 우선순위를 지정하고 싶지만 mDNS 사용 가능성을 열어두고 싶다면 끝으로 이동하세요.
hosts: files dns mdns_minimal