/ etc / hosts의 호스트 이름 및 IP 주소 매핑


14

내 리눅스 머신에서을 실행 hostname하면을 표시 mongodb하지만 실행 host mongodb하면을 표시합니다.

mongodb@mongodb:/var/hadoop/hadoop-1.2.1/bin$ host mongodb
Host mongodb not found: 2(SERVFAIL)

/etc/hosts파일 :

192.168.10.10   mongodb
192.168.10.10   localhost
127.0.0.1       localhost
#127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1     ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
  • 내 첫 번째 질문은 다음과 같습니다. /etc/hostsIP에서 호스트 이름으로 매핑하기 때문에이 시스템에서 호스트 이름 mongodb을 IP 192.168.10.10으로 확인할 수없는 이유는 무엇입니까? 대신 내가 실행 host localhost하면 해결되고 다음을 표시 할 수 있습니다.

    localhost has address 127.0.0.1
    
  • 또 다른 질문 : /etc/hosts파일 에 따르면 호스트 이름 localhost은 루프백 IP 주소 127.0.0.1 대신 192.168.10.10으로 확인되어야합니다. 아무도 나에게 설명 할 수 있습니까?

답변:


30

host(그리고 nslookup명시 적으로) 유틸리티 쿼리 DNS 서버와 상담하지 않는 /etc/hosts기본 시스템 구성 파일을. 당신이 traceroute또는 ping그 주소라면, 당신은 그것이 올바르게 해결되는 것을 볼 것입니다.

당신이 하지 변경할 localhost127.0.0.1 이외의 다른 매핑이 많은 것을 이상한 미묘한 영향을 미칠 수 있습니다. 나는 그것이/etc/hosts 작성된 순서대로 파싱 되었다고 생각 한다 .

192.168.10.10   localhost
127.0.0.1       localhost

.. 두 번째 항목이 첫 번째 항목보다 우선 할 수 있습니다.


5
/etc/hosts없는 어떤 것 인 직접 DNS 서버를 쿼리 할 때 DNS 확인에 효과를 host않습니다. 그러나 많은 시스템 도구 및 유틸리티 localhost정의를 루프백 주소로 사용하기 위해 정의를 사용 하고 /etc/hostsDNS에 엄격하게 가기보다는 이름을 확인하기 위해 시스템 이름 확인 ( DNS를 조회하기 전에 확인)을 사용합니다. 항상 존재하지 않을 수도 있습니다.
DopeGhoti

1
/etc/hosts파일 관련 문제에 대한 경험을 공유 할 수도 있습니다 localhost. 과거 127.0.0.2 localhost에는 호스트 파일에 a 를 삽입 하고 마지막 localhost항목으로 모든 소프트웨어 및 라이센스 문제를 일으키는 소프트웨어를 사용했습니다. 따라서 권장 사항은 파일 127.0.0.1 localhost의 첫 번째 항목으로 사용 하고 해당 파일에 /etc/hosts다른 localhost항목 이 없는지 확인하는 것입니다 . 그리고 ipv6도 확인합니다.
ron

5
다소 간결 해지려면 nsswitch.conf에서 호스트 조회를 구성한 방법 인 경우 dns 조회 수 있는 ns 조회를 수행하십시오 .
symcbean

1
@symcbean-당신이 말하는 것은 정확합니다. 나는 그 pedantic을 부르지 않을 것입니다.
DarkHeart

2
명백한 예외 /etc/resolv.conf는 캐싱과 같은 장치에서 직접 실행되는 DNS 서버를 가리키고 해당 dnsmasq서버가 /etc/hosts외부 서버를 쿼리하기 전에 로컬 서버를 참조하는 경우입니다. 그런 다음 간접적으로 같은 명령 이 host귀하의 영향을받습니다. /etc/hosts이것은 드문 설정이지만 장치와 함께 제공된 것을 보았으며 그러한 시스템을 사용하는 사람의 경험이 누군가 가이 독특한 설정을 알지 못하면이 답변과 충돌하는 것처럼 보일 수 있습니다 .
mtraceur

9

DopeGhoti의 답변 외에도 /etc/hosts우선 순위를 포함 하여 해결을 테스트하기 위해 getent hosts <some_hostname>명령을 사용할 수 있습니다 .


-3

TAB을 사용하는 대신 IP와 호스트 이름 사이에 공백이 여러 개 포함 된 / etc / hosts와 비슷한 문제가 발생했습니다. TAB로 변경 한 후 ping을 통해 호스트 이름을 확인할 수 있습니다.

127.0.0.1        test.local
         ^^^^^^^^ → Should be a TAB not multiple spaces.

/superuser//a/938366/467479 에서도 참조 하십시오


5
이것은 나를 놀라게한다. 맨 페이지에 hosts따르면 : Fields of the entry are separated by any number of blanks and/or tab characters. 아마도 귀하의 경우 IP와 호스트 이름 사이에 인쇄 할 수없는 외형적인 문자가 있습니까?
dr_

인쇄 할 수없는 문자는 없었습니다. 나는 이것을 여기에 게시하기 전에 이것을 확인했다;)
Thomas Lauria

탭 문자가없고 SLES 11.x를 실행하고 dvd에서 새로 설치 한 후 / etc / hosts 파일 127.0.0.1뒤에 7 개의 공백이오고 뒤에 localhost. 따라서 여러 공백 문자에 특히 문제를 고정하고 탭 문자를 솔루션으로 사용하여 결론을 내리는 것이 약간 주저합니다.
ron

탭 대 공간을 언급하는 것을 잊어 버렸습니다. 리눅스의 특정 버전이나 배포판에서 발생할 수 있습니다. 버그일까요? 이 경우 탭이나 공백을 사용하여 다양한 IP 주소 / 호스트 이름 항목을 만들 수 있으면 핑을 수행하여 문제가 해결되는지 확인하십시오. 그냥 사용하지 마십시오localhost
ron

불행히도 나는 어떤 기계 (그리고 배포판)에 문제가 있었는지 기억하지 못한다 ...-나는 그것이 virtualboximages.com/의 Ubuntu 15.05에 있다고 생각합니다 ... 나는 그것을 평가하려고합니다.
Thomas Lauria
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.