네트워크 연결 테스트하기

LinuxBeginner
지금 연습하기

소개

네트워크 연결성은 모든 현대 컴퓨팅 시스템의 근본적인 측면입니다. 문제가 발생했을 때, 이를 진단하는 방법을 아는 것은 모든 개발자나 시스템 관리자에게 필수적인 기술입니다. 이 랩에서는 네트워크 연결을 체계적으로 테스트하고 문제 해결하기 위한 필수적인 Linux 명령어들을 안내합니다.

기본적인 도달 가능성 (reachability) 을 확인하기 위해 ping을 사용하는 방법, 데이터가 네트워크를 통해 이동하는 경로를 매핑하기 위해 traceroute를 사용하는 방법, DNS 확인 (resolution) 을 검증하기 위해 nslookup을 사용하는 방법, 그리고 시스템의 라우팅 테이블을 검사하기 위해 ip route를 사용하는 방법을 배우게 될 것입니다. 이 랩이 끝날 때쯤이면 일반적인 네트워크 문제 진단에 대한 탄탄한 기반을 갖추게 될 것입니다.

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

ping 127.0.0.1 명령어로 로컬호스트 핑 테스트하기

이 단계에서는 ping 명령어를 사용하여 로컬 머신의 네트워크 스택을 테스트합니다. 이는 모든 네트워크 문제 해결 과정에서 가장 기본적이고 필수적인 첫 단계입니다.

ping 명령어는 ICMP(Internet Control Message Protocol) ECHO_REQUEST 패킷을 대상 호스트로 전송하고 ECHO_RESPONSE 를 기다립니다. 주소 127.0.0.1은 표준 "localhost" 또는 "루프백 (loopback)" 주소로, 항상 현재 사용 중인 머신을 가리킵니다. 로컬호스트에 대한 성공적인 핑은 시스템의 네트워킹 소프트웨어가 올바르게 실행되고 있음을 확인시켜 줍니다.

명령어가 무한정 실행되는 것을 방지하기 위해 -c 4 옵션을 사용하여 4 개의 패킷만 전송할 것입니다.

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

ping -c 4 127.0.0.1

패킷이 성공적으로 전송 및 수신되었음을 나타내는 다음과 유사한 출력을 보게 될 것입니다.

PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.045 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.049 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.048 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.047 ms

--- 127.0.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3074ms
rtt min/avg/max/mdev = 0.045/0.047/0.049/0.001 ms

0% packet loss 줄은 로컬 네트워크 인터페이스가 올바르게 작동하고 있음을 확인시켜 줍니다.

ping 172.60.0.1 명령어로 게이트웨이 핑 테스트하기

이 단계에서는 로컬 네트워크의 게이트웨이 (gateway) 연결성을 테스트합니다. 게이트웨이는 로컬 네트워크를 인터넷을 포함한 다른 네트워크에 연결하는 라우터입니다. 게이트웨이에 성공적으로 핑을 보내는 것은 현재 머신이 로컬 네트워크와 통신할 수 있음을 확인시켜 줍니다.

먼저, 기본 게이트웨이 (default gateway) 의 IP 주소를 찾아야 합니다. 이는 ip route 명령어를 사용하고 "default" 경로를 필터링하여 수행할 수 있습니다.

게이트웨이를 찾으려면 다음 명령어를 실행하십시오:

ip route | grep default

출력 결과는 기본 경로를 보여줄 것입니다. via 바로 다음에 나오는 IP 주소가 게이트웨이 주소입니다. 이 랩 환경에서는 일반적으로 172.60.0.1입니다.

default via 172.60.0.1 dev eth1

이제 ping 명령어를 사용하여 이 게이트웨이 주소로의 연결성을 테스트합니다. -c 4 옵션을 사용해야 함을 기억하십시오.

ping -c 4 172.60.0.1

성공적인 출력은 다음과 같이 보일 것입니다:

PING 172.60.0.1 (172.60.0.1) 56(84) bytes of data.
64 bytes from 172.60.0.1: icmp_seq=1 ttl=64 time=0.075 ms
64 bytes from 172.60.0.1: icmp_seq=2 ttl=64 time=0.051 ms
64 bytes from 172.60.0.1: icmp_seq=3 ttl=64 time=0.052 ms
64 bytes from 172.60.0.1: icmp_seq=4 ttl=64 time=0.053 ms

--- 172.60.0.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3060ms
rtt min/avg/max/mdev = 0.051/0.057/0.075/0.010 ms

이 결과는 현재 머신이 로컬 네트워크 게이트웨이와 통신할 수 있음을 확인시켜 줍니다.

traceroute google.com 명령어로 경로 추적하기

이 단계에서는 traceroute를 사용하여 로컬 머신에서 google.com과 같은 외부 목적지까지의 네트워크 경로를 추적합니다. 이 명령어는 연결 경로 중 어디에서 문제가 발생할 수 있는지 식별하는 데 유용합니다.

traceroute는 기본적으로 설치되어 있지 않을 수 있습니다. 먼저 패키지 목록을 업데이트한 다음 설치해야 합니다. 새 패키지를 설치하기 전에 sudo apt-get update를 실행하는 것이 좋습니다.

sudo apt-get update

이제 traceroute 유틸리티를 설치합니다. -y 플래그는 모든 프롬프트에 자동으로 "yes"로 응답합니다.

sudo apt-get install -y traceroute

설치가 완료되면 google.com으로 traceroute를 실행할 수 있습니다. 이는 패킷이 목적지에 도달하기 위해 통과하는 라우터 (홉, hop) 의 순서를 보여줍니다.

traceroute google.com

