서버 프로그램을 만들거나 방화벽, 포트, TCP 연결 상태를 확인하다 보면 “서버는 떠 있는데 진짜 접속이 되는지” 빠르게 테스트해야 할 때가 있습니다. 이럴 때 매번 테스트용 클라이언트 코드를 작성하면 시간이 오래 걸리죠.

nc 또는 netcat은 한 줄 명령어로 TCP 서버처럼 대기하거나, TCP 클라이언트처럼 접속해볼 수 있는 도구입니다. 이 글에서는 Ubuntu에서 nc를 설치하고, 포트 열기, 클라이언트 접속, 메시지 주고받기, 포트 테스트까지 바로 복사해서 쓸 수 있게 정리했습니다.

1. 바로 복사해서 쓰는 nc 명령어

시간이 없으면 아래 명령어만 먼저 확인해도 됩니다. 서버 PC에서 대기하고, 클라이언트 PC에서 접속하는 흐름입니다.

nc 설치

sudo apt update
sudo apt install -y netcat-openbsd

nc 도움말 확인

nc -h

서버에서 5050 포트 열기

nc -l 5050

클라이언트에서 서버로 접속

nc 172.16.3.58 5050

포트가 열려 있는지 빠르게 확인

nc -vz 172.16.3.58 5050

주의: Ubuntu에서 설치되는 netcat 종류에 따라 서버 대기 명령이 nc -l 5050 또는 nc -l -p 5050처럼 다를 수 있습니다. 명령이 먹히지 않으면 nc -h로 현재 설치된 nc 옵션을 먼저 확인하세요.

2. nc는 언제 쓰면 좋은가

nc는 “간단한 네트워크 연결 테스트”에 특히 좋습니다. 개발 중인 서버가 실제로 연결을 받는지, 방화벽 때문에 막힌 건 아닌지, 특정 포트가 살아 있는지 확인할 때 빠르게 사용할 수 있습니다.

상황 nc로 확인할 수 있는 것
서버 프로그램 개발 중 클라이언트 코드를 만들기 전 TCP 메시지 송수신 테스트
포트가 열려 있는지 확인 nc -vz 서버IP 포트로 접속 가능 여부 확인
방화벽 점검 서버는 떠 있는데 외부에서 접속이 안 되는지 확인
내부망 통신 점검 두 서버 사이에 특정 TCP 포트 통신이 되는지 확인

3. Ubuntu에서 nc 설치하기

Ubuntu에서는 보통 netcat-openbsd 패키지를 설치해서 사용합니다. 예전 글에서는 sudo apt-get install netcat처럼 설명하는 경우도 많지만, 최근 Ubuntu 환경에서는 명시적으로 패키지를 지정하는 편이 덜 헷갈립니다.

sudo apt update
sudo apt install -y netcat-openbsd
nc -h
nc가 정상적으로 설치된 모습

 

nc -h를 실행했을 때 옵션 설명이 나오면 설치가 정상적으로 된 것입니다. 여기서 -l, -v, -z, -u 같은 옵션을 확인할 수 있습니다.

서버·네트워크 실습을 자주 한다면 장비를 고정해두면 편합니다

nc는 로컬 PC 한 대에서도 테스트할 수 있지만, 실제 포트 통신이나 내부망 점검은 두 대의 장비가 있으면 훨씬 이해가 빠릅니다. 작은 미니PC, 남는 노트북, USB 랜카드, 랜 케이블을 준비해두면 서버/클라이언트 실습을 반복하기 좋습니다.

□ 유선 네트워크 테스트용 랜 케이블

□ 노트북에 연결할 USB 랜카드

□ Ubuntu 실습용 미니PC 또는 저전력 PC

□ 공유기와 포트 테스트용 간단한 네트워크 구성

네트워크 실습 장비 살펴보기

이 링크는 쿠팡파트너스 링크이며, 구매 시 일정액의 수수료를 제공받을 수 있습니다.

반응형

 

4. nc로 TCP 서버 열기

테스트 서버의 IP가 172.16.3.58이고, 5050 포트를 사용한다고 가정해보겠습니다. 서버 쪽 터미널에서 아래 명령어를 실행합니다.

nc -l 5050

명령어를 실행했는데 아무 출력 없이 멈춰 있는 것처럼 보이면 정상입니다. 지금은 5050 포트에서 클라이언트 접속을 기다리는 상태입니다.

옵션 의미

-l: listen, 즉 서버처럼 접속을 기다리는 옵션입니다.

5050: 클라이언트가 접속할 TCP 포트 번호입니다.

입력 대기 중인 NC 서버의 모습

5. nc 클라이언트로 접속하기

다른 터미널이나 다른 PC에서 서버 IP와 포트를 지정해 접속합니다.

nc 172.16.3.58 5050

접속한 뒤 클라이언트 터미널에서 아무 문자열이나 입력해보세요.

hello ubuntu
network test message

서버 쪽 터미널에 클라이언트에서 입력한 문자열이 그대로 보이면 TCP 연결과 메시지 전달이 정상적으로 된 것입니다.

echo로 한 번에 메시지 보내기

echo "hello from client" | nc 172.16.3.58 5050
클라이언트가 입력한 내용을 그대로 수신하여 출력 NC서버 모습

6. 포트 테스트와 자주 나는 오류

실무에서는 메시지를 직접 주고받는 것보다 “포트가 열려 있는지”를 빠르게 확인할 때가 많습니다. 이때는 -v, -z 옵션을 같이 사용합니다.

nc -vz 172.16.3.58 5050
상황 의미 확인할 것
succeeded 접속 성공 서버 포트가 열려 있고 네트워크 통신 가능
Connection refused 서버가 거절 해당 포트에서 서비스가 대기 중인지 확인
No route to host 경로 문제 IP, 게이트웨이, 라우팅, 방화벽 확인
timed out 응답 없음 방화벽, 보안그룹, 네트워크 차단 확인

Ubuntu 방화벽을 사용 중이라면 아래 명령어로 5050 포트를 허용할 수도 있습니다.

sudo ufw allow 5050/tcp
sudo ufw status

7. 실습 후 확인 체크리스트

□ 서버 PC에서 nc -l 5050으로 대기했는지 확인

□ 클라이언트에서 서버 IP와 포트를 정확히 입력했는지 확인

□ 같은 네트워크 대역인지 확인

□ 방화벽 또는 보안그룹에서 포트가 막혀 있지 않은지 확인

□ 포트 확인만 필요하면 nc -vz 서버IP 포트를 사용

한 줄 정리

Ubuntu에서 nc는 TCP 서버·클라이언트 테스트, 포트 확인, 내부망 통신 점검을 한 줄 명령어로 빠르게 해볼 수 있는 실무형 도구입니다.

반응형