네트워크 공부 & 실습/네트워크 실습

[Network]포트가 열렸는지 확인하는 가장 간단한 방법 – Netcat(nc) 개념과 실습

강_토발즈 2025. 5. 7. 20:43

 

 

 

 

1. 왜 필요할까?

 

서버에 SSH 접속이 안 될 때, 원인이 뭔지 확인하는 일이 어렵다. 방화벽 때문인지, 서비스가 죽었는지, 포트가 닫혔는지...
이럴 때, 복잡한 도구 없이 한 줄 명령어로 확인할 수 있는 도구가 있다. 바로 Netcat(nc) 명령어 이다.

netstat 이나 ss 명령어 말고도, 포트의 상태를 알 수 있는 간단하고 유용한 명령어이기 때문에 학습해보도록 하자!

 

 

2. Netcat이란?

Netcat은 TCP/UDP 포트를 다루는 데 특화된 네트워크 유틸리티로, 다음 기능을 제공한다:

  • 포트 열기 (서버 역할)
  • 포트에 연결 (클라이언트 역할)
  • 데이터를 주고받기 (텍스트, 파일 등)

단순하지만 꽤 실용적인 기능을 사용할 수 있다고 한다. 이에 설치하고 몇몇 기능들을 맛보자

 

 

3. Netcat 설치 방법

Ubuntu 기반

sudo apt install netcat
 

패키지 설치 실패

 

그냥 일반 패키지처럼 설치할 순 없었다. 그 이유인 즉슨,

netcat 은 가상 패키지이기 때문에 어떤 구현체를 설치할 지 명시해줘야 한다고 한다. Ubuntu 에서는 대표적으로 2가지의 구현체 중 하나를 선택하여 설치 할 수 있다고 한다.

 

1. netcat - traditional - 전통적인 버전

2. netcat - openbsd - openBSE 기반 버전으로 기능이 좀 더 풍부함

sudo apt install netcat-openbsd

sudo apt install netcat-traditional

 

다양한 옵션들을 맛볼 수 있을 것 같기 때문에 sudo apt install netcat-traditional 으로 설치하기로 선택했다.

 

설치 완료!

 

 

4. 기본 사용법 실습하기

 

4-1. 포트 열기 (서버 역할)

nc -l -p 1234
  • -l: 리슨(listen)
  • -p 1234: 1234번 포트 사용

4-2. 연결하기 (클라이언트 역할)

nc 192.168.0.27 1234

 

서버 측에 메시지를 입력하면 클라이언트에서 보이고, 그 반대도 가능하다.
단순한 채팅처럼 동작한다.

 

 

5. 포트 상태 확인하기

 

5-1. 특정 포트가 열려있는지 확인하기

nc -vz [대상IP] [포트번호]

nc -vz 192.168.0.27 22

 

 

포트가 열려있다는 것을 확인할 수 있다.

 

 

5-2. 포트 리스닝 테스트 (서버 역할)

nc -lvp 8888
 
  • -l: listen (수신 대기)
  • -v: verbose
  • -p 8888: 8888 포트 사용
다른 터미널에서
nc [서버 IP] 8888

 

양방향으로 텍스트 전달이 가능해진다. 이렇게 하면 실제 포트가 열려있는 것을 확인할 수 있고, 방화벽 및 포트포워드 문제도 확인이 가능하다.

 

 

6. 실무에서 어떻게 쓸 수 있을까?


활용 설명
방화벽 테스트 특정 포트가 열려 있는지 확인 가능
간단한 서버 구현 웹서버 대신 포트 리스닝 상태로 실습
로그 전달 시뮬레이션 syslog-like 메시지를 직접 전송 가능
보안 훈련 포트 스캐닝, 취약 포트 테스트 가능
 

 

7. 주의할 점 및 마무리

 

nc는 암호화가 없기 때문에 공개된 네트워크에서는 사용에 주의를 요한다. 그렇기 때문에 포트포워딩이나 외부 서비스와 연결 시 보안 설정 확인이 반드시 필요하다. 
Netcat은 처음 보면 단순해 보이지만, 실무에서는 유용하게 쓰일 수 있다는 생각이 들었다.(단순하게 사용하기 좋을 것 같다)
포트 테스트, 파일 전송, 서버-클라이언트 실습, 방화벽 확인 한 번 익혀두면 써먹을 곳이 무궁무진할 것 같다.