우분투 실전 명령어 | 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