네트워크 진단 (ss·curl·firewalld)
6. 연습 문제
문제 1. 듣는 포트 확인
서버에서 자바 프로세스가 듣는 포트만 골라 보는 명령을 쓰세요.
ss -ltnp | grep java-p 가 프로세스 이름을 붙여 주므로 grep java 로 거릅니다. 포트가 127.0.0.1: 로 시작하면 외부 접근이 안 됩니다.
문제 2. 코드 해석
curl -sf -m 5 URL 의 종료 코드가 각각 7, 22, 28 일 때 무엇을 먼저 확인할지 쓰세요.
7 은 연결 거부이므로 ss -ltnp 로 포트와 방화벽을 봅니다. 22 는 HTTP 오류이므로 앱 로그를 봅니다. 28 은 타임아웃이므로 DROP 방화벽이나 앱 지연을 -w 시간 분해로 봅니다.
문제 3. 방화벽 열기
8443 포트를 영구적으로 열고 즉시 적용한 뒤 확인하는 명령을 쓰세요.
sudo firewall-cmd --zone=public --add-port=8443/tcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=public --query-port=8443/tcp세 줄이 한 세트입니다. firewall.sh open 8443 이 같은 일을 합니다.
문제 4. 프록시 설정
폐쇄망에서 외부 API 를 부르는 자바 앱에 프록시 proxy.corp:3128 을 적용하되 *.corp 는 직접 가게 하는 JAVA_OPTS 를 쓰세요.
JAVA_OPTS="-Dhttp.proxyHost=proxy.corp -Dhttp.proxyPort=3128 -Dhttps.proxyHost=proxy.corp -Dhttps.proxyPort=3128 -Dhttp.nonProxyHosts=localhost|127.0.0.1|*.corp"http 와 https 를 따로 지정해야 합니다. nonProxyHosts 는 http. 접두어 하나로 둘 다에 적용됩니다.
문제 5. 느린 곳 찾기
응답이 3초 걸리는 URL 에서 네트워크 문제인지 앱 문제인지 구분하는 명령과 판단 기준을 쓰세요.
curl -s -o /dev/null -w 'connect=%{time_connect} first=%{time_starttransfer}\n' URLconnect 가 작고 first 가 크면 앱이 느린 것입니다. connect 부터 크면 네트워크나 DNS 입니다.