/ etc / hosts에 도메인 이름을 포함 하시겠습니까?


15

CentOS 노드의 VMWare 클러스터를 설정하고 있습니다. 머신 뒤에 도메인 이름을 포함시키는 것이 가장 좋은 방법입니까? 그것을 버릴 수있는 잠재적 인 문제는 무엇입니까? 도메인이 구성을 복잡하게하거나 단순화합니까?

내 노드에있는 경우 예를 들어 192.168.1.93, 내가 변경해야합니다 /etc/hosts에서

127.0.0.1 localhost.localdomain localhost

127.0.0.1 localhost.cluster localhost
192.168.1.93 computernode1.cluster computenode1

또는

127.0.0.1 localhost
192.168.1.93 computenode1

또는

#127.0.0.1 localhost
192.168.1.93 computenode1

또는

192.168.1.93 localhost
192.168.1.93 computenode1

답변:


24

도메인 이름을 입력하는 /etc/hosts것은 선택 사항이며 아무런 영향을 미치지 않고 시스템을 실행할 수 있습니다.

시스템에서 나가는 유일한 단점은 시스템의 정규화 된 호스트 이름이 제대로 표시되지 않는다는 것입니다. 예를 들면 다음과 같습니다 hostname -f.

완전한 호스트 이름 감지 방법 :

  1. 먼저 호스트 이름 또는 'shortname'을 가져옵니다. 이것은 uname -n또는 의 출력입니다 hostname.
  2. 그런 다음, /etc/hosts(또는에있는 모든 것을 참조하고에서 /etc/resolv.conf찾을 수없는 경우 후자의 소스 로 폴백) 해당 호스트 이름의 IP 주소를 가져옵니다 /etc/hosts.
  3. 일단 IP가 있으면 다시 문의하여 역방향 조회를 수행합니다 /etc/hosts.
  4. 에 레코드가 있으면 /etc/hosts첫 번째 항목이 완전한 호스트 이름으로 사용됩니다.

간단히 말해서 정규화 된 호스트 이름을 사용하려면 다음 중 하나를 수행해야합니다.

127.0.0.1 fully.qualified.hostname hostname localhost.localdomain localhost

또는

127.0.0.1 localhost.localdomain localhost
1.2.3.4 fully.qualified.hostname hostname

1
나는 그 점을 고려하지 않았다. 정규화 된 호스트 이름을 갖는 것은 데스크톱 PC에 쓸모가 없으며 랩톱에 문제가 될 수 있지만 (랩톱이 다른 네트워크로 연결될 수 있기 때문에) 서버에 유용합니다. 예를 들어 Apache2는 FQDN을 확인할 수 없을 때 불평합니다.
lgeorget 2016 년

@lgeorget 당신은 또한 libnss-myhostname당신의 FQDN을 해결하기 위해 돌봐 줄 수 있지만 입력 할 필요는 없습니다/etc/hsots
Ulrich Dangel

5 월 문제를 야기 위의 구성은, 볼 위로 설정 데비안의 현재의 관행에 대한 토론 hosts파일을, 그리고 사용에 하나 (또는 그 부족)의 localhost.localdomain항목.
Joó Ádám

1
sudo또한 호스트 이름이 다음과 같은 경우에 불평합니다 /etc/hosts:sudo: unable to resolve host <hostname>
x-yuri

3

호스트가 도메인 이름에 동의하는 한 호스트 이름을 지정해도 /etc/hosts변경되지 않습니다. 다른 방법은에 domain매개 변수로 지정하는 것 입니다 /etc/resolv.conf. 지정하지 않으면 언젠가 네트워크 관리자가 변경하면 삶을 단순화 할 수 있습니다. 그것을 지정하면 내가 아는 한 아무것도 변경되지 않습니다.

당신은 확실히 떠나야한다 127.0.0.1 localhost또는 127.0.0.1 localhost localhost.localdomain에서 /etc/hosts. 일부 응용 프로그램은 정말 이상한 동작을 시작할 수 있습니다. localhost이것은 실제로 예상치 못한 설정이기 때문에 루프백 주소 이외의 다른 것에 바인드됩니다.


2

IP 주소 다음의 첫 번째 위치에 완전한 도메인 이름을 지정해야합니다.

우리가 읽을 때 man 5 hosts:

각 호스트에 대해 다음 정보가있는 단일 행이 있어야합니다.

IP_address canonical_hostname [별칭 ...]

규칙을 따르지 않으면 일부 소프트웨어가 작동하지 않을 수 있습니다. 예를 들어, Puppet 구성 관리 시스템은 도메인 부분을 지정하지 않았거나 FQDN 앞의 줄에 도메인이없는 별칭을두기 때문에 각 실행에서 호스트 이름을 앞뒤로 변경하기 시작할 수 있습니다.


0

이것이 실제로 "선택적"인지 확실하지 않습니다 (Patrick이 위에서 지적한 것처럼). 방금 nfs 권한이 nobody : nobody로 되돌아가는 문제를 추적했습니다. nfs 마운트 (idmapd 사용)에서 제대로 작동 할 수있는 권한이있는 것처럼 보입니다. 서버의 도메인 이름은 클라이언트의 도메인 이름과 정확히 일치해야합니다. 내가 찾은 문서 hostname -f에서 실제 호스트 이름을 빼면 클라이언트와 서버가 동일해야합니다. 또는에 클라이언트의 도메인 이름을 지정해야합니다 /etc/idmapd.conf. 각 클라이언트를 의미합니다.

도메인 이름을 지정할 위치에 대한 공식적인 규칙이 있습니까? 이 domainname명령은 / etc / hosts에서 선택하지 않는 것 같습니다. 따라서 / etc / hosts를 넣으면 파일 시스템의 여러 위치에 저장되어 있기 때문에 나를 귀찮게합니다.

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