私はネットワーキングについて学んでいます。家には、アプリケーションをテストするために使用する2つの物理マシンと複数の仮想マシンがあります。各マシンには異なるホスト名があり、それらを各/ 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
質問1
ホームIPアドレス(127.0.0.1)と/ etc / hostsにあるネットワークが提供する実際のIPアドレスの違いが何であるかを知りたいです。
127.0.0.1の2つの主な機能:
- コンピュータの外部のインターネットではルーティングできません。
- IPアドレス127.0.0.1は、システムのこのインターフェイスに関連付けられているIPアドレスブロックの一部です。
たとえば、ループバックインターフェイスを見てください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
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
メモ:私たちは、これらすべてがループバックインターフェイスを介して自分自身に「ping」できることを知っています。
以下を使用して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
質問2
私の質問はこの行をすべて持っている必要がありますか?それとも、どの行を持っている必要がありますか?それぞれの用途は何ですか?
私の提案は、システムが自動的に割り当てない限り、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 naruto
しかし、私は2つの別々の行に同じ名前を付けません。/etc/hosts
ファイルは最初の項目にのみ応答し、2番目の項目には到達しないため、この方法は決して機能しません。
ワンタイムタスクの場合、/etc/hosts
ローカルタスクを使用するのは簡単です。ただし、ネットワークから名前とIPのマッピングにアクセスできるようにするには、DNSを使用し、/etc/hosts
ローカルIP /名前解決以外の方法を使用しないことをお勧めします。