shell 에서 연결 진단
'안 떠' 라고 할 때 어디서 끊겼는지 알려주는 작은 도구 넷: ping, dig, traceroute, nc (netcat). 각자 다른 layer 답함.
ping — 호스트 도달 가능?
ping -c 4 example.comICMP Echo 패킷. -c 4 4 회 후 종료. 응답 받으면 IP 레이어 OK. 'unknown host' = DNS 깨짐. 'timeout' = 방화벽이 ICMP 차단 / 호스트 다운.
dig — DNS 가 뭐로 풀리나?
dig example.com
dig example.com A # IPv4 만
dig example.com AAAA # IPv6 만
dig example.com MX # 메일 서버
dig +short example.com # 답만
dig @8.8.8.8 example.com # Google DNS 한테 직접 묻기dig +short 가 스크립트 친구. 전파 디버깅엔 여러 resolver (@8.8.8.8, @1.1.1.1) 에 묻고 답 비교.
traceroute — 패킷 어디서 죽었나?
traceroute example.com
traceroute -P icmp example.com # ICMP probe (UDP 안 통할 때 통하기도)각 줄이 경로의 라우터. 어느 시점부터 매 hop 별표 (* * *) 면 보통 경로 파손 아니라 방화벽이 probe 조용히 drop. mtr (brew install mtr) 은 계속 갱신되는 traceroute — 불안정 link 찾을 때 좋음.
nc — raw TCP/UDP probe
nc -zv example.com 443 # 443 열려 있나?
nc -zv localhost 5432 # 로컬 Postgres listen 중?-z = scan, 데이터 없음. -v = verbose. '저 포트로 TCP connection 가능?' 가장 빠른 질문 — 클라이언트 안 띄움.
triage 순서
ping host— IP?dig +short host— DNS?nc -zv host port— 포트?curl -v https://...— TLS / HTTP?
이 넷을 순서대로 걸으면 실패하는 레이어가 fix 위치를 알려줘.