Linux 호스트 이름 -f 명령이 RHEL에서 작동하지 않습니다


13

RHEL 5.7을 실행 중이며 hostname명령에 올바른 호스트 이름이 제공됩니다.
그러나 hostname -shostname -f반환 : Unknown host. 왜?


어떤 배포판? 내 우분투 12.04 시스템에서 3 가지 작업이 모두 있습니다.
Anthon

어떤 운영 체제를 사용하고 있습니까? 리눅스라면 어떤 배포판입니까? 내용은 /etc/hostname무엇입니까?
terdon

1
hostname -fDNS를 사용하는 경우 IP에 대한 역방향 DNS 항목이 있습니까?
Barmar

@terdon RHEL5 (red hat enterprise linux server release 5.7 (tikanga))를 사용하고 있으며 해당 파일이 없습니다 (/ etc / hostname)
redoc

@Barmar 호스트에 DNS를 구성하지 않았습니다. 호스트 파일 (/ etc / hosts)에 ip 주소와 fqdn을 추가했는데이 오류는 dns가 구성되지 않은 결과입니까?
redoc

답변:


21

( SF에 대한 내 답변 중 하나 에서 복사 )

hostname명령은 DNS 및의 결과를 반환합니다 /etc/hosts.

hostnameuname -n상자의 실제 "호스트 이름"또는 "노드 이름"과 동등 하며 실제입니다.
다른 모든 hostname인수는이 노드 이름을 사용하여 정보를 찾습니다.

계속 진행하기 전에 /etc/hosts파일 형식을 설명해야 합니다.
첫 번째 필드는 상당히 분명합니다. IP 주소는 라인의 모든 호스트 이름으로 확인되어야합니다. 두 번째 필드는 해당 IP의 기본 호스트 이름입니다. 나머지 필드는 별명입니다.

따라서 실행 hostname -f하면 먼저 노드 이름의 IP를 확인하려고 시도합니다. 당신이이 방법에 따라 hosts:구성 항목이 /etc/nsswitch.conf달라집니다이 방법을.

  • DNS를 사용하도록 구성한 경우 DNS에서 /etc/resolv.confIP를 다시받을 때까지 구성된 검색 도메인을 사용합니다 .
  • 파일을 사용하도록 구성한 경우 /etc/hosts기본 호스트 이름 또는 별명 이름이 현재 노드 이름 ( uname -n) 인 행을 찾은 다음 해당 행의 IP 주소를 리턴하십시오.

IP가 있으면 해당 IP에서 역방향 조회를 시도합니다. 다시 한 번 이것에 대한 DNS와 호스트 파일을 기반으로합니다 nsswitch.conf. 호스트 파일을 사용하는 경우 기본 항목 (파일에서 IP 다음의 첫 번째 필드)이 리턴됩니다.

hostname -aDNS에서 역방향 조회를 수행하면 결과가 1 개이므로 hosts 파일에서만 작동합니다. hosts 파일을 사용하면 일치하는 줄에 첫 번째 항목 인 기본 호스트 이름 뒤에있는 별칭을 반환합니다.

 

간단히 말해, 문제의 원인은 /etc/hosts호스트 이름 ( uname -n) 이 포함 된 항목이 없기 때문 입니다.


예제
노드 이름이 'foobar'이고 다음과 /etc/hosts같은 항목 이있는 경우 :

127.0.0.1 foobar.example.com foobar localhost.localdomain localhost

그러면 다음과 같은 명령 결과가 나타납니다.

# hostname
foobar
# uname -n
foobar

# hostname -f
foobar.example.com

# hostname -a
foobar localhost.localdomain localhost

가치를 얻는 방법에 대한 설명은 훌륭합니다! 기본 호스트 이름 localhost를 가진 127.0.0.1 줄 끝에 FQDN이 있습니다. 방금 그것들을 삭제하고 실제 IP가있는 줄에만 FQDN을 남겨두고 호스트 이름 -f가 localhost를 반환하는 문제를 해결했습니다.
qwertzguy
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.