Linux 배포판의 핑 = 20초, Windows/Android의 핑 = 즉시. 왜?

Linux 배포판의 핑 = 20초, Windows/Android의 핑 = 즉시. 왜?

이것이 Linux 네트워킹 매니아들에게 흥미로운 질문이기를 바랍니다. 어쨌든, 40Mbit/s 대역폭을 제공하는 ISP에 연결된 새로운 광대역 모뎀/라우터가 있습니다. 그러나 Linux 배포판에서는 브라우저를 사용하여 웹사이트에 처음 연결하는 데 20초가 걸리는 반면, Android 휴대폰이나 Windows에서는 웹사이트가 예상한 대로 빨리 열립니다. 핑 명령(도메인 이름 포함)또한 모든 출력(IP 주소 포함)을 표시하는 데 20초가 걸립니다. 핑에 집중해보자:

  • IP 주소를 통해 ping을 수행하는 데에는 문제가 없습니다. 도메인 이름을 통해 핑할 때만 20초 지연

  • 라이브 Linux USB로 시도하더라도 20초의 핑 지연이 발생합니다.Manjaro인지 Linux Mint인지

  • Linux Live를 부팅하는 다른 컴퓨터에서 시도해도 지연이 발생합니다

  • Windows를 실행하는 동일한 노트북에서 ping을 실행하면 거의 즉시 결과가 반환됩니다.한 번도 방문한 적이 없는 도메인도 마찬가지입니다.

  • Android를 실행하는 Pixel 2XL 휴대전화의 터미널에서 핑을 실행하면 즉시 결과가 반환됩니다.

  • Wi-Fi를 통해 또는 이더넷 케이블을 통해 노트북을 라우터에 연결하면 문제가 발생합니다.

  • 동일한 노트북에 동일한 Linux 배포판을 모바일 핫스팟에 연결하면아니요문제가 있다

  • IPv4를 강제하는 Ping -4는 도움이 되지 않습니다. 지연 시간은 여전히 ​​20초입니다.

  • Manjaro 포럼의 선임 회원이 제안한 대로 openresolv에서 systemd-resolved로 마이그레이션을 시도했지만 이로 인해 대기 시간이 2분 이상으로 늘어나 변경 사항을 롤백해야 했습니다.

  • 이제 ping에 대해 설명했으니 Linux에서 Firefox가 어떻게 작동하는지 설명하겠습니다. 어떤 웹사이트든 처음 방문하는 데는 20초가 걸리지만 그 이후에는한 번도 가본 적 없는 사이트를 방문하더라도예상대로 열립니다. 몇 초도 채 안 되어 Firefox를 닫고 새 인스턴스를 열면 처음 방문하는 웹사이트에 액세스하려면 다시 20초를 기다려야 합니다. Google이더라도 마찬가지입니다.

아시다시피 이것은 "흥미로운" 질문이 아니라 다소 혼란스럽고 나에게는 거의 충격적인 질문입니다. 문제는 특히 Linux와 이 새로운 라우터의 조합에 있는데, 어디서 해결책을 찾아야 할지 모르겠습니다. 물론 Manjaro 포럼에서 오랫동안 토론을 했지만 막다른 골목에 이르렀습니다.

읽어주셔서 정말 감사합니다! 최고 - 램

인터넷 정보

라우터 내부 LANIPv4 주소: 192.168.9.1

기본 DNS: 125.22.47.125, 보조 DNS 203.145.160.4

(또한 기본 DNS로 8.8.8.8을 시도했습니다)

내 노트북: 192.168.9.6

*예시 및 테스트 출력:

다음 명령을 입력하고 20~30초 후에 "PING"으로 시작하는 응답이 나타납니다.

[ramkumarr@RR-W520 ~]$ ping www.google.com
PING www.google.com (142.250.192.132) 56(84) bytes of data.
64 bytes from bom12s18-in-f4.1e100.net (142.250.192.132): icmp_seq=1 ttl=118 time=25.1 ms. 
[ramkumarr@RR-W520 ~]$ ping -n www.google.com
PING www.google.com (142.250.192.100) 56(84) bytes of data.
64 bytes from 142.250.192.100: icmp_seq=1 ttl=59 time=29.4 m
---> Again a 20s delay before any output appears.

