CentOS 7.0에서 정규화된 호스트 이름을 설정하는 방법은 무엇입니까?

CentOS 7.0에서 정규화된 호스트 이름을 설정하는 방법은 무엇입니까?

CentOS 7.0에서 정규화된 호스트 이름을 설정하는 방법은 무엇입니까?

다음과 같은 온라인 게시물을 보았습니다.

$ sudo hostnamectl set-hostname nodename.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

설정CPU 이름 하다hostnamectl을 사용 하되 다음과 같이 호스트 이름에만 사용하세요 .

hostnamectl set-hostname nodename

설정(DNS) 도메인 이름/etc/hosts파일을 편집 하고 다음을 확인하세요.

  1. <machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>거기 줄이 있어
  2. 이 포함된 다른 행은 없습니다 <some IP> <hostname>. 여기에는 127.0.0.1::1(IPv6) 주소가 포함된 행이 포함됩니다.

NIS를 사용하지 않는 한 명령을 실행할 때 이는 (none)올바른 출력입니다 domainname.

DNS 도메인 이름이 올바르게 설정되었는지 확인하려면 명령을 사용하고 dnsdomainnamevs(FQDN)의 출력을 확인하세요.hostnamehostname -f

NIS 및 DNS 도메인

처음 이 문제를 접했을 때 저는 혼란스러웠습니다. 이 명령은 domainname인터넷이 보급되기 이전에 이루어진 것으로 보입니다 . DNS 도메인 이름이 아니라 표시 또는 설정 시스템입니다.NIS(네트워크 정보 서비스)YP(Yellow Pages) 도메인(마스터 NIS 서버가 제공하는 컴퓨터 그룹)이라고도 합니다. 이 명령은 표준 라이브러리 함수에서 반환된 이름만 표시합니다 getdomainname(2). ( nisdomainname그리고 ypdomainname명령의 대체 이름입니다.)

FQDN 또는 DNS 도메인 이름 표시

확인이 필요하다도메인 명 시스템(인터넷) 도메인 이름은 dnsdomainname명령을 실행하거나 옵션을 hostname사용해야 합니다 -d, --domain. (이 dnsdomainname명령은 DNS 도메인 이름을 설정하는 데 사용할 수 없으며 표시하는 데만 사용됩니다.)

표시하다FQDN(정규화된 도메인 이름)시스템, hostname옵션을 사용하여 실행합니다 -f, --fqdn, --long(이 명령은 도메인 이름 부분을 설정하는 데 사용할 수 없습니다).

위 명령은 시스템의 확인자( gethostbyname(3)표준 라이브러리의 함수에 의해 구현되고 POSIX에 의해 지정됨)를 사용하여 DNS 도메인 이름과 FQDN을 결정합니다.

이름 확인

최신 운영 체제(예: RHEL 7)에서는 in이 호스트 이름을 확인하는 hosts데 사용됩니다 /etc/nsswitch.conf. CentOS 7 시스템에서 이 줄은 다음과 같이 구성됩니다(CentOS 7의 기본값).

hosts:      files dns

이는 확인자 기능이 호스트 이름이나 IP 주소를 찾을 때 먼저 확인한다는 의미입니다./etc/hosts 문서다음 시도DNS 서버에 나열된 항목은 무엇입니까 /etc/resolv.conf?

hostname -f호스트의 FQDN을 얻기 위해 실행하는 경우 확인자 기능은 시스템 호스트 이름의 FQDN을 얻으려고 시도합니다. 호스트가 파일이나 관련 DNS 서버에 나열되어 있지 않으면 /etc/hosts시도가 실패하고 hostname보고됩니다 Name or service not known.

도메인 이름 가져오기를 실행할 때 hostname -d동일한 작업을 수행하여 FQDN에서 호스트 이름 부분과 첫 번째 점을 제거하여 도메인 이름 부분을 확인합니다.

도메인 이름 구성

  1. 관련 DNS 이름 서버 업데이트

    /etc/hosts제 경우에는 새 CentOS 7 시스템의 로컬 LAN에 있는 DNS 서버에 항목을 추가했습니다. 따라서 또는 옵션을 hostname사용하여 실행할 때 -dFQDN이 파일에서 발견되지 않으면 -f로컬 DNS 서비스가 완전히 가능해집니다. 해결해 주세요. 새 호스트 이름의 FQDN입니다.

  2. /etc/hosts파일 작업

    DNS 서버를 구성하지 않은 경우 파일에 정규화된 도메인 이름을 지정할 수 있습니다 /etc/hosts. 가장 일반적인 방법은 시스템의 기본 IP 주소, FQDN 및 짧은 호스트 이름을 지정하는 것입니다. 예를 들어,

     172.22.0.9  nodename.domainname nodename
    

에서 발췌hostname매뉴얼 페이지

hostnameFQDN을 사용하거나 변경할 수 없습니다 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을 표시하십시오.

관련 정보