マシンのホスト名とドメイン名の設定方法について記載します。
Table of Contents
1 ホスト名は/etc/hostnameに、ドメイン名は/etc/hostsに記載する
/etc/hostnameにホスト名とドメイン名を記載してもなんとなく上手く動作していますが、Debian系では明確に/etc/hostnameはホスト名だけせよと記載されています。
Debian系だけでなくRedHat系もこの方法でホスト名とドメイン名を設定できます。
$ sudo hostnamectl set-hostname foobar $ echo '127.0.0.1 foobar.example.com foobar' | sudo tee -a /etc/hosts 127.0.0.1 foobar.example.com foobar $ hostname foobar $ hostname -f foobar.example.com
ホスト名とドメイン名をDHCPサーバ任せにする場合はホスト名をlocalhostにして、配布されるホスト名に該当するFQDNを/etc/hostsから削除します。
2 hostnamectlでホスト名を設定する
hostnamectlでホスト名を設定します。ドメイン名は/etc/hostsで完結する方がスマートです。/etc/hostnameを直接編集したりhostnameコマンドを使うのに比べ、hostnamectlはディストリの差異を吸収してくれます。
$ sudo hostnamectl set-hostname <HOSTNAME>
3 "Settings"でホスト名を設定する
"Settings"を開き、"Sharing"の"Computer Name"にホスト名を入力します。"."や" "をつけた場合は"-"に置き換えられるので注意が必要です。
4 /etc/hostsでドメイン名を設定する
ホスト名に該当するFQDNが/etc/hostsにある場合はそのドメイン名が使用されます。
$ cat /etc/hosts <snip> 127.0.0.1 <HOSTNAME>.<DOMAIN> <HOSTNAME> <snip>
例えば以下のようなFQDNを/etc/hostsに追加します。
$ cat /etc/hosts <snip> 127.0.0.1 foobar.example.com foobar 127.0.0.1 barfoo.hiroom2.com barfoo <snip>
ホスト名をfoobarにするとドメイン名はexample.comになります。
$ sudo hostnamectl set-hostname foobar $ hostname -f foobar.example.com
ホスト名をbarfooにするとドメイン名はhiroom2.comになります。
$ sudo hostnamectl set-hostname barfoo $ hostname -f barfoo.hiroom2.com
5 DHCPサーバが配布するホスト名を使う
DHCPサーバが"option host-name"でホスト名を配布している場合はマシンのホスト名をlocalhostにしておくと、DHCPサーバが配布したホスト名が使用されます。
$ hostname -f foobar.example.com $ sudo hostnamectl set-hostname localhost $ hostname -f # DHCP server has send host-name to this machine already. kvm-ubuntu-1804-hostname.hiroom2.com
6 DHCPサーバが配布するドメイン名を使う
/etc/hostsにホスト名に該当するFQDNがなく、DHCPサーバから"option domain-name"でドメイン名が配布されている場合は配布されたドメイン名が使用されます。
$ hostname foobar $ grep foobar /etc/hosts $ hostname -f foobar.hiroom2.com