Windows에서는 응답이 거의 즉각적입니다(0.5초 미만).

Pinging www.google.com [142.250.182.36] with 32 bytes of data:
Reply from 142.250.182.36: bytes=32 time=11ms TTL=118

Linux에서는 아래 IP 주소를 사용하지만 도메인 이름은 사용하지 않습니다.www.google.com:

[ramkumarr@RR-W520 ~]$ ping -W 0.001 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.

/etc/nsswitch.conf의 내용

# Name Service Switch configuration file.
# See nsswitch.conf(5) for details.

passwd: files mymachines systemd
group: files [SUCCESS=merge] mymachines systemd
shadow: files

publickey: files

hosts: files mymachines mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns mdns4 myhostname
networks: files

protocols: files
services: files
ethers: files
rpc: files

netgroup: files

nslookup의 출력www.google.com- Linux와 Windows 모두에서 시간 초과로 종료됩니다.. Linux에서는 "주소: 142.250.192.132" 줄까지 출력이 일시적이며 그 다음에는 지연이 발생한 다음 시간 초과 메시지가 나타납니다.

[ramkumarr@RR-W520 ~]$ nslookup www.google.com
Server:         192.168.9.1
Address:        192.168.9.1#53

Non-authoritative answer:
Name:   www.google.com
Address: 142.250.192.132
;; connection timed out; no servers could be reached

[ramkumarr@RR-W520 ~]$ 

...그리고 Windows에서는

C:\Users\ramku>nslookup www.google.com
Server:  TJ2100N.Home
Address:  192.168.9.1

DNS request timed out.
    timeout was 2 seconds.
Non-authoritative answer:
DNS request timed out.
    timeout was 2 seconds.
Name:    www.google.com
Address:  142.250.195.100

/etc/resolv.conf의 내용

# Generated by NetworkManager
search Home
nameserver 192.168.9.1

윈도우즈에서

C:\Users\ramku>ipconfig /all | find /i "dns servers"
   DNS Servers . . . . . . . . . . . : 192.168.9.1

C:\Users\ramku>

리눅스의 경우:

[ramkumarr@RR-W520 ~]$ sudo iptables -nvL
[sudo] password for ramkumarr: 
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
[ramkumarr@RR-W520 ~]$ 
[ramkumarr@RR-W520 ~]$ ip route get 192.168.9.1
192.168.9.1 dev wlp3s0 src 192.168.9.10 uid 1000 
    cache 
[ramkumarr@RR-W520 ~]$
--> 192.168.9.10 is my laptop ip address

해결 방법/솔루션?아래 제안된 답변 중 하나로서 Wi-Fi 기본 설정 탭에서 클라이언트의 DNS를 설정하면 노트북이 Google DNS에 액세스하게 되지만 해당 설정이 없으면 노트북은 다음과 같이 192.168.9.1을 DNS로 보고합니다.

WiFi 환경설정에서 DNS를 "자동(주소만)"으로 설정하세요.

