This manualと読みましたが、少し混乱しています。これは私が理解できないものです:
When your system tries to resolve a hostname to an IP address or determine the
ostname for an IP address, it refers to the /etc/hosts file before using the
name servers
そう:
1)システムがホスト名の解決を試みるのはいつですか?データグラムのヘッダーがホスト名を指定している場合、それを理解するのは正しいですか?
2)resolv.conf
の前のhosts
を参照する理由
3)ホスト名が解決された後、システムはルーティングテーブルを参照しますか?
1)通常、システムは「resolv.conf」でDNSサーバーを使用します。 www.yahoo.comにアクセスすると、システムはDNSに接続し、DNSはそのアドレスのIPアドレスを返します。システムは、アドレスwww.yahoo.comに対応するIPアドレスを認識します。
2)hosts
ファイルは解決しようとしているアドレスを上書きするために使用されるため、アドレスを解決する前にhosts
を使用します。すなわち:おそらくそこにエントリがあります。127.0.0.1 localhost
は、「localhost」という名前でホストに接続しようとすると、アドレス127.0.0.1を使用して接続することをシステムに伝えます。 eth0のlopbackインターフェイス。
3)システムがhosts
を直接見るか、 'resolv.conf'でDNSサーバーにコンタクトすることにより、ホストのアドレスを知った後、ルーティングテーブルを見て、どのルールが何をすべきかを説明します取得したIPアドレスへの宛先を持つトラフィックで。
つまり、ネットワーク上にホスト名が「Ubuntu-One」と「Ubuntu-Two」の2台のコンピューターがあり、各コンピューターがHost
ファイルに割り当てられていると仮定します。
127.0.0.1 localhost Ubuntu-One
コンピューターUbuntu-Oneの場合127.0.0.1 localhost Ubuntu-Two
コンピューターUbuntu-Twoの場合
これは自動的に行われます。そのため、それぞれの端末で「localhost」と「Ubuntu-One」と「Ubuntu-Two」を解決できます。
Ubuntu-OneからUbuntu-Twoにpingを試みると、Ubuntu-Oneはresolv.conf
ファイルでDNSサーバーに接続し、サーバーは「そのアドレスに関連するIPがわからない」と表示し、PCは「不明ホスト名」。行<IPADDRESSFROMUBUNTU-TWO Ubuntu-Two
をUbuntu-Oneのhosts
ファイルに追加すると、システムが再度pingを試行すると、hostsファイルでUbuntu-TwoからのIPアドレスがxxxxであることが確認され、ルーティングテーブルを使用して、そのルールがそのIPまたはIP範囲に適用され、指定されたゲートウェイを使用して(またはなしで)ホストに接続するかどうかを確認します。それが、hosts
がresolv.conf
よりも前にある理由です。
何かに接続したいときは、少なくともホスト名をIPに解決する必要があります。システムに対してローカルであるため、最初に/ etc/hostsの設定を使用します。指定していない場合は、resolv.confで定義されているDNSサーバーから検索します。