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