[ramkumarr@RR-W520 ~]$ ( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS
IP4.DNS[1]:                             8.8.8.8
IP4.DNS[2]:                             8.8.4.4

클라이언트가 "자동" 상태이고 DNS가 지정되지 않았습니다.

[ramkumarr@RR-W520 ~]$ ( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS
IP4.DNS[1]:                             192.168.9.1

답변1

일반적인 테스트 시나리오에서는 Linux Mint를 강제로 사용하려고 합니다.구글 퍼블릭 DNS:

  • 기본 DNS 확인자: 8.8.8.8(IPv4)
  • 보조 DNS 확인자: 8.8.4.4(IPv4)

다음과 같이 비교적 간단하게 이 작업을 수행할 수 있습니다.

  1. Wi-Fi/LAN 아이콘을 마우스 왼쪽 버튼으로 클릭하세요.

    여기에 이미지 설명을 입력하세요.

  2. 메뉴에서 네트워크 연결을 클릭합니다.

    여기에 이미지 설명을 입력하세요.

  3. 해당 WiFi/LAN을 두 번 클릭합니다.

    여기에 이미지 설명을 입력하세요.

  4. 연결 설정에서 다음으로 이동하세요.IPv4 설정상표:

    여기에 이미지 설명을 입력하세요.

  5. 방법을 DHCP로 변경주소만을 클릭하고 언급된 DNS 서버를 입력하세요.

    여기에 이미지 설명을 입력하세요.

  6. "저장"을 클릭하고 WiFi/LAN 링크를 끄거나 켜십시오.


마지막으로 작은 실험이 성공적으로 완료되었는지 확인하려면 다음을 복사하여 터미널에 붙여넣으세요.

( nmcli dev list || nmcli dev show ) 2>/dev/null | grep DNS

현재 사용 중인 DNS를 표시합니다.

IP4.DNS[1]:                             8.8.8.8
IP4.DNS[2]:                             8.8.4.4

이제 ping도메인 이름을 사용해 보세요.


부인 성명

이에 따라 나는 Google 제품의 사용을 직접적으로 권장하거나 이를 다른 사람에게 권장하지 않습니다.

이 답변은 테스트 목적으로만 사용됩니다. 나는 동료들에게 이러한 DNS 확인자를 권장하지 않습니다. 모든 사람에게 예가 필요하다면 추천하고 싶습니다.1.1.1.1Cloudflare DNS 서비스 주소:

IPv4

  • 기초적인:

    1.1.1.1
    
  • 중고등 학년:

    1.0.0.1
    

IPv6

  • 기초적인:

    2606:4700:4700::1111
    
  • 중고등 학년:

    2606:4700:4700::1001
    

Cloudflare DNS 확인자는 개인 정보 보호에 중점을 두고 있으며 어떤 면에서는 훨씬 더 안전합니다.자세한 내용을 보려면 여기를 클릭하세요..

또한 본인은 위에 나열된 회사와 본인 사이의 어떠한 제휴도 부인합니다.

답변2

귀하의 DNS 서버 192.168.9.1은 DNS 요청을 처리하지 않습니다. 이는 Windows 및 Linux 시스템에서 볼 수 있습니다(Android는 무시합니다).

윈도우:

nslookup www.google.com
Server:  TJ2100N.Home
Address:  192.168.9.1

DNS request timed out.
    timeout was 2 seconds.
Non-authoritative answer:
DNS request timed out.
    timeout was 2 seconds.
Name:    www.google.com
Address:  142.250.195.100

리눅스:

nslookup www.google.com
Server:         192.168.9.1
Address:        192.168.9.1#53

Non-authoritative answer:
Name:   www.google.com
Address: 142.250.192.132
;; connection timed out; no servers could be reached

두 경우 모두 신뢰할 수 없는 응답 후에 시간 초과가 표시될 수 있습니다. 이는 각 시스템의 로컬 DNS 캐시에서 발생하며 TTL(Time-to-Live)을 초과한 레코드에서 발생했을 가능성이 높습니다.

이전에 참조된 적이 없는 호스트를 찾으려고 하면 Windows나 Linux 기반 시스템 모두 이름을 주소로 확인할 수 없을 것으로 예상됩니다.

192.168.9.1의 서버를 조사하고 이것이 문제이므로 DNS 요청을 제공하지 않는 이유를 알아내야 합니다.

답변3

여기와 Manjaro 포럼에서 매우 유용한 입력을 통해 배운 모든 지식 덕분에 ISP에 문제를 제기하고 라우터를 변경할 수 있었습니다. 이 답변의 의견은 다른 답변의 설명을 보완합니다.

이 문제는 192.168.9.1의 라우터 펌웨어가 192.168.9.1에 대한 DNS 요청을 처리하는 방식과 관련된 것으로 보입니다. Windows가 DNS 주소를 얻으면 이를 DNS 확인자 캐시에 캐시하는 것 같으므로(내 생각에는) Windows는 분명히 괜찮습니다. 그러나 Linux는 여기에 설명된 대로 OS 수준 DNS 캐싱을 수행하지 않는 것 같습니다.https://stackoverflow.com/questions/11020027/dns-caching-in-linux1이므로 ping 요청이 있을 때마다 라우터는 192.168.9.1을 DNS 서버로 간주하므로 20초 동안 중단됩니다. 라우터 펌웨어가 정확히 어디에서 악의적인 동작을 보이는지는 불분명하지만, 클라이언트 측에 Google DNS 서버를 추가하면 악성 펌웨어를 효과적으로 우회할 수 있다는 것은 분명합니다. 라우터를 변경하면 문제가 해결되었습니다.

관련 정보