네트워크 트러블슈팅 · 연결성과 경로 · 실습
도달성과 경로 확인
목표
인터페이스와 라우팅을 읽고, 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 의 해당 포트로 판단합니다.)
참고
ip -br addr,ip route,ping -c 3,traceroute -n -m 3,mtr --udp --report -n -c 3조합으로 대부분 해결됩니다.- 이 환경에서
traceroute -I와 옵션 없는mtr은 raw socket 권한이 없어 실패합니다. - TCP 포트 확인은
nc -zv -w 2 127.0.0.1 <포트>로 합니다. - 흔한 실수 1: 5번에서 mdev 까지 네 값을 적는 경우. 세 값만 필요합니다.
- 흔한 실수 2: 8번에서 실제로 시도하지 않고 짐작으로 적는 경우. 각 줄은 명령 출력으로 뒷받침돼야 합니다.
단계 8개
- 인터페이스 목록 확인
- 라우팅 테이블 확인
- 루프백 ping
- 자기 IP 로 ping
- RTT 통계 읽기
- UDP 모드 traceroute
- mtr 리포트
- ICMP 와 TCP 비교