출력 결과는 경로상의 각 홉, 해당 IP 주소, 그리고 패킷이 도달하는 데 걸린 왕복 시간 (round-trip time) 을 나열합니다. 출력은 달라질 수 있지만, 간결성을 위해 줄인 예시는 다음과 같습니다:

traceroute to google.com (142.250.191.46), 30 hops max, 60 byte packets
 1  uswest5 (172.60.0.1)  0.031 ms  0.010 ms  0.010 ms
 2  10.220.8.54 (10.220.8.54)  0.289 ms 10.220.8.38 (10.220.8.38)  0.275 ms 10.220.8.54 (10.220.8.54)  0.263 ms
 3  11.73.4.217 (11.73.4.217)  2.134 ms 11.73.4.241 (11.73.4.241)  2.141 ms 11.73.4.185 (11.73.4.185)  1.409 ms
 ...
 8  142.251.65.127 (142.251.65.127)  4.316 ms  2.849 ms  4.335 ms
 9  nuq04s42-in-f14.1e100.net (142.250.191.46)  4.296 ms  1.556 ms  2.964 ms

각 줄은 경로상의 라우터를 나타냅니다. 별표 * * *는 해당 라우터가 지정된 시간 내에 프로브 (probe) 에 응답하지 않았음을 의미합니다.

nslookup google.com 명령어로 DNS 확인하기

이 단계에서는 도메인 이름 시스템 (DNS) 해석 (resolution) 을 확인합니다. DNS 는 인터넷의 전화번호부와 같아서 사람이 읽을 수 있는 도메인 이름 (예: google.com) 을 기계가 읽을 수 있는 IP 주소 (예: 142.250.199.14) 로 변환합니다. DNS 가 작동하지 않으면 네트워크 연결이 정상이라도 이름으로 웹사이트에 접속할 수 없습니다.

nslookup 명령어는 이 정보를 얻기 위해 DNS 서버에 쿼리하는 데 사용되는 도구입니다.

google.com의 IP 주소를 조회하려면 다음 명령어를 실행하십시오:

nslookup google.com

출력 결과는 어떤 DNS 서버가 요청에 응답했는지, 그리고 해당 도메인 이름과 연결된 IP 주소들을 보여줍니다.

Server:  127.0.0.11
Address: 127.0.0.11#53

Non-authoritative answer:
Name: google.com
Address: 142.250.191.46
Name: google.com
Address: 2607:f8b0:4005:80f::200e

ServerAddress 줄은 시스템이 사용 중인 DNS 리졸버 (resolver) 를 보여줍니다. Non-authoritative answer 섹션은 google.com에 대한 IPv4(Address: 142.250.191.46) 및 IPv6(Address: 2607:...) 주소를 제공합니다. 이와 같은 성공적인 응답은 DNS 해석이 올바르게 작동하고 있음을 확인시켜 줍니다.

ip route show 명령어로 연결 문제 해결하기

이 단계에서는 커널 (kernel) 의 IP 라우팅 테이블을 검사합니다. 라우팅 테이블은 시스템이 네트워크 트래픽을 어디로 보낼지 결정하는 데 사용하는 규칙들의 집합입니다. 잘못되었거나 누락된 라우트는 연결 문제의 흔한 원인입니다.

ip route show 명령어 (또는 단축 별칭인 ip r) 는 기본 라우팅 테이블을 표시합니다. 이는 저수준 (low level) 에서 네트워크 문제를 진단하는 데 가장 중요한 명령어 중 하나입니다.

라우팅 테이블을 보려면 다음 명령어를 실행하십시오:

ip route show

출력 결과는 시스템이 알고 있는 모든 라우트 목록을 보여줍니다.

default via 172.60.0.1 dev eth1
172.60.0.0/16 dev eth1 proto kernel scope link src 172.60.1.160

가장 중요한 줄은 default 라우트입니다.

  • default via 172.60.0.1 dev eth1: 이 줄은 테이블에 명시적으로 나열되지 않은 모든 목적지에 대한 트래픽이 네트워크 인터페이스 eth1을 통해 게이트웨이 172.60.0.1(이전 단계에서 ping 테스트를 했던 주소) 로 전송된다는 것을 의미합니다.

만약 이 기본 라우트가 누락되었다면, 시스템은 인터넷으로 트래픽을 보내는 방법을 알지 못하게 되며, ping google.com과 같은 명령어는 "Network is unreachable" 오류와 함께 실패할 것입니다. 이 테이블을 이해하는 것은 이러한 문제를 해결하는 데 핵심적이며, 종종 sudo ip route add default via <gateway_ip>와 같은 명령어를 사용하여 올바른 기본 라우트를 추가함으로써 해결됩니다.

요약

이 랩 (Lab) 을 완료하신 것을 축하드립니다! 여러분은 Linux 시스템에서 네트워크 연결 문제를 테스트하고 진단하는 체계적인 접근 방식을 배웠습니다.

다음과 같은 필수 명령어를 실습했습니다:

  • ping: 로컬 머신 및 네트워크 게이트웨이까지의 도달 가능성 (reachability) 을 테스트합니다.
  • ip route: 기본 게이트웨이를 찾고 시스템의 라우팅 테이블을 검사합니다.
  • traceroute: 패킷이 원격 호스트까지 이동하는 경로를 추적하여 잠재적인 장애 지점을 식별합니다.
  • nslookup: 도메인 이름 시스템 (DNS) 이 호스트 이름을 IP 주소로 올바르게 해석하는지 확인합니다.

자가 (self), 로컬 네트워크, 인터넷 순서로 확인하고 최종적으로 이름 해석을 확인하는 이 논리적인 진행 과정은 마주칠 수 있는 거의 모든 네트워크 문제를 해결하기 위한 강력한 프레임워크를 제공합니다.