본문 바로가기
Network

TCP/UDP 포트 오픈 확인

by IT4us 2020. 10. 25.

출처 : https://medium.com/quantum-ant/tcp-ip%EA%B0%80-%EB%B3%B4%EC%9D%B4%EB%8A%94-%EA%B7%B8%EB%A6%BC%EC%B1%85-%EC%9D%B4%EC%A0%95%ED%98%84-%EC%9E%84%EC%84%B8%EC%A7%84-%EC%9C%A4%EC%9E%AC%EC%9B%85-b905f8244239

 

[개요]

IT 관련 종사자라면 기본적으로 포트 오픈 확인을 요청하는 경우가 있습니다.

그러나 정확한 확인이 되지 않은 상태에서 단순하게 "0000번 포트 열어주세요" 라고 하기전에,

반드시 현재의 설정 상태를 확인하는 것이 중요합니다.

이번 글에서는 두 가지 관점에서 TCP/UDP 포트 오픈을 확인하려 합니다.

 

 

1. 서버에서의 local 포트 오픈 확인

적용 OS : NT, Unix, Linux 등

자기 자신의 TCP/UDP 포트가 오픈되어 있는지 확인하고 싶은 경우에 해당합니다.

대부분의 OS에서 지원하는 명령어인 netstat 명령어를 사용합니다.

명령어 : netstat -an

첫 문장을 예로들어 설명하자면 로컬 서버의 모든 인터페이스 IP에서 111번 TCP가 모든 대상서버의 모든 포트에서 LISTEN 상태(포트 오픈)라는 의미입니다. 또한, 현재 10.10.0.1에서 10.10.0.132의 22번 포트로 ESTABLISHED(연결 된) 상태에 있는 것을 확인 할 수 있습니다. State는 각 포트에 대한 상태를 의미하며 종류는 다음과 같습니다.

 

LISTEN - 포트가 열려있는 상태로 연결 대기 중

SYS-SENT - 연결을 요청한 상태
SYN_RECEIVED - 연결 요청에 응답후 확인 대기 중

ESTABLISHED - 연결되어 있음(LISTEN, SYS-SENT, SYN_RECEIVED 까지 완료)

CLOSED - 연결이 끊어짐

CLOSE_WAIT - 연결이 종료되기를 기다리는 상태

TIME_WAIT - 연결은 종료되었으나 원격의 수신 보장을 위해 기다리고 있는 상태

 

특정 포트를 검색하고 싶은 경우는 grep 옵션과 함께 사용합니다.

 

 

2. 특정 대상으로의 TCP 통신 가능 여부 확인

여러가지 방법이 있으나 가장 기본적인 방법인 telnet 명령어를 이용한 방법으로 진행합니다.

(리눅스의 경우 설치 옵션에 따라 telnet 패키지가 설치되지 않은 경우 설치 후 가능 : yum install -y telnet)

포트 번호를 넣는 옵션은 OS마다 다를 수 있습니다. 아래의 예시를 참고 하세요.

 

a. NT(Windows) 예시

a-1. 22번 포트 오픈

a-2. 22번 포트 미오픈

 

b. Cisco 스위치 예시 (대상 포트 오픈, 미오픈 비교)

 

c. 리눅스 (대상 포트 오픈, 미오픈 비교)

포트가 오픈된 경우 Escape characer is '^]'. 에서 일정 시간 지난 후 메시지 출력

 

댓글