내 장면

내 장면

내 장면

내 관련 항목 /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에 대한 것이지만 계속 연결할 수 있고 해당 이름을 핑하면 올바른 IP가 응답한다는 것입니다. 예, 저는 이것을 완전히 확신하려고 노력했고 보이지 않는 Firefox 창에서 해냈으며 무슨 일이 일어나고 있는지 확인하기 위해 집 IP 라인에 주석을 달기도 했습니다.

그런 다음 두 레코드를 교환하려고 합니다. 내 말은, 난 방금 이런 짓을 했다는 거야:

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작동하는 두 개의 WAN IP 사이에 위치한 로컬 IP가 선택되었습니다.

두 번째 테스트:

/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

세 번째 테스트:

/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

네 번째 테스트:

/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

두 컨텍스트 모두에서 두 주소 중 하나를 사용할 수 있는 이유는 웹 브라우저 등이 성공적인 연결을 얻을 때까지 세트(즉, 172.22.5.107AND )에서 가능한 모든 IP 주소를 올바르게 시도하기 때문이라고 추측합니다.192.168.1.116

관련 정보