Advanced Ubuntu Administration and Management Best Practices
Ubuntu Server の運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
Ubuntu 26.04 をサーバーとして使う場合、ホスト名は単なる表示名ではありません。SSH の接続先、ログの出力元、証明書の SAN、監視対象、バックアップ対象、内部サービスの識別に使われるため、あとから場当たり的に変えると周辺設定とのずれが残りやすくなります。
そのため、インストール直後の段階で FQDN と短縮名の扱いを決めておくと、その後の Netplan、DNS、SSH、証明書、監視の設定が読みやすくなります。この記事では hostnamectl による設定、/etc/hosts の最小構成、名前解決とログ表示の確認までを扱います。
例では web01.example.net を使います。実際の環境では、自分の管理するドメイン、内部 DNS の方針、証明書で使う名前に合わせて読み替えてください。
- FQDN と短縮名をどう使い分けるか
hostnamectlで static hostname を設定する手順/etc/hostsに書く内容と、DNS に任せる内容の境界- 名前解決、SSH 表示、ログ表示での確認
- 再ログイン後、再起動後に見直すポイント
| 対象 OS | Ubuntu 26.04 Server |
|---|---|
| 設定コマンド | hostnamectl set-hostname |
| 補助ファイル | /etc/hosts |
| 確認コマンド | hostnamectl、hostname -f、getent hosts |
| 推奨 | 環境内で一意に識別できる FQDN を決めてから設定する |
ホスト名の方針を決める
まず決めるべきことは、そのサーバーをどの名前で正として扱うかです。サーバーでは短縮名だけで運用するより、FQDN を正本にした方が、証明書、監視、ログ検索、構成管理の表記を合わせやすくなります。
たとえば web01.example.net を正本にし、作業時の入力を短くしたい場面だけ web01 を alias として扱います。短縮名を増やしすぎると、どの名前が正式なのか分かりにくくなるため、本文では FQDN を基準に進めます。
- 環境内で一意な FQDN を決める
- 短縮名 alias を増やしすぎない
- 証明書、ログ、監視、DNS の表記を合わせる
- 一時的な名前を本番運用に残さない
現在のホスト名を確認する
変更前に、現在の名前がどこから来ているかを確認します。hostnamectl では static hostname と transient hostname を確認でき、hostname -f では FQDN として解決できている名前を確認できます。
/etc/hostname と /etc/hosts も見ておくと、過去の設定やインストール時の一時名が残っていないかを判断しやすくなります。
hostnamectl
hostname
hostname -f
cat /etc/hostname
cat /etc/hostshostnamectl で FQDN を設定する
hostnamectl set-hostname で static hostname を設定します。ここでは FQDN をそのまま設定しています。短縮名だけを設定する運用もありますが、この記事では後続の DNS、証明書、監視で名前を合わせやすいように、FQDN を基準にします。
sudo hostnamectl set-hostname web01.example.net
hostnamectl
hostname
hostname -f/etc/hosts を最小構成で作成する
/etc/hosts は DNS の代わりに全ホストを管理する場所ではなく、そのサーバー自身が最低限の名前解決を行うための補助ファイルです。自ホストの FQDN と短縮名だけを必要最小限で書き、他のサーバー名はできるだけ DNS に任せます。
Ubuntu では 127.0.1.1 に自ホスト名を書く構成を見かけます。サーバー用途では管理 IP 側の行も合わせて用意し、どの名前がどのアドレスに解決されるかを明示しておくと、ログや監視で追いやすくなります。
sudo cp -a /etc/hosts /etc/hosts.$(date +%Y%m%d%H%M%S).bak
sudo tee /etc/hosts >/dev/null <<'EOF'
127.0.0.1 localhost
127.0.1.1 web01.example.net web01
192.0.2.10 web01.example.net web01
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
EOF名前解決を確認する
設定後は、FQDN と短縮名が意図したアドレスへ解決されることを確認します。ここで見たいのは、コマンドが成功することだけではなく、DNS と /etc/hosts のどちらを見ても矛盾した名前が返らないことです。
getent hosts は OS の名前解決順序に従って確認するため、実際のアプリケーションに近い見え方になります。resolvectl query は systemd-resolved 側の DNS 解決を確認する用途で使います。
getent hosts web01.example.net
getent hosts web01
hostname -f
resolvectl query web01.example.net
resolvectl query web01接続先表示とログの名前を確認する
ホスト名は、SSH の接続先表示、journal、syslog、監視画面に出てきます。ここが古い名前のままだと、障害対応時に「どのサーバーのログなのか」が読み取りにくくなります。
ssh -G は接続を実行するのではなく、SSH クライアントが最終的にどのホスト名として扱うかを見る確認です。ログ側では logger でテストメッセージを出し、journal に記録される名前を確認します。
ssh -G web01.example.net | grep '^hostname '
journalctl -b --no-pager -n 50
logger "hostname check $(hostname -f)"
journalctl -b --no-pager -n 50再ログイン後と再起動後に確認する
ホスト名の変更はすぐ反映される部分もありますが、シェルのプロンプトや一部の常駐サービスは、ログイン時や起動時に名前を読んでいることがあります。設定直後の確認だけで終わらせず、再ログイン後にも同じ確認を行います。
本番サーバーで再起動できるタイミングがある場合は、再起動後にも hostnamectl、hostname -f、getent hosts を確認します。再起動後に戻る場合は、cloud-init、構成管理、イメージ作成時の初期設定が上書きしていないかを確認します。
hostnamectl
hostname -f
getent hosts "$(hostname -f)"
systemctl status systemd-hostnamed.service --no-pager運用前の確認ポイント
hostnamectlが期待する FQDN を表示するhostname -fが期待どおりに返るgetent hostsで FQDN と短縮名を確認できる/etc/hostsに不要な古い名前が残っていない- DNS、証明書、監視、ログの表記と矛盾していない
まとめ
Ubuntu 26.04 のホスト名設定では、最初に FQDN を決め、その名前を hostnamectl set-hostname で設定します。/etc/hosts は DNS の代替として肥大化させず、自ホストが必要とする最小限の補助設定にとどめます。
設定後は hostnamectl、hostname -f、getent hosts、ログ表示を確認します。ここまで確認しておくと、後続の Netplan、SSH、証明書、監視設定で同じ名前を基準に進めやすくなります。

