네트워크 장애는 계층을 아래에서 위로 하나씩 확인한다
“연결이 안 된다”는 여러 계층의 문제를 뭉뚱그린 말이다. L3(도달) → L4(포트/연결) → DNS → L7(TLS/앱) 순으로 한 계층씩 확정하면, 어디서 끊기는지 금방 보인다.
1) L3 — 도달하는가 (단, 핑을 과신하지 말 것)
ping은 L3 도달을 보지만, ICMP가 방화벽에서 막히는 경우가 흔해 “핑 안 됨 = 네트워크 끊김”은 오판일 수 있다. 반대로 핑이 되어도 포트가 막혀 있으면 서비스는 안 된다. 핑은 참고일 뿐이다.
2) L4 — 포트가 실제로 열려 있고 도달하는가
ss -tlnp # 서버: 그 포트를 정말 듣고 있는지 + 바인딩 주소
nc -vz <host> <port> # 클라이언트: 그 포트로 실제 연결되는지
바인딩 주소가 127.0.0.1이면 밖에서 못 붙는다. 0.0.0.0 또는 해당 인터페이스여야 한다. 여기서 대부분의 “서버는 떴는데 접속 안 됨”이 갈린다.
3) DNS는 별도 계층으로
IP로는 되는데 도메인으론 안 되면 네트워크가 아니라 DNS다. dig +short <name>로 해석 자체를 분리해서 본다.
4) 까다로운 것들 — MTU와 비대칭 경로
작은 요청은 되는데 큰 응답만 실패하면 MTU/프래그먼트 문제를 의심한다(터널·VPN 구간). 리턴 트래픽이 다른 경로로 가는 비대칭 라우팅은 상태 기반 방화벽이나 rp_filter에서 조용히 드롭된다.
정리
L3 도달(핑은 참고) → L4 listen·바인딩·도달(ss/nc) → DNS(dig) → TLS/MTU. 한 계층을 확정하고 다음으로 내려가면, 막연한 “네트워크 문제”가 구체적 지점으로 좁혀진다.
빠른 진단 체크리스트
- L3→L4→DNS→L7 순으로 한 계층씩 확정한다
- 핑은 참고일 뿐(ICMP 차단·포트 차단 별개)임을 기억한다
ss -tlnp로 서버가 그 포트를 듣는지 본다- 바인딩이 127.0.0.1이면 밖에서 못 붙는다
nc -vz host port로 클라이언트 도달을 본다- IP는 되고 도메인은 안 되면 DNS(
dig)로 분리한다 - 큰 응답만 실패면 MTU·프래그먼트를 의심한다
- 비대칭 라우팅이면 상태 방화벽·rp_filter가 드롭한다