네트워크 연결 문제 해결하기

LinuxBeginner
지금 연습하기

소개

네트워크 연결성은 모든 현대 컴퓨팅 환경의 근본적인 측면입니다. 많은 문제가 발생할 수 있지만, 가장 흔한 문제 중 하나는 도메인 이름 시스템 (DNS) 확인 실패입니다. DNS 는 사람이 읽기 쉬운 도메인 이름 (예: www.google.com) 을 컴퓨터가 서로 연결하는 데 사용하는 IP 주소로 변환하는 서비스입니다. DNS 가 작동하지 않으면 인터넷에 연결되어 있더라도 어떤 웹사이트에도 접속할 수 없을 수 있습니다.

이 실습 (lab) 은 DNS 관련 네트워크 문제를 진단하고 해결하기 위한 구조화되고 실습 중심적인 접근 방식을 제공합니다. 연결 상태를 테스트하고, DNS 문제를 식별하고, 구성을 수정하고, 연결이 완전히 복구되었는지 확인하기 위한 일련의 명령어를 학습하게 됩니다.

이 실습이 끝날 때쯤이면 Linux 시스템에서 DNS 연결 문제를 해결하기 위한 초기 문제 해결 단계의 신뢰할 수 있는 체크리스트를 갖추게 될 것입니다.

이것은 가이드 실험입니다. 학습과 실습을 돕기 위한 단계별 지침을 제공합니다.각 단계를 완료하고 실무 경험을 쌓기 위해 지침을 주의 깊게 따르세요. 과거 데이터에 따르면, 이것은 초급 레벨의 실험이며 완료율은 100%입니다.학습자들로부터 100%의 긍정적인 리뷰율을 받았습니다.

도메인 이름으로 핑하여 문제 확인하기

문제 해결 시 첫 번째 단계는 항상 문제를 확인하는 것입니다. 인터넷 연결 상태를 테스트하는 일반적인 방법은 ping 명령어를 사용하는 것입니다. 잘 알려진 도메인인 google.com을 핑해보겠습니다. 네 개의 패킷만 보내기 위해 -c 4 옵션을 사용할 것입니다.

터미널에서 다음 명령어를 실행하십시오:

ping -c 4 google.com

이름 확인 실패를 나타내는 오류 메시지가 표시될 것입니다.

ping: google.com: Temporary failure in name resolution

이 오류는 시스템이 도메인 이름 google.com을 IP 주소로 변환할 수 없었음을 알려줍니다. 이는 DNS 에 문제가 있음을 강력하게 시사합니다.

IP 주소로 핑하여 문제 격리하기

DNS 문제가 의심되지만, 기본적인 인터넷 연결은 여전히 작동하는지 확인해야 합니다. 이는 DNS 이름 확인 프로세스를 우회하여 공용 IP 주소를 직접 핑함으로써 수행할 수 있습니다. Google 의 공용 DNS 서버 IP 인 8.8.8.8을 사용하겠습니다.

다음 명령어를 실행하십시오:

ping -c 4 8.8.8.8

이번에는 핑이 성공해야 합니다. 서버로부터 응답을 보게 될 것입니다.

PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=116 time=1.23 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=116 time=1.28 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=116 time=1.30 ms
64 bytes from 8.8.8.8: icmp_seq=4 ttl=116 time=1.25 ms

--- 8.8.8.8 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3005ms
rtt min/avg/max/mdev = 1.230/1.265/1.301/0.026 ms

IP 주소는 핑할 수 있지만 도메인 이름은 핑할 수 없으므로, 이제 문제가 DNS 확인에 있음을 확인했습니다.

DNS 설정 검사 및 수정

DNS 가 문제임을 확인했으므로, 이제 DNS 설정 파일을 살펴보겠습니다. Linux 에서는 일반적으로 /etc/resolv.conf 파일입니다. 이 파일은 시스템이 사용할 DNS 서버를 알려줍니다.

파일 내용을 확인해 봅시다:

cat /etc/resolv.conf

출력 결과는 설정 스크립트에 의해 구성된 nameserver 를 보여줄 것입니다.

nameserver 192.0.2.1

IP 주소 192.0.2.1은 문서 및 테스트 목적으로 예약된 주소이며 실제 DNS 서버를 가리키지 않습니다. 이것이 문제의 원인입니다.

이 문제를 해결하려면 잘못된 nameserver 를 유효한 서버로 교체해야 합니다. Google 의 공용 DNS 서버인 8.8.8.8을 사용하겠습니다. echotee 명령어를 사용하여 파일을 덮어쓸 수 있습니다. 이를 위해서는 sudo 권한이 필요합니다.

echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

이제 변경 사항을 확인하기 위해 파일을 다시 확인합니다.

cat /etc/resolv.conf

출력 결과는 이제 올바른 nameserver 를 보여야 합니다.

nameserver 8.8.8.8

유효한 nameserver 가 구성되었으므로 문제 해결에 한 걸음 더 다가섰습니다.

로컬 DNS 캐시 비우기

시스템은 향후 요청 속도를 높이기 위해 최근에 조회한 도메인 이름의 임시 캐시를 유지합니다. DNS 설정을 변경한 후에는 시스템이 새 설정을 즉시 사용하고 잠재적으로 잘못된 이전 캐시 데이터를 사용하지 않도록 이 캐시를 플러시하는 것이 좋습니다.

최신 Linux 시스템에서는 systemd-resolved의 일부인 resolvectl 명령어를 사용하여 DNS 캐시를 관리할 수 있습니다. 캐시를 플러시하려면 다음 명령어를 실행하십시오. 이 명령어는 sudo 권한이 필요합니다.

sudo resolvectl flush-caches

성공하면 이 명령어는 출력을 생성하지 않습니다. 캐시가 지워졌는지 확인하려면 statistics 명령어를 사용하여 캐시 통계를 확인할 수 있습니다.

resolvectl statistics

출력에서 Current Cache Size 줄을 확인하십시오. 플러시 후 이 값은 0이어야 하며, 이는 캐시가 지워졌음을 확인해 줍니다. Hits 및 Misses 와 같은 다른 통계 값은 이전 값을 유지한다는 점에 유의하십시오.

...
Cache
  Current Cache Size: 0
          Cache Hits: 24
        Cache Misses: 67
...

DNS 캐시를 플러시하는 것은 시스템이 오래된 (stale) DNS 레코드를 사용하고 있지 않은지 확인하는 중요한 단계입니다.

DNS 확인 및 연결성 확인

DNS 서버 구성을 수정하고 로컬 캐시를 플러시했으므로, 이제 수정 사항을 검증할 차례입니다. 이전에 실패했던 1 단계의 동일한 명령어를 다시 시도해 보겠습니다.

다시 google.com에 ping 을 시도해 봅시다.

ping -c 4 google.com

이번에는 명령이 성공해야 합니다. 도메인 이름이 IP 주소로 해석되고 서버로부터 응답을 받는 것을 볼 수 있을 것입니다. (참고: google.com 의 정확한 IP 주소는 다를 수 있습니다.)

PING google.com (142.250.189.238) 56(84) bytes of data.
64 bytes from nuq04s39-in-f14.1e100.net (142.250.189.238): icmp_seq=1 ttl=119 time=4.43 ms
64 bytes from nuq04s39-in-f14.1e100.net (142.250.189.238): icmp_seq=2 ttl=119 time=4.43 ms
64 bytes from nuq04s39-in-f14.1e100.net (142.250.189.238): icmp_seq=3 ttl=119 time=4.40 ms
64 bytes from nuq04s39-in-f14.1e100.net (142.250.189.238): icmp_seq=4 ttl=119 time=4.43 ms

--- google.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3004ms
rtt min/avg/max/mdev = 4.400/4.421/4.434/0.012 ms

성공입니다! 이제 DNS 연결 문제를 성공적으로 진단하고 해결했습니다.

요약

본 랩 (Lab) 을 완료하신 것을 축하드립니다! Linux 시스템에서 발생하는 일반적인 DNS 관련 네트워크 문제를 해결하기 위한 표준 절차를 성공적으로 수행하셨습니다.

본 랩에서 다음 사항들을 학습했습니다.

  • ping을 사용하여 연결 상태를 테스트하고 일반적인 네트워크 장애와 DNS 관련 문제 (DNS-specific issue) 를 구별하는 방법.
  • /etc/resolv.conf에서 시스템의 DNS 서버 구성을 검사하는 방법.
  • 이름 해석 (name resolution) 을 복구하기 위해 잘못된 DNS 구성을 수정하는 방법.
  • resolvectl flush-caches를 사용하여 로컬 DNS 캐시를 플러시하여 오래된 항목을 지우는 방법.
  • 도메인 이름에 대한 ping 이 성공하는지 확인하여 수정 사항이 작동하는지 확인하는 방법.

이러한 기본 기술은 일반적인 많은 네트워크 문제를 해결하기 위한 견고한 기반을 형성합니다. 앞으로 DNS 문제가 의심될 때마다 이 논리적이고 단계적인 프로세스를 적용할 수 있습니다.