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


19

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

답변:


30

세트에 호스트 이름 DO의 사용을 hostnamectl하지만이 같은 호스트 이름을 가진 :

hostnamectl set-hostname nodename


세트에 (DNS) 도메인 이름의 편집 /etc/hosts파일을하고 다음을 확인하십시오

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

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

DNS 도메인 이름이 올바르게 설정되어 dnsdomainname있는지 확인 하려면 command를 사용 하고 hostnamevs hostname -f(FQDN)의 출력을 확인하십시오 .


NIS와 DNS 도메인

이 문제는 내가 처음 왔을 때 혼란 스러웠습니다. 이 domainname명령은 인터넷의 인기를 앞설 것 같습니다 . DNS 도메인 이름 대신 시스템의 NIS (Network Information Service) 일명 YP (Yellow Pages) 도메인 이름 (마스터 NIS 서버에서 서비스를 제공하는 컴퓨터 그룹)을 표시하거나 설정합니다 . 이 명령은 단순히 getdomainname(2)표준 라이브러리 함수가 반환 한 이름을 표시합니다 . ( nisdomainname그리고 ypdomainname이 명령에 대한 대체 이름입니다.)

FQDN 또는 DNS 도메인 이름 표시

수표의 DNS (인터넷) 도메인 이름을, 당신은 실행해야합니다 dnsdomainname명령 또는 hostname-d, --domain옵션을 제공합니다. (이 dnsdomainname명령은 DNS 도메인 이름을 설정하는 데 사용할 수 없으며 표시 할 때만 사용됩니다.)

시스템 의 FQDN (정규화 된 도메인 이름) 을 표시하려면 옵션으로 실행 hostname하십시오 -f, --fqdn, --long(이와 같이이 명령을 사용하여 도메인 이름 부분을 설정할 수 없음).

위의 명령은 시스템의 리졸버 ( gethostbyname(3)POSIX에 지정된 표준 라이브러리 의 기능으로 구현 )를 사용하여 DNS 도메인 이름과 FQDN을 결정합니다.

이름 확인

RHEL 7과 같은 최신 운영 체제에서 hosts입력 항목 /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에서 호스트 이름 부분과 첫 번째 점을 제거하여 도메인 이름 부분이 결정됩니다.

도메인 이름 구성

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

내 경우에는, 내가 이미 FQDN이 발견되지 않았을 때, 그래서 내 로컬 LAN의 DNS 서버에 나의 새로운 CentOS는 대한 (7) 기계 항목을 추가했다 /etc/hosts내가 실행할 때 파일 hostname-d또는 -f옵션, 로컬 DNS 서비스를 할 수 있었다 새 호스트 이름에 대한 FQDN을 완전히 해결하십시오.

2. /etc/hosts파일을 사용 하십시오

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

172.22.0.9  nodename.domainname nodename

hostname매뉴얼 페이지 에서 발췌

hostname또는로 FQDN을 변경할 수 없습니다 dnsdomainname.

FQDN을 설정하는 데 권장되는 방법은 /etc/hosts,DNS 또는 NIS를 사용하여 호스트 이름을 정규화 된 이름의 별칭으로 만드는 것 입니다. 예를 들어, 호스트 이름이 "ursula"인 경우 다음과 같은 행이있을 수 있습니다 /etc/hosts.

27.0.1.1    ursula.example.com ursula

기술적으로 : FQDN은 gethostname (2)에 의해 리턴 된 호스트 이름에 대해 getaddrinfo (3)이 리턴하는 이름입니다. DNS 도메인 이름은 첫 번째 점 다음 부분입니다.

따라서 리졸버의 구성 (일반적으로 /etc/host.conf)을 변경하는 방법 에 따라 다릅니다 . 일반적으로 hosts 파일은 DNS 또는 NIS보다 먼저 구문 분석되므로에서에서 FQDN을 변경하는 것이 가장 일반적입니다 /etc/hosts.


답변 주셔서 감사합니다. 질문을 업데이트했습니다-불행히도 hostname -f명령이 CentOS vm에서 작동하지 않습니다.
Chris Snow

@SHC 질문의 내용 /etc/hostname과 출력 도 포함하도록 질문을 편집 할 수 있습니까 grep ^hosts: /etc/nsswitch.conf? Network Manager에 대해 잘 모르지만 섹션에 다음 /etc/NetworkManager/NetworkManager.conf줄이 포함되어 있음을 알았습니다 . [keyfile]hostname=<nodename>
Anthony G-Monica에 대한 정의

1
@SHC 저는 그 이후로이 문제를 연구하고 있으며 제 답변을 대폭 수정했습니다. 이제 귀하의 질문을보다 포괄적으로 다루어야합니다.
Anthony G-Monica의 정의

이 답변에 대한 주도권은 신체와 일치하지 않습니다. DNS 도메인 이름을 설정 hostnamectl set-hostname nodename.domainname하지 않으며 NIS 도메인 이름을 설정하지도 않습니다.
sourcejedi

@sourcejedi 지금은 시간이 없지만 기회가 생겼을 때 대답을 명확히하려고 노력할 것입니다.
Anthony G-Monica에 대한 정의

1

Centos7에서 nmtui를 사용하여 호스트 이름을 설정하고 nodename.domainname / FQDN 형식을 제공하면 일관된 결과를 얻을 수 있습니다. 호스트 이름 [d / f / s]는 모두 올바른 예상 결과를 제공합니다. /etc/resolv.conf 또는 / etc / hosts에 저장되지 않습니다. 그러나 FQDN은 단일 행 항목으로 / etc / hostname에 기록됩니다.


0

저에게 / etc / hostname 파일에는 호스트 이름 대신 FQDN이 포함되어 있습니다 (예 : hostname.example.com 대신 호스트 이름). / etc / hostname의 호스트 이름에서 도메인을 제거하면 'hostname -f'명령이 정상적으로 작동했습니다.

CentOS 7 VM을 설치할 때 이것이 소개 된 것 같습니다. 정규화 된 도메인 이름이 아닌 호스트 이름 만 입력해야합니다.

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