私のシーン

私のシーン

私のシーン

私の関連項目/etc/hosts(ここに見える順序で作成しました)

172.22.5.107    www.wordpress-rend-adri.com
192.168.1.116   www.wordpress-rend-adri.com

私は家や学校でラップトップを使用しているので、常に2つの住所を処理します。

  • 192.168.1.0/24
  • 172.22.0.0/16

練習する Wordpress がある仮想マシンがあるため、これらの項目があります。これにより、どこにいてもWordPressにアクセスできます(DHCPが両方のネットワークで同じIPを提供する限り)。

私の質問

/etc/hostsこれらすべてがわかったので、先生が単一のIPを指す名前に対して1つのレコードしか持てないと言ったので、私のコンピュータでこの設定を作成したと言うことができます。彼は、同じ名前で重複する登録がある場合は、常に最初の登録を受けてから停止すると言いました。ところで、その人も一度やってみようと言ってそうしました。

現実は、たとえば、私の家(私が使用している192.168.1.0/24)では、最初の履歴が別のIPのものですが、接続を続けることができ、その名前をpingすると正しいIPが応答するということです。はい、私はこれを完全に確信しようとし、目に見えないFirefoxウィンドウでやってきました。

その後、2つのレコードを交換しようとします。私の言葉は、私はこのようなことをしたということです:

192.168.1.116   www.wordpress-rend-adri.com
172.22.5.107    www.wordpress-rend-adri.com

したがって、この場合は明らかにまだ機能します。

学校に通うときも、別の住所を使っても同じことが起こりました。

だから...
/etc/hostsこの設定が私にうまくいけば、名前ごとにレコードを1つしか持てないと言うのはなぜですか?

¿Firefox、pingバイナリ、または使用中のすべてが、最終的な接続を確立する前に実際の有効なエントリが何であるかを確認するための内部名前解決プロセスを実行しますか?
pingたとえば、有効なIPから回答を受け取り始めるので、この質問をします。他の以前のIPに接続しようとしたときに、接続に失敗することはありません。

答え1

私はdebian / wslでいくつかのテストをしました。

~$ uname -a
Linux DESKTOP-OMM8LBC 4.4.0-17763-Microsoft #864-Microsoft Thu Nov 07 15:22:00 PST 2019 x86_64 GNU/Linux

# /etc/hosts
172.22.5.107   www.wordpress-rend-adri.com # Unreachable IP from my LAN
216.58.198.164 www.wordpress-rend-adri.com # IP for www.google.com
192.168.0.12   www.wordpress-rend-adri.com # IP for another running machine on my LAN
157.240.1.35   www.wordpress-rend-adri.com # IP for www.facebook.com

~$ ping www.wordpress-rend-adri.com
PING www.wordpress-rend-adri.com (192.168.0.12) 56(84) bytes of data.
64 bytes from www.wordpress-rend-adri.com (192.168.0.12): icmp_seq=1 ttl=64 time=49.9 ms
64 bytes from www.wordpress-rend-adri.com (192.168.0.12): icmp_seq=2 ttl=64 time=5.85 ms
64 bytes from www.wordpress-rend-adri.com (192.168.0.12): icmp_seq=3 ttl=64 time=5.58 ms
64 bytes from www.wordpress-rend-adri.com (192.168.0.12): icmp_seq=4 ttl=64 time=6.25 ms
64 bytes from www.wordpress-rend-adri.com (192.168.0.12): icmp_seq=5 ttl=64 time=6.19 ms
--- www.wordpress-rend-adri.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 9ms
rtt min/avg/max/mdev = 5.575/14.754/49.919/17.584 ms

したがって、ping動作する 2 つの WAN IP の間に位置するローカル IP が選択されました。

2回目のテスト:

/etc/hosts
172.22.5.107   www.wordpress-rend-adri.com # Unreachable IP from my LAN
216.58.198.164 www.wordpress-rend-adri.com # IP for www.google.com
#192.168.0.12   www.wordpress-rend-adri.com # IP for one running machine on my LAN
157.240.1.35   www.wordpress-rend-adri.com # IP for www.facebook.com

~$ ping www.wordpress-rend-adri.com
PING www.wordpress-rend-adri.com (172.22.5.107) 56(84) bytes of data.
# Stuck here

3回目のテスト:

