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で動作確認、即時反映される
関連記事: