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
ファイルを編集し、以下を確認してください。
<machine's primary, non-loopback IP address> <hostname>.<domainname> <hostname>
そこに行があります- を含む他の行はありません
<some IP> <hostname>
。これには、127.0.0.1
(::1
IPv6)アドレスを含む行が含まれます。
NISを使用しない限り、コマンドを実行すると、これは(none)
正しい出力ですdomainname
。
DNSドメイン名が正しく設定されていることを確認するには、コマンドを使用してdnsdomainname
vs(FQDN)の出力を確認してください。hostname
hostname -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からホスト名部分と最初の点を削除してドメイン名部分を確認します。
ドメイン名の設定
関連DNSネームサーバーの更新
/etc/hosts
私の場合、新しいCentOS 7システムのローカルLAN上のDNSサーバーにエントリを追加しました。したがって、またはオプションをhostname
使用して実行するときに-d
FQDNがファイルに見つからない場合、-f
ローカルDNSサービスは完全に可能になります。解決してください。新しいホスト名のFQDN。/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に1行のエントリとして記録されます。
答え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を表示します。