/etc/hosts
#172.22.5.107   www.wordpress-rend-adri.com # Unreachable IP from my LAN
216.58.198.164 www.wordpress-rend-adri.com # IP for www.google.com
#192.168.0.12   www.wordpress-rend-adri.com # IP for one running machine on my LAN
157.240.1.35   www.wordpress-rend-adri.com # IP for www.facebook.com

~$ ping www.wordpress-rend-adri.com
PING www.wordpress-rend-adri.com (216.58.198.164) 56(84) bytes of data.
64 bytes from www.wordpress-rend-adri.com (216.58.198.164): icmp_seq=1 ttl=54 time=24.5 ms
64 bytes from www.wordpress-rend-adri.com (216.58.198.164): icmp_seq=2 ttl=54 time=22.4 ms
64 bytes from www.wordpress-rend-adri.com (216.58.198.164): icmp_seq=3 ttl=54 time=21.7 ms
64 bytes from www.wordpress-rend-adri.com (216.58.198.164): icmp_seq=4 ttl=54 time=30.5 ms

--- www.wordpress-rend-adri.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 7ms
rtt min/avg/max/mdev = 21.734/24.768/30.457/3.440 ms

4番目のテスト:

/etc/hosts
#172.22.5.107  www.wordpress-rend-adri.com # Unreachable IP from my LAN
216.58.198.164 www.wordpress-rend-adri.com # IP for www.google.com
192.168.0.12   www.wordpress-rend-adri.com # IP for one running machine on my LAN
192.168.0.1    www.wordpress-rend-adri.com # IP for my router
157.240.1.35   www.wordpress-rend-adri.com # IP for www.facebook.com

~$ ping www.wordpress-rend-adri.com
PING www.wordpress-rend-adri.com (192.168.0.1) 56(84) bytes of data.
64 bytes from www.wordpress-rend-adri.com (192.168.0.1): icmp_seq=1 ttl=64 time=1.56 ms
64 bytes from www.wordpress-rend-adri.com (192.168.0.1): icmp_seq=2 ttl=64 time=1.35 ms

--- www.wordpress-rend-adri.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 2ms
rtt min/avg/max/mdev = 1.349/1.455/1.561/0.106 ms

だから私の結論は、ping一つずつ試してはいけないということです。 WAN IPの代わりにルーター、ローカルIPを好む。

修正する:

上記のIP選択は、次のpythonコマンドで確認されます。

python -c 'import socket;print(socket.gethostbyname("www.wordpress-rend-adri.com"))'

答え2

これらの項目がある場合は、次の点を考慮してください/etc/hosts

172.22.5.107    www.wordpress-rend-adri.com
192.168.1.116   www.wordpress-rend-adri.com

過去には、照会時にwww.wordpress-rend-adri.com一致する最初の行の項目のみ(最大)を返しましたが、この172.22.5.107場合です。

(一部)最新のLinuxディストリビューションでは、ファイル全体が一致するかどうかを/etc/hosts検索します。172.22.5.107192.168.1.116

私はこれが私を驚かせた。

(事実、先生の主張を確認するためにすでに完全な答えを書いていますが、実際にテストしてみると、もはや正解ではないことがわかりました。)

  1. 検索結果www.wordpress-rend-adri.comが返されます。172.22.5.107 そして 192.168.1.116
  2. 検索結果172.22.5.107が返されます。www.wordpress-rend-adri.com
  3. 検索結果192.168.1.116が返されます。www.wordpress-rend-adri.com

説明のために、両方のレコードがローカルであると仮定する。/etc/hosts

grep hosts /etc/nsswitch.conf
hosts:          files dns

tail -n2 /etc/hosts
192.168.1.116   www.wordpress-rend-adri.com
172.22.5.107    www.wordpress-rend-adri.com

getent hosts www.wordpress-rend-adri.com
192.168.1.116   www.wordpress-rend-adri.com
172.22.5.107    www.wordpress-rend-adri.com

getent hosts 172.22.5.107
172.22.5.107    www.wordpress-rend-adri.com

getent hosts 192.168.1.116
192.168.1.116   www.wordpress-rend-adri.com

両方のコンテキストで両方のアドレスのいずれかを使用できるのは、Webブラウザなどが成功した接続を取得するまで、セット(つまり172.22.5.107AND)ですべての可能なIPアドレスを正しく試行するためであると推測されます。192.168.1.116

関連情報