私はネットワーキングについて学んでいます。自宅には2台の物理マシンがあり、アプリケーションのテストに使用する多数のVMがあります。各マシンのホスト名は異なり、各/ etc/hostsファイルに手動でマッピングします
ホームIPアドレス(127.0.0.1)と/ etc/hostsのネットワークによって与えられた実際のIPアドレスの違いは何ですか?
例えば
私のIPアドレスが192.168.2.20で、ホストの名前がnarutoで、/ etc/hostsが次のようになっているとします。
127.0.0.1 localhost
192.168.2.20 naruto
127.0.0.1 naruto
すべての行が同じマシンを指しています。主な違いは、プログラムがそれぞれに接続する方法が2つはループバックデバイスを使用しており、もう1つはNICを使用していることです。私の質問は、これらのすべての行があるべきですか?または私はどんなラインを持っているべきですか?それぞれの用途は何ですか?
私はこれを読んでいました 投稿 しかしそれは助けにはならず、私はもっと混乱しました
ホームIPアドレス(127.0.0.1)と/ etc/hostsのネットワークによって与えられた実際のIPアドレスの違いは何ですか?
127.0.0.1の2つの主要な特徴:
たとえば、ループバックインターフェイスlo
を見てください。
$ ip a l lo
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope Host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope Host
valid_lft forever preferred_lft forever
IPのブロックは、次の行によって設計されています。
inet 127.0.0.1/8 scope Host lo
この表記の/ 8は、ここに示されている32ビットの8ビットがネットワークのアドレスであることを意味し、残りのビット(32-8 = 24)は、このコンピューター内の任意のアドレスを指定するためのものです。
これが範囲であり、それらのいくつかをpingしようとすることで、すべてが自分自身を指していることを確信できます。 ping
127.0.0.1、127.0.0.2、および127.0.0.3を見てみましょう。
$ ping -c2 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.055 ms
$ ping -c2 127.0.0.2
PING 127.0.0.2 (127.0.0.2) 56(84) bytes of data.
64 bytes from 127.0.0.2: icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from 127.0.0.2: icmp_seq=2 ttl=64 time=0.052 ms
$ ping -c2 127.0.0.3
PING 127.0.0.3 (127.0.0.3) 56(84) bytes of data.
64 bytes from 127.0.0.3: icmp_seq=1 ttl=64 time=0.030 ms
64 bytes from 127.0.0.3: icmp_seq=2 ttl=64 time=0.075 ms
注:これらはすべて、ループバックインターフェイスを介して自分自身にピギー可能であることがわかります。
traceroute
を使用しても同じことがわかります。
$ traceroute -n 127.0.0.1
traceroute to 127.0.0.1 (127.0.0.1), 30 Hops max, 60 byte packets
1 127.0.0.1 0.032 ms 0.041 ms 0.010 ms
$ traceroute -n 127.0.0.2
traceroute to 127.0.0.2 (127.0.0.2), 30 Hops max, 60 byte packets
1 127.0.0.2 0.033 ms 0.009 ms 0.008 ms
$ traceroute -n 127.0.0.3
traceroute to 127.0.0.3 (127.0.0.3), 30 Hops max, 60 byte packets
1 127.0.0.3 0.034 ms 0.010 ms 0.008 ms
私の質問は、これらすべての行があるべきですか?または私はどんなラインを持っているべきですか?それぞれの用途は何ですか?
私が推奨するのは、システムが自動的に割り当てたものを除いて、127.0.0.1に名前を割り当てないことです。通常、これらのタイプのエントリは/etc/hosts
に表示されます。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
システムのホスト名に追加のlocalhostタイプのIPを割り当てる場合は、代わりに127.0.0.2を使用します。デフォルトでセットアップされた127.0.0.1のままにします。
さらに、ホストに割り当てられている実際のIPアドレスについては、/etc/hosts
でそのように割り当てるか、DNSを使用します。
192.168.2.20 naruto.mydom.com naurto
しかし、同じ名前を2つの別々の行に割り当てることはありません。 /etc/hosts
ファイルは最初のエントリでのみ応答し、2番目のエントリには到達できないため、これは機能しません。
単発の仕事の場合、/etc/hosts
を使用すると、ローカルの仕事が簡単になります。ただし、名前からIPへのマッピングのいずれかがネットワークでアクセス可能であると予想される場合は、それらにDNSを使用し、ローカルIP /名前解決以外の場合は/etc/hosts
を使用しないことをお勧めします。
私がするかもしれないことの1つ、および数年前にディストリビューションがそれを始めたのは、ローカルホストにのみ127.0.0.1を使用し、ホスト名に127.0.1.1を使用することです
そう...
/etc/hostname
-
naruto
/etc/hosts
-
127.0.0.1 localhost
127.0.1.1 naruto
そして、それはそれです。 (必要に応じてIPv6の要素を追加します)/ etc/hostsに非ループバックIPを配置するのは、なんらかの理由でDNSエントリを取得できない場合、または通常DNSにあるものをリダイレクトしたい場合のみです。