/etc/hosts は、DNS を問い合わせる前にローカルで名前解決したいホスト名を定義するファイルです。Ubuntu 22.04 では、localhost、自身のホスト名、検証用の一時的な名前解決などで使います。
この記事では、Ubuntu 22.04 の /etc/hosts を安全に編集するためのバックアップ、基本的な書き方、getent hosts や hostname -f による確認方法を扱います。
/etc/hostsの役割- ホスト名と FQDN の書き方
- 編集前のバックアップ
getent hostsとhostname -fによる確認- DNS と hosts の使い分け
書籍
ストーリーで覚える Linux CLI 入門
Linux のコマンドライン操作を基礎から確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
hosts ファイルの役割
/etc/hosts はローカルの静的な名前解決に使います。DNS の代わりにすべてを書き込む場所ではなく、サーバー自身の名前、検証中の一時的な名前、DNS より優先したい名前に限定して使います。
| 用途 | 例 |
| localhost | 127.0.0.1 localhost |
| 自身のホスト名 | 127.0.1.1 ubuntu-1.example.com ubuntu-1 |
| 検証用の固定名 | 192.0.2.10 app.example.com app |
現在の内容を確認する
編集前に現在の内容を確認します。空白や順序が名前解決の結果に影響することがあります。
cat /etc/hosts
getent hosts localhost
hostnamectlバックアップを取得する
hosts ファイルは小さいですが、名前解決に関係するため、編集前に必ずバックアップします。
sudo cp /etc/hosts /etc/hosts.bak.$(date +%Y%m%d%H%M%S)
ls -l /etc/hosts /etc/hosts.bak.* | tail基本形を作成する
単一サーバーの基本形です。ubuntu-1.example.com と ubuntu-1 は実際の FQDN と short hostname に置き換えます。
sudo tee /etc/hosts >/dev/null <<'EOF'
127.0.0.1 localhost
127.0.1.1 ubuntu-1.example.com ubuntu-1
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
EOF
cat /etc/hosts固定アドレスの名前を追加する
検証用に特定の IP アドレスへ名前を付けたい場合は、IP アドレス、FQDN、短い名前の順で書きます。
sudo tee -a /etc/hosts >/dev/null <<'EOF'
192.0.2.10 app-1.example.com app-1
192.0.2.11 db-1.example.com db-1
EOF
tail -n 5 /etc/hosts名前解決を確認する
ping だけで判断せず、getent hosts で名前解決結果を確認します。
getent hosts ubuntu-1
getent hosts ubuntu-1.example.com
getent hosts app-1
getent hosts app-1.example.comFQDN を確認する
hostname -f は hosts の書き方や DNS の状態に影響されます。FQDN が必要なサービスを使う場合は、ホスト名設定と合わせて確認します。
hostname
hostname -f
hostnamectl status --no-pagernsswitch.conf を確認する
Ubuntu 22.04 では /etc/nsswitch.conf の hosts: 行で名前解決の順序を確認できます。
grep '^hosts:' /etc/nsswitch.conf
getent ahosts ubuntu-1.example.comDNS と hosts の使い分け
複数台で共通して使う名前は DNS に寄せ、個別サーバーだけで使う一時的な名前は hosts に書くと管理しやすくなります。
- 一時的な検証名は
/etc/hostsに書く - 複数台で共有する名前は DNS に登録する
- IP アドレス変更が多い名前を hosts に固定しすぎない
- サービス証明書の名前と hosts の名前を混同しない
戻す場合
名前解決に問題が出た場合は、取得済みのバックアップから戻します。バックアップ名は実際のファイル名に置き換えます。
sudo cp /etc/hosts.bak.20260707000000 /etc/hosts
cat /etc/hosts
getent hosts ubuntu-1.example.comまとめ
Ubuntu 22.04 の /etc/hosts は、ローカルで静的に名前解決したい場合に使います。編集前にバックアップを取り、FQDN、short hostname、固定アドレスの順で意図を分けて書くと確認しやすくなります。
変更後は getent hosts、hostname -f、nsswitch.conf を確認します。共通管理が必要な名前は DNS に寄せ、hosts は局所的な補助として使います。

