우분투 실전 명령어 | nc(netcat)로 포트 연결 점검

언제 쓰는가

방화벽이나 보안그룹을 만진 뒤 포트가 실제로 열려 있는지 확인할 때 가장 빠른 도구가 nc다.
서비스 로그를 보기 전에 네트워크 레벨에서 연결 자체가 되는지 먼저 확인하면 원인 범위를 빠르게 줄일 수 있다.

바로 쓰는 명령어

# 1) 원격 TCP 포트 연결 가능 여부 확인 (성공/실패 즉시 표시)
nc -zv 10.0.1.25 443

# 2) 여러 포트를 한 번에 점검
nc -zv 10.0.1.25 22 80 443 5432

# 3) 타임아웃을 짧게 지정해 점검 속도 개선
nc -zv -w 2 10.0.1.25 3306
# 4) 로컬에서 특정 포트 리슨 테스트 서버 열기
nc -lv 9090

# 5) 다른 터미널에서 메시지 전송 테스트
echo 'ping from client' | nc 127.0.0.1 9090

# 6) UDP 포트 점검 (환경별 지원 차이 있음)
nc -zvu -w 2 10.0.1.25 53

핵심 옵션/패턴

  • -z: 실제 데이터 전송 없이 포트 스캔 모드로 연결만 확인한다.
  • -v: 성공/실패 메시지를 자세히 출력한다.
  • -w N: 연결 대기 시간을 N초로 제한해 점검 지연을 줄인다.
  • -l: 서버처럼 리슨 상태로 대기한다.
  • -u: UDP 모드로 동작한다.

운영 점검에서는 nc -zv -w 2 조합을 기본으로 쓰고, 실패 시 traceroute나 방화벽 로그로 바로 넘어가면 시간을 절약할 수 있다.

명령 출력 예시

$ nc -zv -w 2 10.0.1.25 443
Connection to 10.0.1.25 443 port [tcp/https] succeeded!
$ nc -zv -w 2 10.0.1.25 3306
nc: connect to 10.0.1.25 port 3306 (tcp) failed: Operation timed out

자주 하는 실수

  • 타임아웃 옵션 없이 점검해서 네트워크 이슈 구간에서 명령이 오래 멈춘다.
  • UDP 점검 결과를 TCP처럼 확정 신호로 해석해 잘못 판단한다.
  • DNS 문제와 포트 차단 문제를 섞어서 보느라 원인 분리가 늦어진다.

검증 방법

# 포트 연결 가능 여부 확인
nc -zv -w 2 10.0.1.25 443

# DNS 해석 확인
getent hosts example.internal

# 경로 점검
traceroute 10.0.1.25

연결 실패가 나오면 DNS, 라우팅, 방화벽 순서로 분리 점검해야 재시도 횟수를 줄일 수 있다.

운영 팁

장애 대응 문서에는 점검 시각과 함께 nc 결과를 그대로 남겨두는 게 좋다.
같은 명령을 배포 전후로 비교하면 네트워크 정책 변경 영향인지 애플리케이션 장애인지 훨씬 빠르게 구분할 수 있다.

출처

man nc
OpenBSD netcat
GNU netcat documentation