본문 바로가기
IT Info/Linux

Linux 별도 패키지 없이 네트워크 포트 통신 확인 방법

by Myste.Lee 2022. 11. 6.
728x90

사실 통신 확인방법으로 대중적인 방법은 Telnet, NC(ncat) 방법이 있다

다만 대부분 통신 확인을 요청하는 경우는 초기 구성단계 또는 통신 장애 상황이다

 

꼭 급하게 필요할 때 Telnet Client, NC 패키지가 설치가 안되어있다면... 참 난감하다

 

이제 소개할 내용은 BASH 쉘의 기본 탑재 기능 중의 하나인 /dev/tcp이다

 

BASH 쉘을 사용한다면 별도 패키지 설치 없이 대상 서버의 포트 통신 여부를 확인할 수 있다

 

사용방법은 매우 간단하다

echo > /dev/tcp/[대상IP]/[포트번호]

...끝

 

정상적으로 TCP 통신이 된다면 아무 출력 없이 바로 다음 프롬프트로 이동한다

통신이 정상적으로 이루어지지 않는다면 응답이 늦거나, 연결 거부(Connection refused) 메세지를 출력한다

*/dev/udp/[대상IP]/[포트번호] 또한 동작은 하지만 UDP 프로토콜 특성으로 응답이 오지 않으므로 구간 사이 방화벽에 정보를 남기는 정도로 사용할 수 있다

첫 번째 정상 통신될 경우 슉슉 넘어간다

두 번째 정상 통신이 안될 경우 Connection refused 출력

세 번 때 UDP 통신은 안되지만(해당 호스트에서 리슨하지 않음) 첫 번째처럼 슉슉 넘어간다

 

 

.. 잠이 오지 않아 간단하게 응용하여 써먹을 수 있는 스크립트를 작성해 보았다!

 

이름은 바로바로 포트 체크 스크립트!

#!/bin/bash
#######IP & Port Info########

echo "Insert Destination IP"
read IP
echo "Insert Port Number"
read Port

#######Port Check Task########

2>/dev/null > /dev/tcp/$IP/$Port
echo $? > result

########Result Print##########

RESULT=`cat $PWD/result`

if [ ${RESULT} -eq 0 ] ; then
 echo "Network Port is Open!"
else
 echo "Network Port is Close!"
fi
rm -rf $PWD/result

명령어 자체가 간단하지만 모두가 서버 엔지니어가 아니며 부탁하여 포트를 확인해야 하는 경우가 있어 만들었다(허접ㅠ)

1. IP & Port Info에서 대상 서버의 IP정보와 통신 확인을 하고자 하는 포트번호를 입력받는다

2. 변수 처리된 정보를 통해 결과값을 저장한다 0=통신됨, 1=통신안됨

 *echo $? 명령어는 직전 실행 명령어의 정상/비정상 종료의 값을 출력한다

 *표준 출력을 2>/dev/null 지정하여 스크립트 수행 시 에러 메세지를 지워 깔끔하게 보이도록 함!

3. 마지막으로 정상/비정상 값을 토대로 포트 통신 여부를 출력해준다, 그리고 남겼던 결과값 파일 삭제로 마무리!

 

728x90

댓글