Ubuntu 18.04: ホスト名とドメイン名を設定する

マシンのホスト名とドメイン名の設定方法について記載します。

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"にホスト名を入力します。"."や" "をつけた場合は"-"に置き換えられるので注意が必要です。

0001_Settings-Sharing-ComputerName.png

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