2026年5月31日

2026年5月31日

/etc/hostsファイルの編集方法

はじめに

/etc/hostsはDNSより優先される名前解決の仕組みで、開発環境構築、サーバー移行のテスト、特定サイトのブロックなどで広く活用されます。1行に「IP ホスト名」を書くだけで、ローカルに名前解決ルールを追加できます。

本記事では/etc/hostsの編集方法、優先順位の仕組み、よくある活用パターンを実践的に解説します。

症状・背景

  • 開発中のサーバーに本番ドメインで接続テストしたい
  • DNSがまだ反映されていない移転先サーバーを確認したい
  • 特定のサイトをブロックしたい
  • 一時的に名前解決を上書きしたい

手順・設定方法

ステップ1: 現在のhostsファイルを確認する

# ファイル内容を表示
cat /etc/hosts

# パーミッションを確認
ls -l /etc/hosts

# 標準的な内容例
# 127.0.0.1    localhost
# 127.0.1.1    ubuntu-server
# ::1          ip6-localhost ip6-loopback

ステップ2: エントリを追加する

# バックアップを取得
sudo cp /etc/hosts /etc/hosts.bak.$(date +%Y%m%d)

# エディタで開く
sudo vim /etc/hosts

# コマンドラインから追記
echo "203.0.113.20 staging.example.com" | \
  sudo tee -a /etc/hosts

# 複数行を一気に追加
sudo tee -a /etc/hosts <<'EOF'
192.0.2.10  dev.example.local
192.0.2.20  api.example.local
EOF

ステップ3: 動作を確認する

# pingで名前解決を確認
ping -c 2 staging.example.com

# digで名前解決を確認(ホストファイルを参照)
getent hosts staging.example.com

# hostsを優先しているか確認
cat /etc/nsswitch.conf | grep hosts
# 例: hosts: files dns

# 名前解決の動作確認
curl -v http://staging.example.com

ステップ4: エントリを削除・無効化する

# sedで特定行を削除
sudo sed -i '/staging.example.com/d' /etc/hosts

# 行をコメントアウト(編集で行頭に#)
sudo sed -i 's|^\(.*staging.example.com\)|#\1|' /etc/hosts

# バックアップから復元
sudo cp /etc/hosts.bak.20260514 /etc/hosts

# 反映確認(キャッシュなしのため即時反映)
getent hosts staging.example.com

注意事項

  • 1行のフォーマットはIP ホスト名 [エイリアス...]で、空白区切り
  • 編集ミスでlocalhostエントリを壊すと多くのサービスに影響する
  • nsswitch.confでhosts:順序がfiles dnsであることを確認する
  • 設定変更は即時反映、再起動やDNSキャッシュクリアは不要

まとめ

1. /etc/hostsはDNSより優先される名前解決ファイル

2. 形式はIPアドレス ホスト名、空白区切りで指定する

3. バックアップを取ってから編集するのが鉄則

4. getent hostsで動作確認、即時反映される

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