はじめに
このラボでは、/etc/hosts ファイルを直接編集することで、Linux におけるローカルホスト名の解決を管理するという必須スキルを習得します。このファイルを使用すると、ローカルマシン上でホスト名を IP アドレスに手動でマッピングできます。これは、Web 開発、ネットワークテスト、システム管理において非常に重要なテクニックです。これらのマッピングを制御することで、パブリック DNS サーバーをオーバーライドし、特定のドメインのトラフィックをローカルまたはカスタム IP アドレスに誘導できます。
完全で実践的なワークフローを通じてガイドします。まず、cat コマンドを使用して /etc/hosts ファイルのデフォルトの内容を検査し、その構造を理解します。次に、nano エディタを使用してカスタムホストエントリを追加します。設定を確認するために、ping コマンドで新しいホスト名をテストします。最後に、追加したエントリを削除し、ファイルを元の状態に戻して、実践的な演習を完了します。
cat コマンドでデフォルトの /etc/hosts ファイルを検査する
このステップでは、/etc/hosts ファイルの内容を表示する方法を学びます。このファイルは、オペレーティングシステムがホスト名を IP アドレスにマッピングするために使用するシンプルなテキストファイルです。コンピューターがインターネット上の DNS サーバーにドメイン名を解決するように問い合わせる前に、まずこのローカルファイルを確認します。その構造を理解することは、Linux における基本的なネットワークスキルです。
ここでは、ファイルを読み込み、その内容をターミナルに出力するための標準的なユーティリティである cat コマンドを使用します。
ターミナルを開き、以下のコマンドを実行して /etc/hosts ファイルの内容を表示します。
cat /etc/hosts
出力例:
以下のような出力が表示されます。正確な内容は若干異なる場合がありますが、フォーマットは同じです。
127.0.0.1 localhost
## The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
127.0.1.1 Aliyun
192.168.2.67 iZbp1gakoh36s0s067d3ebZ iZbp1gakoh36s0s067d3ebZ
172.20.239.123 ubunut-base-image ubunut-base-image
172.28.138.90 iZj6c8bsoq3dpsob2zhgheZ iZj6c8bsoq3dpsob2zhgheZ
この出力について解説します。
127.0.0.1 localhost: これは最も一般的なエントリです。IP アドレス127.0.0.1(ループバックアドレスとしても知られています)をホスト名localhostにマッピングします。これは、多くのローカルサービスが正しく機能するために不可欠です。#で始まる行: これらはコメントです。システムはこれらを無視しますが、説明を提供するために役立ちます。- IPv6 エントリ:
::1 ip6-localhostのような行は、ループバックおよびその他の標準的なネットワーク構成の IPv6 相当です。
hosts ファイルのデフォルト構造を確認したので、次のステップでそれを変更する方法を学ぶ準備ができました。
nano を使用してカスタムホストエントリを追加する
このステップでは、/etc/hosts ファイルに新しいエントリを手動で追加します。これは、ドメインをローカルサーバーに向けたい開発者や、内部ネットワークをセットアップするシステム管理者にとって実用的なスキルです。/etc/hosts はシステム保護ファイルであるため、それを変更するために必要な権限を得るには sudo を使用する必要があります。
ここでは、LabEx 環境にプリインストールされている、シンプルで使いやすいコマンドラインテキストエディタである nano を使用します。
以下のコマンドを実行して、nano で /etc/hosts を開きます。
sudo nano /etc/hosts
ターミナルに、nano エディタ内でファイルのコンテンツが表示されます。矢印キーを使用してカーソルをファイルの末尾に移動します。以下の新しい行を追加します。
192.168.1.100 myfictionalserver.local
この行は、システムがホスト名 myfictionalserver.local を認識した場合、それを IP アドレス 192.168.1.100 に解決するように指示します。
次に、変更を保存してエディタを終了する必要があります。以下のキー操作に従ってください。
- ファイルを保存するために
Ctrl+O(「Write Out」コマンド)を押します。 nanoは「File Name to Write」を尋ねます。デフォルトは/etc/hostsで、これは正しいので、Enterを押して確認します。nanoを終了してターミナルプロンプトに戻るためにCtrl+Xを押します。
これで hosts ファイルの変更が正常に完了しました。次のステップでは、この新しいエントリが期待どおりに機能するかどうかをテストします。
ping でカスタムホスト名をテストする
このステップでは、/etc/hosts に追加したカスタムエントリが正しく機能していることを確認します。これをテストする最良の方法は ping コマンドを使用することです。ping は、IP ネットワーク上のホストの到達可能性をテストするために使用されるネットワークユーティリティです。また、メッセージが送信元ホストから宛先コンピューターに送信され、戻ってくるまでにかかる時間も測定します。
ホスト名を ping すると、システムはまずその名前を IP アドレスに解決しようとします。/etc/hosts に myfictionalserver.local のエントリを追加したので、システムはそこでそれを見つけ、IP アドレス 192.168.1.100 を使用するはずです。
テストしてみましょう。ターミナルで以下のコマンドを実行します。-c 4 フラグを使用して 4 パケットのみを送信して停止します。これはテストに便利です。
ping -c 4 myfictionalserver.local
出力例:
ホストが到達不能であっても、名前解決を確認する出力が表示されるはずです。
PING myfictionalserver.local (192.168.1.100) 56(84) bytes of data.
^C
--- myfictionalserver.local ping statistics ---
4 packets transmitted, 0 received, 100% packet loss, time 3053ms
最も重要な部分は最初の行です:PING myfictionalserver.local (192.168.1.100)。これは、システムが /etc/hosts ファイルのエントリを使用して、ホスト名 myfictionalserver.local を IP アドレス 192.168.1.100 に正常に解決したことを確認します。
コマンドは停止されるまで(例えば Ctrl+C を押すなど)実行され続けます。ネットワーク上の 192.168.1.100 には実際のデバイスがないため、パケットは受信されません。しかし、プロセスの名前解決部分は成功しており、それが実証したかったことです。
これで、カスタム hosts ファイルエントリがアクティブであることを確認できました。最後のステップでは、このエントリを削除してクリーンアップする方法を学びます。
カスタムホストエントリを削除してクリーンな状態に戻す
この最終ステップでは、/etc/hosts ファイルに行った変更をクリーンアップします。特に共有環境や本番環境では、後で予期しない動作を避けるために一時的な変更を元に戻すことが非常に重要です。ファイルを元の状態に復元することで、システムの名前解決が他のすべてのネットワーク操作で期待どおりに機能するようになります。
前回と同様に、nano でファイルを編集するには sudo 権限が必要です。
エディタで /etc/hosts ファイルを再度開きます。
sudo nano /etc/hosts
矢印キーを使用して、ステップ 2 で追加した行に移動します。
192.168.1.100 myfictionalserver.local
カーソルが行上にある状態で、それを削除できます。nano で行全体を削除する簡単な方法は Ctrl+K を押すことです。
行を削除した後、ファイルを保存してエディタを終了します。
- 変更を保存するために
Ctrl+Oを押し、次にEnterを押します。 nanoを終了するためにCtrl+Xを押します。
エントリが削除され、システムがもはやホスト名をローカルで解決できないことを確認するために、もう一度 ping してみます。
ping myfictionalserver.local
出力例:
今回は、システムが名前を解決する方法がないため、コマンドはエラーメッセージですぐに失敗するはずです。
ping: myfictionalserver.local: Name or service not known
これにより、カスタムエントリを正常に削除し、hosts ファイルをクリーンな状態に復元したことが確認できます。
まとめ
この実験では、/etc/hosts ファイルを操作することで、Linux でローカルホスト名の解決を管理する方法を学びました。まず cat コマンドを使用して、このファイルのデフォルトの内容と構造を調べ、DNS クエリが行われる前に IP アドレスをホスト名にマッピングする役割を理解しました。127.0.0.1 localhost のような標準的なエントリのフォーマットや、ドキュメントのためのコメントの使用法を確認しました。
検査の後、nano テキストエディタを使用してカスタムホストエントリを追加するという実践的なスキルを習得しました。これはローカル開発やネットワークテストでよく行われるタスクです。変更が効果的であることを確認するために、ping コマンドを使用して新しいカスタムホスト名をテストし、システムが指定した IP アドレスに解決されることを検証しました。最後に、カスタムエントリを削除してシステムを元の状態に戻すことで実験を完了し、ローカルホストエントリを管理するライフサイクル全体を示しました。



