호스트 파일 항목이 있어도 내 이름 확인이 DNS에 충돌하는 이유는 무엇입니까?


15

Ubuntu 10.04.2 LTS Desktop을 실행하고 있습니다. 웹 개발자 인 저는 당연히 내 /etc/hosts파일 에 "me.com"을 만들었습니다 . 불행히도, 내 로컬 호스트 항목을 먼저 확인하기 전에 내 이름 확인이 DNS로 진행되고 있는데 이유를 알 수 없습니다.

결과적으로 내 /etc/resolv.conf nameserver 127.0.0.1가 먼저 거기에 있으면 웹 브라우저에서 me.com (로컬)에서 1 초 이내에 응답을받습니다. 그러나 해당 항목이 없으면 ISP가 약간 느리면 응답 시간이 5 초 정도 걸립니다.

문제는 너무 번거로워서 실제로 해당 항목을에 자동으로 삽입하는 방법에 대한 질문을 여기 (및 누군가가 해결)해야했습니다/etc/resolv.conf . 그러나 여기 (@shellholic) 사용자 중 한 명이이 질문을 제출해야한다고 강력하게 추천했습니다.

/etc/hosts파일 항목 을 누르기 전에 워크 스테이션 이름 확인이 DNS 서버에 먼저 도달해야하는 이유를 알고 있습니까? 지금은 resolv.conf 트릭을 사용하고 있습니다.


1
당신은 찾고 시도 할 수 있습니다 /etc/nsswitch.conf. 내 시스템의 항목은 명확하지 않지만 files옵션 으로 만 조회를 테스트 하여 차이가 있는지 확인할 수 있습니다.
belacqua

예, 우리는의 출력을 줄 수 cat /etc/nsswitch.confcat /etc/host.conf? 또한 : 핑, 브라우저, 패킷 스니핑 등을 통해 어떻게 테스트합니까?
준비

@arrange 버전을 완료하려면의 결과를 첨부 할 수 있습니다 time getent hosts me.com; hostname --fqdn; grep 'me.com' /etc/hosts; grep hosts /etc/nsswitch.conf; netstat -uln | grep ':53'; cat /etc/host.conf; wc -l /etc/hosts. 합리성을 모호하게 망설이지 마십시오.
shellholic

@shellholic ^ rationality ^ 합리적으로? ㅎ
belacqua

@jgbelacqua : 실제로
shellholic

답변:


15

이 파일 /etc/nsswitch.conf을 사용하면 이름 확인 순서를 재구성 할 수 있습니다. 기본적으로 호스트 파일은 첫 번째 파일이고 구성된 DNS입니다. 더 많은 옵션이있을 수 있습니다.

이 파일 /etc/hosts에는 IP 주소와 호스트 이름 만 표시됩니다 (원하는 경우 하나의 IP에 대한 여러 이름)

이 파일 /etc/resolv.conf은 기본 검색 도메인을 나열하고 사용할 네임 서버를 순서대로 나열합니다.


4
또한 Linux 상자의 응용 프로그램이나 서비스에서 이름을 확인한 후에는 TTL (Time To Live) 기간 동안 캐시에 남아 있습니다. 따라서 해결 순서를 전환하면 시스템을 다시 시작하거나 캐시를 지우는 것이 좋습니다.
jfmessier

'캐시'를 어떻게 지우나요?
Eric Johnson

확실하지 않지만 ifup 및 ifdown 명령으로 네트워크 연결을 다시 시작하면 가능합니다. 물론 재부팅하면 캐시가 지워 져야하지만 Linux를 사용하고 있습니다.
jfmessier

nscd이름 확인 쿼리를 캐시 할 수 있지만 ttl을 고려하지 않습니다 (따라서 호스트 캐싱은 기본적으로 비활성화되어 있음). systemd-resolved또한 항목을 캐시합니다. 이들 중 아무것도 구성되지 않은 경우 Linux 호스트는 DNS 응답을 캐시하지 않습니다 . (브라우저는 아마도 응용 프로그램 계층에서 할 수 있습니다)
Gert van den Berg
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.