Engineering/Docker

쿠버네티스 Pod 내에서 다른 서버 포트 접속 확인 방법

부스 boos 2026. 9. 4. 10:21
728x90

 다른 서버의 port 에 연결이 가능한지 테스트하는 툴을 보통 nc, telnet, curl 등을 확인 이용하는데, 컨테이너 이미지를 최소화한 OS 를 사용하다보면 아무 것도 설치가 안되어있을수가 있다. 필요한 툴을 다운받아서 해도 되겠지만, 간단하게 Bash 의 /dev/tcp  가상 파일 리다이렉션 기능을 사용해서 TCP 소켓 기능을 사용할 수가 있다. (Bash 전용 기능이지만 보통은 Bash 는 기본 설치될 거라 예상한다. 이거마저 없다면은...)

# 192.168.1.1/80 번 포트 테스트 예시
timeout 2 bash -c '</dev/tcp/192.168.1.1/80' && echo "OPEN" || echo "CLOSED"

 

bash -c ' 명령어' : -c 옵션으로 새로운 Bash 쉘을 실행한다.

</dev/tcp/192.168.1.1/80 의 의미: 192.168.1.1 의 80 번 포트로 TCP handshake 을 해서 연결 성공하면 리턴 코드가 0(실패한다면 1, 시간초과는 124) 이 반환된다. 그리고 입력 리다이렉션인 < 가 반드시 필요하다.

&& echo "OPEN" : 앞의 명령어 결과가 성공 이면 AND 연산자(&&) 로 echo "OPEN" 이 실행된다.

|| echo "OPEN" : 앞의 명령어 결과가 실패(0 이 아닌값) 이면 AND 연산자(&&) 로 echo "CLOSED" 이 실행된다.

 

# timeout 2 bash -c '</dev/tcp/172.27.1.123/443' && echo "OPEN" || echo "CLOSED"
CLOSED