호스트 파일 : 여러 줄에 동일한 IP 주소를 갖는 것이 올바르지 않습니까?


28

잠시 동안 나는 이렇게 호스트 파일을 포맷했습니다. 두 줄에서 동일한 IP를 확인하십시오.

e.f.g.h foo.mydevsite.com
e.f.g.h foo.myOtherDevSite.com

최근에 별칭을 한 줄로 통합해야한다고 읽었습니다.

e.f.g.h foo.mydevsite.com foo.myOtherDevSite.com 

그러나 특정 별칭을 쉽게 주석 처리하거나 다음과 같이 특정 별칭에 주석을 추가 할 수 없기 때문에이 방법이 마음에 들지 않습니다.

  a.b.c.d foo.mydevsite.com          # myDevSite on box 1
# a.b.c.d foo.myOtherSite.com        # myOtherSite on box 1 
  a.b.c.d ubuntuBox                  

  e.f.g.h foo.myOtherSite.com        # myOtherSite testing environment

지금까지 이것은 잘 작동했습니다. 이것에 문제가 있습니까?

답변:


28

이 줄을 따라 뭔가를하는 것을 논의하는이 스레드를 발견했습니다. 스레드는 /etc/hosts파일에 여러 줄을 두지 않는 것에 대해 매우 단호 합니다.

발췌 -Re : / etc / hosts : 동일한 IP 주소를 가진 두 줄?

아닙니다. 리졸버는 첫 번째 해상도에서 멈 춥니 다. 다음과 같은 것이 있습니다.

   127.0.0.1 localhost.localdomain localhost
   127.0.0.1 somenode.somedom.com somenode

당신이 말하는 것을하지 않을 것입니다. 그러나 :

   127.0.0.1 somenode.somedom.com somenode
   127.0.0.1 localhost.localdomain localhost

모든 종류의 혼란을 초래할 것입니다. 전달을 포함합니다.

나는 일반적으로 당신이 시도하는 것을하지 않을 것입니다. 더 많은 증거가 필요하면 매뉴얼 페이지에서도이를 수행하지 말라고 지시합니다.

발췌 man hosts

이 매뉴얼 페이지는 / etc / hosts 파일의 형식을 설명합니다. 이 파일은 IP 주소를 IP 주소 당 한 줄씩 호스트 이름과 연결하는 간단한 텍스트 파일입니다. 각 호스트에 대해 다음 정보가있는 단일 행이 있어야합니다.

         IP_address canonical_hostname [aliases...]

호스트 이름이 FQDN이고 겹치지 않으면이 작업을 수행하는 것이 안전 할 것입니다. 위의 스레드에서 언급 한 것과 같은 겹치는 부분이 있으면 문제를 해결할 수 있습니다.


1
그 스레드에서 어느 당사자가 지적한 효과를 관찰하지 못했습니다 . 예를 들어 127.0.0.1의 여러 줄은 출력에 영향을 미치지 않으며 hostname(OP와 대조) 모든 줄이 올바르게 해결됩니다 (응답자와 대조).
goldilocks

1
그러나 gethostbyaddr()그들이 제기하는 것은 중요합니다. +1
goldilocks

매우 흥미로운! 호스트 파일이 양방향으로 사용되었다는 것을 몰랐습니다 (ip에서 호스트 이름 가져 오기, 호스트 이름에서 ip 가져 오기). 그것은 분명히 몇 가지 문제를 제기합니다. 아마도 사람이 읽을 수있는 버전을 잡아서 호스트 별명을 한 줄로 연결하여 "수정"하는 호스트 파일 빌드 프로세스를 살펴 봐야 할 것입니다. 매우 쉬운 스크립트 여야합니다.
AlexMA

1
@AlexMA- /etc/hosts슬픔을 일으키는 것을 발견 하면 언제든지 DNS를 설정할 수 있습니다. 이 정확한 이유 때문에 BIND를 실행합니다. (1) b / c 중앙에서 관리하기가 쉬우 며 (2) 많은 두통없이 원하는 방식으로 해결할 수 있습니다. 이를 위해 DNSMasq와 같은 더 가벼운 옵션이 있습니다. 이 시스템은 단일 박스에서도 사용할 수 있습니다!
slm

@slm 프로덕션 환경에 매우 적합한 옵션 인 것 같습니다. 아마도 귀중한 학습 프로젝트 일 것입니다.
AlexMA

5

세 번째 방법은 잘 작동하고 있다고 생각합니다. 이것에 문제가 있습니까?

나는 항상 조금씩 해왔지만 man gethostbyaddr그 시스템 호출 에 따라 /etc/hostsIP 주소를 이름과 연결하는 데 사용할 수 있기 때문에 잠재적 인 문제 가 있습니다 . 훨씬 일반적인 경우가 다른 방법이지만 (이름에서 주소를 얻음) 재미있는 일이 발생하는 경우이를 알고 있어야합니다.


내가 의심했지만, 그것에 관한 훌륭한 문서가없는 것처럼 보이기를 원했습니다. 또한 매우 엄격한 유닉스 배포판에 더 많은 문제가 있는지 확실하지 않았습니다. 다른 자세로 다른 사람이 없으면 아무도 당신에게 신용을 드리겠습니다.
AlexMA

글쎄, 요점 slm은 고려할 가치가 있습니다. 아마도이 시스템은 결국 이런 식으로 사용되지 않았을 것입니다. 계속해서 할 것입니다 (nbsp 127.0.0.1에 주로 사용하므로 가상 호스트 구성을 수정하지 않고 로컬로 이식하고 테스트 할 수 있습니다). 그러나 마지막 단락에주의를 기울였습니다.
goldilocks

실제로 나는 "잠재적 인 문제"를 고려하기 위해 이것을 편집했다 ...
goldilocks

0

Apache 2.4가 Unix 시스템에서 시작을 거부했습니다. 근본 원인은 / etc / hosts의 중복 행입니다. 중복 줄을 제거한 후 웹 서버를 시작할 수있었습니다.


4
이 정보는 유용한 정보이지만이 사이트의 지침에 따라 답변이 아닌 설명이어야합니다.
AlexMA
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.