私のシーン
私の関連項目/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.107
192.168.1.116
私はこれが私を驚かせた。
(事実、先生の主張を確認するためにすでに完全な答えを書いていますが、実際にテストしてみると、もはや正解ではないことがわかりました。)
- 検索結果
www.wordpress-rend-adri.com
が返されます。172.22.5.107
そして192.168.1.116
- 検索結果
172.22.5.107
が返されます。www.wordpress-rend-adri.com
- 検索結果
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.107
AND)ですべての可能なIPアドレスを正しく試行するためであると推測されます。192.168.1.116