1. 概要
/etc/hosts の構成と設計方針について解説します。
このファイルはローカル名解決の最も基本的な仕組みであり、DNS よりも優先されます。そのため、内容を誤るとネットワーク通信やアプリケーションの起動に影響を及ぼすことがあります。
/etc/hosts は、ホスト名と IP アドレスの対応関係をローカルに定義するファイルです。ネットワークが起動していない段階や、DNS サーバーが未設定の環境でも、システムが自身を名前で参照できるようにするための仕組みです。
ただし、hosts はあくまで補助的なものであり、本番運用では DNS による名前解決を正しく設計することが原則です。hosts に記述する内容は、起動時や自己参照のための「必要最低限」に留めるべきです。
2. デフォルト値
Ubuntu をインストールした直後の /etc/hosts は次のようになっています。
127.0.0.1 localhost
127.0.1.1 ubuntu
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersここで「ubuntu」は /etc/hostname に記載されたホスト名です。
127.0.0.1 はループバック(localhost)専用のアドレスであり、127.0.1.1 はホスト名解決用の別アドレスとして自動的に設定されます。
この「127.0.1.1」の背景については、以下の記事で詳しく解説しています。
→ Ubuntu の /etc/hosts にある 127.0.1.1 の正体
3. 推奨設定
原則として、ループバックに FQDN(完全修飾ドメイン名)を紐づける構成が理想的です。
Ubuntu の設計上、127.0.1.1 はループバックネットワークの一部であり、FQDN をこのアドレスに割り当てることで、ネットワーク未起動時でも自己参照が可能です。
例:ホスト名が「ubuntu.si1230.com」の場合
sudo cp /etc/hosts /etc/hosts.orig
sudo tee /etc/hosts <<"EOF"
127.0.0.1 localhost
127.0.1.1 ubuntu.si1230.com
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
EOFこの構成であれば、DNS に依存せずに自ホストを常に FQDN で参照でき、systemd や認証系サービスの初期化時にも安定して動作します。
4. hosts と DNS の役割分担
設計上の基本方針として、hosts は自分自身の参照のために存在し、DNS は外部からの参照のために存在すると考えるのが最も整合的です。
- hosts: 自ホストが自分自身を名前で解決するための最小構成(127.0.1.1 など)
- DNS: 他ホストや外部ノードが、このホストを名前で解決するための仕組み(A/AAAA/PTR レコード)
この役割を明確に分けておくことで、設定の競合や混乱を避け、トラブルシューティングも容易になります。
特にクラスタ環境や自動構成ツール(Ansible、Kubernetes など)を用いる場合、この分離は構成の一貫性を保つうえで重要です。
5. 実用的な使い方
補助的な使い方として、管理ノードなどは /etc/hosts に監視対象や運用対象の一覧を登録しておくのも有効です。これにより bash のコマンド補完が効くようになります。
たとえば以下のように設定しておくと、ssh や ping コマンドで補完入力が可能になります。
10.145.0.1 server-1.si1230.com
10.145.0.2 server-2.si1230.com
10.145.0.3 server-3.si1230.com6. まとめ
/etc/hostsはローカル名解決の基盤であり、DNS より優先される。- Ubuntu では 127.0.1.1 を自ホスト名に割り当てる仕様を採用している。
- 原則としてループバックに FQDN を紐づける構成で十分であり、最も安定する。
- 実IPを
/etc/hostsに記述するのは例外的対応であり、管理の複雑化を招きやすい。 - 設計上は「hosts=自己参照」「DNS=外部参照」と役割を明確に分離するのが理想。
- 管理ホストでは
/etc/hostsをインベントリ的に活用し、補完性と運用効率を高められる。




