Linux Unix

[ Linux ] telnet 말고 열린 port 확인 방법

정윤재 2022. 11. 2. 00:26

리눅스 서버에 telnet 이 안깔린 상황이 의외로 많다

 

사유는

1. 회사들의 보안 강화

2. 가벼운 OS 설치를 위해 telnet을 따로 설치 않함

3. 예전에는 telnet 이 linux 기본 프로그램이었는데 최신판들은 아님

 

뭐 이런 경우들이 있겠다.

 

근데 방화벽이 열렸는지 다른 서버의 프로세스가 정상적으로 떠 있는지

확인 하기에 telnet 같이 좋은게 없는데...

대용할 수 있는 방법을 아래와 같이 적어 본다.

 

1. ncat

ncat -zv [ip] [port]

또는

nc -zv [ip] [port]

 

-z 는 열려 있는지 상태만 확인

-v 는 상세 내용 표현

tcp 가 아닌 udp 프로토콜을 확인 하고 싶으면 -u 옵션을 사용하면 됨

 

ncat 사용 예

 

위의 사용예에서 보듯이 연결이 안되면 connection refused 가 나온다.

 

2. curl

모두가 알다시피 curl 을 linux 에서 간단하게 http 프로토콜 연결을 지원하는 tool 이다.

이걸 응용해서 다음과 같이 쓸수 있는데

 

curl -v [ip]:[port]

 

여기서 -v 는 상세 내용 표시

 

22번 포트로 연결 했을 때는 http 연결이기 때문에 protocol 이 안맞는 다고 나왔고

24번 포트로 연결 했을 때는 connection refused 이기 때문에 아예 연결이 안되는 것이다.

 

3. bash 쉘의 built in 기능 활용

 

echo > /dev/tcp/[ip]/[port]

 

위의 명령어를 실행 하고 

 

echo $? 명령어 실행 시 0의 경우 연결 잘 됨, 1일 경우 연결 안됨이다.

 

 

물론 연결 안될때는 connection refused 로 바로 알수 있지만 더 확실하게

 

알고 싶을 때 0 이나 1로 확인 해보면 된다.