RHEL 5.7을 실행 중이며 hostname
명령에 올바른 호스트 이름이 제공됩니다.
그러나 hostname -s
및 hostname -f
반환 : Unknown host
. 왜?
/etc/hostname
무엇입니까?
hostname -f
DNS를 사용하는 경우 IP에 대한 역방향 DNS 항목이 있습니까?
RHEL 5.7을 실행 중이며 hostname
명령에 올바른 호스트 이름이 제공됩니다.
그러나 hostname -s
및 hostname -f
반환 : Unknown host
. 왜?
/etc/hostname
무엇입니까?
hostname -f
DNS를 사용하는 경우 IP에 대한 역방향 DNS 항목이 있습니까?
답변:
( SF에 대한 내 답변 중 하나 에서 복사 )
이 hostname
명령은 DNS 및의 결과를 반환합니다 /etc/hosts
.
hostname
uname -n
상자의 실제 "호스트 이름"또는 "노드 이름"과 동등 하며 실제입니다.
다른 모든 hostname
인수는이 노드 이름을 사용하여 정보를 찾습니다.
계속 진행하기 전에 /etc/hosts
파일 형식을 설명해야 합니다.
첫 번째 필드는 상당히 분명합니다. IP 주소는 라인의 모든 호스트 이름으로 확인되어야합니다. 두 번째 필드는 해당 IP의 기본 호스트 이름입니다. 나머지 필드는 별명입니다.
따라서 실행 hostname -f
하면 먼저 노드 이름의 IP를 확인하려고 시도합니다. 당신이이 방법에 따라 hosts:
구성 항목이 /etc/nsswitch.conf
달라집니다이 방법을.
/etc/resolv.conf
IP를 다시받을 때까지 구성된 검색 도메인을 사용합니다 . /etc/hosts
기본 호스트 이름 또는 별명 이름이 현재 노드 이름 ( uname -n
) 인 행을 찾은 다음 해당 행의 IP 주소를 리턴하십시오. IP가 있으면 해당 IP에서 역방향 조회를 시도합니다. 다시 한 번 이것에 대한 DNS와 호스트 파일을 기반으로합니다 nsswitch.conf
. 호스트 파일을 사용하는 경우 기본 항목 (파일에서 IP 다음의 첫 번째 필드)이 리턴됩니다.
hostname -a
DNS에서 역방향 조회를 수행하면 결과가 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