traceroute google.comtraceroute -n 8.8.8.8 # 이름 해석 없이 IP로만 (더 빠름)tracepath google.com # traceroute 유사, 일반 사용자도 실행 가능
핵심 구분: ping은 "최종 목적지에 닿는가"만 알려주지만, traceroute는 "어느 중간 지점에서 막히는가"를 보여준다. 처음 몇 홉은 정상이다가 특정 홉부터 * * *가 나오면 그 지점 이후가 문제다. ping 실패 시 어디서 끊겼는지 좁힐 때 traceroute를 쓴다.
netstat은 구식(net-tools), ss는 현대식(iproute2)으로 더 빠르다.
옵션
netstat
ss
의미
듣는 포트
netstat -l
ss -l
LISTEN 상태
TCP
netstat -t
ss -t
TCP만
UDP
netstat -u
ss -u
UDP만
숫자로 표시
netstat -n
ss -n
이름 해석 생략(빠름)
프로세스
netstat -p
ss -p
포트 점유 프로세스/PID
모두
netstat -a
ss -a
모든 소켓
# 가장 많이 쓰는 조합: 듣는 TCP 포트와 점유 프로세스ss -tlnp # TCP, LISTEN, 숫자, 프로세스netstat -tlnp # 동일 (구식)# 듣는 UDP 포트ss -ulnp# 라우팅 테이블 (netstat의 경우)netstat -rn # = ip route
옵션은 글자마다 뜻이 있다. ss -tlnp = tcp listen numeric process = "어떤 TCP 포트를 어떤 프로세스가 듣고 있나". 서비스가 안 뜰 때 ss -tlnp | grep :80으로 80포트를 누가 듣는지(또는 아무도 안 듣는지) 즉시 확인한다.
핵심 구분: TCP 연결 상태값은 다음과 같다. LISTEN(대기 중), ESTABLISHED(연결됨), TIME_WAIT(종료 후 잔류), SYN_SENT(연결 시도 중). TIME_WAIT가 과도하게 쌓이면 포트 고갈의 신호이고, SYN_SENT가 멈춰 있으면 상대가 응답을 안 하는 것이다.
dig는 출력이 풍부해(질의 시간, 응답 서버, TTL, 권한 여부) 실무 디버깅의 표준이다. +short로 답만 뽑을 수 있다. nslookup은 더 단순하지만 deprecated 취급을 받기도 한다. "특정 DNS 서버로 질의"는 dig @서버 도메인 또는 nslookup 도메인 서버 형식이다.
⚠️ 함정: dig는 /etc/hosts를 보지 않고 DNS 서버에 직접 질의한다. 그래서 hosts에 등록한 항목은 ping으로는 풀려도 dig로는 안 나올 수 있다. "ping은 되는데 dig는 NXDOMAIN" = hosts 매핑이지 DNS 항목이 아니라는 뜻이다.
같은 네트워크에서 IP를 MAC 주소로 바꾸는 ARP 테이블(IP↔MAC 캐시)을 보는 도구다.
arp -n # ARP 테이블 (숫자 표시)arp -a # 다른 형식ip neigh show # 현대식 (= arp -n)# 항목 삭제arp -d 192.168.1.50
핵심 구분: ARP는 같은 네트워크(L2 도메인) 안에서만 동작한다. 다른 네트워크의 호스트는 ARP 테이블에 나오지 않고, 대신 게이트웨이의 MAC이 그 역할을 한다. "같은 서브넷인데 통신이 안 된다" 문제에서 ARP 테이블에 상대 MAC이 (incomplete)면 L2 도달 자체가 안 되는 것이다.
가장 강력한 진단 도구로, 인터페이스를 오가는 실제 패킷을 잡아 보여준다. root 권한이 필요하다.
tcpdump -i eth0 # eth0의 모든 패킷tcpdump -i eth0 -n # 이름 해석 없이(빠름)tcpdump -i eth0 port 80 # 80포트만tcpdump -i eth0 host 192.168.1.50 # 특정 호스트만tcpdump -i eth0 tcp # TCP만tcpdump -i eth0 -c 10 # 10개만 잡고 종료tcpdump -i eth0 -w capture.pcap # 파일로 저장(Wireshark 분석용)
tcpdump는 필터(port, host, tcp/udp, src/dst)를 조합해 원하는 트래픽만 본다. 예: tcpdump -i eth0 -n 'tcp port 443 and host 1.1.1.1'. "방화벽이 패킷을 정말 막는지", "SYN은 가는데 응답이 오는지"를 눈으로 확인하는 최후의 도구다. root 권한이 필요하다.
# 흐름: 가까운 곳에서 먼 곳으로, 낮은 계층에서 높은 계층으로ping -c 2 127.0.0.1 # 1. 자기 자신(TCP/IP 스택 정상?)ping -c 2 192.168.1.1 # 2. 게이트웨이(L2/L3 정상?)ping -c 2 8.8.8.8 # 3. 외부 IP(라우팅/방화벽 정상?)ping -c 2 google.com # 4. 도메인(DNS 정상?)ss -tlnp # 5. 로컬 서비스 포트 확인
이 다섯 단계는 계층을 따라 올라간다. 어느 단계에서 처음 실패하느냐가 곧 문제의 위치다.