LabHub
배우기 러닝패스 코스

Network Troubleshooting

Checking Reachability and Paths

LabHub 에서 이어서 보기

한국어 원문으로 표시합니다.

목표

인터페이스와 라우팅을 읽고, ping 통계를 해석하고, UDP 모드 traceroute 와 mtr 을 돌립니다. 마지막에는 ICMP 도달성과 TCP 도달성이 서로 다른 질문임을 직접 증명합니다.

왜 중요한가

ping 은 IP 계층까지만 증명합니다. 그 위의 포트도, 애플리케이션도, 심지어 큰 패킷이 지나갈 수 있는지도 증명하지 않습니다. 반대로 ping 실패가 서버 다운을 뜻하지도 않습니다 — 많은 조직이 ICMP echo 를 차단합니다. 이 실습 환경은 capability 가 제거돼 있어 traceroute 의 ICMP 모드와 mtr 의 기본 모드가 동작하지 않습니다. 이 제약 자체가 좋은 교재입니다: 어떤 진단 도구는 특권을 요구하고, 특권 없는 환경에서는 대체 모드를 알아야 한다.

단계

  1. /root/reach 디렉터리를 만들고, 인터페이스 한 줄 요약을 /root/reach/iface.txt 로 저장하세요. lo 가 포함돼야 합니다.
  2. 라우팅 테이블을 /root/reach/route.txt 로 저장하세요. default 로 시작하는 줄이 있어야 합니다.
  3. 127.0.0.1 로 3회 ping 한 전체 출력을 /root/reach/ping-loop.txt 로 저장하세요. 패킷 손실이 0% 여야 합니다.
  4. 자기 자신의 기본 인터페이스 IP 로 3회 ping 한 출력을 /root/reach/ping-self.txt 로 저장하세요. 손실이 0% 여야 합니다.
  5. 3번 결과에서 RTT 의 min / avg / max 세 값만 공백으로 구분해 한 줄로 /root/reach/rtt.txt 에 적으세요.
  6. 127.0.0.1 로 traceroute 를 실행해 출력을 /root/reach/trace.txt 로 저장하고, 사용한 모드를 소문자로 /root/reach/trace-mode.txt 에 한 줄(udp 또는 icmp 또는 tcp) 적으세요.
  7. 127.0.0.1 로 mtr 리포트를 3사이클 실행해 /root/reach/mtr.txt 로 저장하세요. Loss% 머리글이 포함돼야 합니다.
  8. /root/reach/summary.txt 를 다음 3줄로 만드세요. 각 값은 실제로 시도해 본 결과여야 합니다. icmp=<ok|fail> / tcp2222=<ok|fail> / tcp9999=<ok|fail> (ICMP 는 127.0.0.1 로, TCP 는 127.0.0.1 의 해당 포트로 판단합니다.)

참고

인터페이스 목록 확인

/root/reach 디렉터리를 만들고, 인터페이스 한 줄 요약을 /root/reach/iface.txt 로 저장하세요. lo 가 포함돼야 합니다.

ip 명령에는 한 줄 요약 형식(-br)이 있습니다. 루프백과 실제 인터페이스가 모두 보여야 합니다.

라우팅 테이블 확인

라우팅 테이블을 /root/reach/route.txt 로 저장하세요. default 로 시작하는 줄이 있어야 합니다.

기본 경로는 default 로 시작하는 줄입니다. 게이트웨이 주소는 via 뒤에 옵니다.

루프백 ping

127.0.0.1 로 3회 ping 한 전체 출력을 /root/reach/ping-loop.txt 로 저장하세요. 패킷 손실이 0% 여야 합니다.

-c 로 횟수를 정하면 통계 요약이 마지막에 출력됩니다. 손실률은 그 요약 줄에 있습니다.

자기 IP 로 ping

자기 자신의 기본 인터페이스 IP 로 3회 ping 한 출력을 /root/reach/ping-self.txt 로 저장하세요. 손실이 0% 여야 합니다.

01 단계에서 확인한 인터페이스 주소를 쓰세요. 자기 자신으로 가는 패킷도 손실이 없어야 합니다.

RTT 통계 읽기

3번 결과에서 RTT 의 min / avg / max 세 값만 공백으로 구분해 한 줄로 /root/reach/rtt.txt 에 적으세요.

통계 마지막 줄에 min/avg/max/mdev 가 슬래시로 구분돼 나옵니다. 앞의 세 값만 뽑으면 됩니다.

UDP 모드 traceroute

127.0.0.1 로 traceroute 를 실행해 출력을 /root/reach/trace.txt 로 저장하고, 사용한 모드를 소문자로 /root/reach/trace-mode.txt 에 한 줄(udp 또는 icmp 또는 tcp) 적으세요.

이 환경에는 raw socket 권한이 없어 ICMP 모드가 동작하지 않습니다. traceroute 의 기본 모드가 무엇인지 확인해 보세요.

mtr 리포트

127.0.0.1 로 mtr 리포트를 3사이클 실행해 /root/reach/mtr.txt 로 저장하세요. Loss% 머리글이 포함돼야 합니다.

mtr 도 같은 이유로 UDP 모드가 필요합니다. 한 번 돌고 끝나는 리포트 모드와 횟수 지정 옵션을 함께 쓰세요.

ICMP 와 TCP 비교

/root/reach/summary.txt 를 다음 3줄로 만드세요. 각 값은 실제로 시도해 본 결과여야 합니다. icmp=<ok|fail> / tcp2222=<ok|fail> / tcp9999=<ok|fail> (ICMP 는 127.0.0.1 로, TCP 는 127.0.0.1 의 해당 포트로 판단합니다.)

sshd 는 2222 에서 돌고 있고 9999 는 아무도 듣고 있지 않습니다. 세 결과가 각각 무엇을 증명하는지 생각해 보세요.