
CentOS 7.0에서 정규화된 호스트 이름을 어떻게 설정합니까?
예를 들어 다음을 사용하여 온라인에서 몇 가지 게시물을 보았습니다.
$ sudo hostnamectl set-hostname nodename.domainname
그러나 domainname을 실행하면 아무것도 반환되지 않습니다.
$ domainname
(none)
또한:
$ hostname
nodename.domainname
하지만,
$ hostname -f
hostname: Name or service not known
$ hostname -d
hostname: Name or service not known
일부 디버그 출력:
$ cat /etc/hostname
nodename.domainname
$ grep ^hosts /etc/nsswitch.conf
hosts: files dns
답변1
설정하려면호스트 이름 하다hostnamectl
을 사용하되 다음과 같이 호스트 이름만 사용하세요 .
hostnamectl set-hostname nodename
설정하려면(DNS) 도메인 이름파일을 편집 /etc/hosts
하고 다음을 확인하십시오.
<machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>
거기 줄이 있어요- 이 있는 다른 행은 없으며 여기에는 및 (IPv6) 주소가
<some IP> <hostname>
있는 행이 포함됩니다 .127.0.0.1
::1
NIS를 사용하지 않는 한 명령 (none)
을 실행할 때 출력은 올바른 것입니다 domainname
.
DNS 도메인 이름이 올바르게 설정되었는지 확인하려면 명령을 사용 하고 vs (FQDN) dnsdomainname
의 출력을 확인하세요 .hostname
hostname -f
NIS 대 DNS 도메인
이 문제는 제가 처음 접했을 때 혼란스러웠습니다. 이 domainname
명령은 인터넷의 인기보다 앞서는 것 같습니다 . DNS 도메인 이름 대신 시스템의 이름을 표시하거나 설정합니다.NIS(네트워크 정보 서비스)일명 YP(Yellow Pages) 도메인 이름(마스터 NIS 서버에서 제공하는 서비스가 있는 컴퓨터 그룹). 이 명령은 단순히 표준 라이브러리 함수에서 반환된 이름을 표시합니다 getdomainname(2)
. ( nisdomainname
및 ypdomainname
이 명령의 대체 이름입니다.)
FQDN 또는 DNS 도메인 이름 표시
확인하려면DNSdnsdomainname
(인터넷) 도메인 이름을 사용하려면 명령을 실행하거나 옵션을 hostname
사용해야 합니다 -d, --domain
. (이 dnsdomainname
명령은 DNS 도메인 이름을 설정하는 데 사용할 수 없으며 표시하는 데만 사용됩니다.)
표시하려면FQDN(정규화된 도메인 이름)시스템의 경우 옵션을 hostname
사용하여 실행합니다 -f, --fqdn, --long
(마찬가지로 이 명령은 도메인 이름 부분을 설정하는 데 사용할 수 없습니다).
위 명령은 시스템의 확인자( gethostbyname(3)
POSIX에서 지정한 대로 표준 라이브러리의 함수로 구현됨)를 사용하여 DNS 도메인 이름과 FQDN을 확인합니다.
이름 확인
RHEL 7과 같은 최신 운영 체제에서는 호스트 이름을 확인하는 데 hosts
in 항목이 /etc/nsswitch.conf
사용됩니다. CentOS 7 시스템에서 이 줄은 다음과 같이 구성됩니다(CentOS 7의 기본값).
hosts: files dns
이는 확인자 기능이 호스트 이름이나 IP 주소를 조회할 때 먼저/etc/hosts
파일그리고 다음에는DNS 서버에 나열되어 있습니다 /etc/resolv.conf
.
hostname -f
호스트의 FQDN을 얻기 위해 실행할 때 확인자 기능은 시스템의 호스트 이름에 대한 FQDN을 얻으려고 시도합니다. 호스트가 파일 /etc/hosts
이나 관련 DNS 서버에 나열되지 않으면 시도가 실패 hostname
하고 Name or service not known
.
도메인 이름을 얻기 위해 를 실행 하면 hostname -d
동일한 작업이 수행되고 FQDN에서 호스트 이름 부분과 첫 번째 점을 제거하여 도메인 이름 부분이 결정됩니다.
도메인 이름 구성
관련 DNS 이름 서버 업데이트
제 경우에는 로컬 LAN용 DNS 서버에 새 CentOS 7 시스템에 대한 항목을 이미 추가했기 때문에 또는 옵션을 사용하여
/etc/hosts
실행할 때 파일 에서 FQDN을 찾을 수 없으면 로컬 DNS 서비스가 가능했습니다. 새 호스트 이름에 대한 FQDN을 완전히 확인합니다.hostname
-d
-f
/etc/hosts
파일 사용DNS 서버가 구성되지 않은 경우 정규화된 도메인 이름을 파일에 지정할 수 있습니다
/etc/hosts
. 이를 수행하는 가장 일반적인 방법은 시스템의 기본 IP 주소와 FQDN 및 짧은 호스트 이름을 지정하는 것입니다. 예:172.22.0.9 nodename.domainname nodename
에서 발췌hostname
매뉴얼 페이지
hostname
또는 를 사용하여 FQDN을 변경할 수 없습니다dnsdomainname
.
/etc/hosts,
FQDN을 설정하는 권장 방법은 DNS 또는 NIS를 사용하여 호스트 이름을 정규화된 이름의 별칭으로 만드는 것입니다 . 예를 들어 호스트 이름이 "ursula"인 경우/etc/hosts
다음과 같은 줄이 있을 수 있습니다.127.0.1.1 ursula.example.com ursula
기술적으로: FQDN은 gethostname(2)이 반환한 호스트 이름에 대해 getaddrinfo(3)가 반환하는 이름입니다. DNS 도메인 이름은 첫 번째 점 다음 부분입니다.
/etc/host.conf
따라서 변경 방법은 확인자(일반적으로 )의 구성에 따라 달라집니다 . 일반적으로 호스트 파일은 DNS 또는 NIS보다 먼저 구문 분석되므로/etc/hosts
.
답변2
Centos7에서는 nmtui를 사용하여 호스트 이름을 설정하고 nodename.domainname / FQDN 형식을 제공하면 일관된 결과를 얻을 수 있습니다. 호스트 이름 [d/f/s]는 모두 올바른 예상 결과를 제공합니다. /etc/resolv.conf 또는 /etc/hosts에 저장되지 않습니다. 그러나 FQDN은 /etc/hostname에 한 줄 항목으로 기록됩니다.
답변3
내 경우 /etc/hostname 파일에는 호스트 이름 대신 FQDN이 포함되어 있습니다(예: hostname.example.com 대신 호스트 이름). /etc/hostname의 호스트 이름에서 도메인을 제거하면 'hostname -f' 명령이 정상적으로 작동했습니다.
CentOS 7 VM을 설치하면서 도입된 것 같습니다. 정규화된 도메인 이름이 아닌 호스트 이름만 입력했어야 했습니다.
답변4
OP(RHEL7)와 유사한 문제이며 파일에 나열된 짧은 호스트 이름에서 후행 공백을 제거하여 해결되었습니다 /etc/hostname
. . systemctl restart systemd-hostnamed
이제 hostname -f
명령으로 FQDN을 표시합니다.