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::1IPv6)アドレスを含む行が含まれます。

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に1行のエントリとして記録されます。

答え3

私の場合、/ etc / hostnameファイルにはホスト名の代わりにFQDNが含まれています(hostname.example.comではなくホスト名など)。 /etc/hostname のホスト名からドメインを削除すると、「hostname -f」コマンドが正常に機能しました。

CentOS 7 VMのインストール時に導入されたようです。完全修飾ドメイン名ではなくホスト名のみを入力する必要があります。

答え4

OP(RHEL7)と同様の問題があり、ファイルにリストされている短いホスト名から末尾のスペースを削除して解決しました/etc/hostname。 。systemctl restart systemd-hostnamedhostname -fコマンドを使用してFQDNを表示します。

関連情報