手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 hosts 設定

目次に戻る

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 のコマンド補完が効くようになります。

たとえば以下のように設定しておくと、sshping コマンドで補完入力が可能になります。

10.145.0.1 server-1.si1230.com
10.145.0.2 server-2.si1230.com
10.145.0.3 server-3.si1230.com

6. まとめ

  • /etc/hosts はローカル名解決の基盤であり、DNS より優先される。
  • Ubuntu では 127.0.1.1 を自ホスト名に割り当てる仕様を採用している。
  • 原則としてループバックに FQDN を紐づける構成で十分であり、最も安定する。
  • 実IPを /etc/hosts に記述するのは例外的対応であり、管理の複雑化を招きやすい。
  • 設計上は「hosts=自己参照」「DNS=外部参照」と役割を明確に分離するのが理想。
  • 管理ホストでは /etc/hosts をインベントリ的に活用し、補完性と運用効率を高められる。

目次に戻る

Ubuntu 22.04 hosts 設定

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る