네트워크 진단 (ss·curl·firewalld)
5. 자주 하는 실수 (Tip)
❌ 실수 1: --permanent 만 하고 --reload 를 잊는다
list-all 에는 안 보이고 "왜 안 열리지" 를 반복합니다. ✅ add-port --permanent 뒤 --reload 를 붙이거나, 스크립트로 세 줄을 묶습니다.
❌ 실수 2: ping 이 안 된다고 서버가 죽었다고 판단한다
많은 망이 ICMP 를 막습니다. ping 실패와 포트 열림은 별개입니다. ✅ nc -zv 나 /dev/tcp 로 실제 포트를 봅니다.
❌ 실수 3: 앱이 127.0.0.1 에만 바인드돼 있다
ss 에 127.0.0.1:8080 으로 보이면 서버 밖에서는 절대 안 열립니다. ✅ Spring 의 server.address 를 빼거나 0.0.0.0 으로 둡니다. nginx 뒤라면 일부러 127.0.0.1 로 두는 것이 맞습니다.
❌ 실수 4: curl 에 타임아웃을 안 준다
DROP 방화벽 뒤 서버에 보내면 2분 넘게 멈추고 스크립트 전체가 멈춥니다. ✅ -m 과 --connect-timeout 을 항상 줍니다.
❌ 실수 5: curl -k 를 스크립트에 넣는다
인증서 검증을 끄면 진단은 되지만 운영 스크립트에 남으면 중간자 공격에 노출됩니다. ✅ 사내 CA 를 시스템과 cacerts 에 등록하고 -k 를 지웁니다.
❌ 실수 6: 자바에 http_proxy 환경 변수만 설정한다
JVM 은 그 변수를 읽지 않아 외부 API 가 계속 타임아웃입니다. ✅ -Dhttp.proxyHost 계열 시스템 속성을 JAVA_OPTS 에 넣습니다.
❌ 실수 7: no_proxy 에 사내 도메인을 빼먹는다
사내 DB·API 호출이 프록시로 가서 거부됩니다. ✅ localhost,127.0.0.1,.corp,10.0.0.0/8 처럼 사내 범위를 모두 적습니다. 자바는 nonProxyHosts 에 | 로 구분합니다.
❌ 실수 8: netstat 만 알고 ss 를 모른다
최신 RHEL 에는 netstat 이 기본 설치되지 않습니다. ✅ ss -ltnp 를 익힙니다. 옵션 의미도 같습니다.
❌ 실수 9: 서버 안에서 localhost 로만 테스트하고 끝낸다
방화벽과 nginx 를 안 거치므로 실제 사용자 경로와 다릅니다. ✅ 다른 서버나 자기 PC 에서 서버 IP 로 다시 확인합니다.
❌ 실수 10: tcpdump 를 개수 제한 없이 켠다
트래픽이 많은 서버에서 디스크와 CPU 를 잡아먹습니다. ✅ -c 로 개수를 제한하고 port·host 필터를 항상 붙입니다.