랜덤 포트 생성기
잘 알려진 포트를 피해 사용 가능한 임의의 포트 번호를 생성합니다.
난수는 브라우저의 암호학적 난수 생성기(crypto.getRandomValues)로 만들며 중복 없이 생성됩니다. 실제로 그 포트가 비어 있는지는 서버에서 확인해야 합니다.
"잘 알려진 포트 피하기"를 켜면 이 표의 포트는 생성 결과에서 제외됩니다.
랜덤 포트 생성기란?
개발 서버를 띄우거나 Docker 컨테이너를 실행할 때, 포트 번호가 겹쳐서 골치 아팠던 적 없으신가요? '이미 사용 중인 포트(address already in use)' 오류는 개발 흐름을 끊는 주범입니다. 랜덤 포트 생성기는 잘 알려진 표준 포트와 다른 개발 도구들이 흔히 쓰는 포트를 피해, 충돌 가능성이 낮은 임의의 포트 번호를 즉시 만들어줍니다. 동적·사설 포트(49152~65535) 등 원하는 범위에서 필요한 개수만큼 한 번에 생성하고, 생성된 번호들은 중복 없이 안전하게 만들어집니다. 모든 과정은 브라우저 안에서만 처리되므로 서버로 아무 정보도 전송되지 않습니다. 설치나 회원가입 없이 지금 바로 사용해 보세요.
사용 방법
- 생성할 포트의 범위를 선택합니다. '동적', '등록' 등 미리 정해진 범위나 '직접 지정'을 고를 수 있습니다.
- 생성할 포트 개수를 1부터 200 사이로 입력합니다.
- 필요에 따라 '잘 알려진 포트·흔히 쓰는 포트 피하기', '오름차순 정렬' 옵션을 켜거나 끕니다.
- '포트 생성' 버튼을 누르면, 설정에 맞는 임의의 포트 번호가 중복 없이 생성되어 결과 창에 나타납니다.
- 결과는 '복사' 버튼으로 간편하게 클립보드에 복사하거나, '저장' 버튼을 눌러 ports.txt 파일로 다운로드할 수 있습니다.
랜덤 포트 생성기 사용 가이드
실제 작업에서 이 도구를 어떻게 쓰는지, 무엇을 조심해야 하는지 정리했습니다.
세 구간의 의미와, 개발 서버를 어디에 둬야 하나
포트 번호 65,535개는 IANA가 세 구간으로 나눠 놓았습니다. 위쪽 탭이 이 구간과 대응합니다.
여기에 함정이 하나 있습니다. 아래 표의 동적 구간은 원래 "OS가 아웃바운드 연결을 만들 때 임시로 빌려 쓰는" 자리입니다. 그런데 리눅스가 실제로 쓰는 임시 포트 범위는 기본값이 32768~60999 라서 동적 구간과 크게 겹칩니다. 이 안에서 고른 포트로 서버를 띄우면, 서버가 시작하기 전에 다른 프로세스의 아웃바운드 연결이 그 포트를 먼저 잡아버릴 수 있습니다. 그러면 평소엔 잘 되다가 재부팅이나 재배포 때 가끔 "주소가 이미 사용 중"으로 죽는, 재현이 안 되는 장애가 됩니다.
| 구간 | 범위 | 성격 |
|---|---|---|
| 잘 알려진 포트 | 1 ~ 1023 | HTTP 80, SSH 22 등 표준 서비스. 리눅스에서 root 권한 필요 |
| 등록된 포트 | 1024 ~ 49151 | MySQL 3306 등. 등록은 관례일 뿐 누구나 쓸 수 있음 |
| 동적·사설 포트 | 49152 ~ 65535 | 운영체제가 임시로 빌려주는 구간 |
1024 미만이 root를 요구하는 이유와 실무 해법
리눅스에서 1024 미만 포트는 특권 포트로 취급되어 root 권한이 있어야 바인딩됩니다. 아무나 80번 포트를 잡아 가짜 웹 서버를 띄우지 못하게 하려던 옛 설계입니다. 그렇다고 웹 애플리케이션을 root로 실행하는 것은 최악의 선택입니다 — 앱이 뚫리면 서버 전체가 넘어갑니다.
그래서 현장에서는 앱을 3000번대 같은 일반 포트에 띄우고 앞단에서 nginx가 80·443을 받아 넘겨주는 구조를 씁니다. 이 도구로 고른 포트는 대개 그 "뒤쪽" 자리에 들어갑니다.
# 방법 1 (권장): nginx가 80/443을 잡고 앱은 일반 포트
# proxy_pass http://127.0.0.1:3000;
# 방법 2: 실행 파일에 바인딩 권한만 부여
sudo setcap CAP_NET_BIND_SERVICE=+eip /usr/bin/node
# 방법 3: systemd 서비스에 권한만 부여
# [Service]
# AmbientCapabilities=CAP_NET_BIND_SERVICE
포트 충돌 디버깅
"주소가 이미 사용 중(EADDRINUSE)"은 개발자가 가장 자주 만나는 오류입니다. 순서대로 확인하면 대부분 1분입니다.
- 범인이 자기 자신인 경우가 가장 많습니다. 이전에 띄운 nodemon·pm2 프로세스가 살아 있는지 보세요.
- 아무도 안 잡고 있는데 오류가 나면 TIME_WAIT 상태일 수 있습니다. 방금 종료한 서버의 연결이 정리되는 중이며 잠시 후 풀립니다. 개발 서버라면 SO_REUSEADDR 옵션으로 피할 수 있습니다.
- 맥에서 5000번이 안 되면 시스템의 AirPlay 수신 기능일 가능성이 큽니다. 이 참조표에 5000번이 올라 있는 이유입니다.
- 서버는 정상인데 접속만 안 된다면 포트가 아니라 방화벽입니다. 클라우드 보안그룹에서 해당 포트를 열었는지 확인하세요.
# 리눅스 · 맥 — 누가 3000번을 잡고 있나
ss -ltnp | grep :3000
lsof -i :3000
# 윈도우
netstat -ano | findstr :3000
taskkill /PID 12345 /F
# 도커까지 확인 (컨테이너가 잡고 있는 경우가 흔함)
docker ps --format '{{.Names}}\t{{.Ports}}'
"잘 알려진 포트 피하기"가 하는 일과 못 하는 일
이 옵션을 켜면 아래 참조표에 있는 포트들이 결과에서 제외됩니다. 3306(MySQL), 6379(Redis), 5432(PostgreSQL), 3000(Node·Grafana), 5173(Vite), 8080 같은 관례 포트들입니다. 하필 Redis 기본 포트를 골라 나중에 Redis를 못 띄우는 상황을 막아 줍니다.
하지만 이 표는 60여 개의 대표적인 포트일 뿐입니다. 사내에서 이미 쓰고 있는 포트, 설치된 에이전트가 잡은 포트, 다른 팀이 예약한 포트는 알 방법이 없습니다. 이 도구는 규격상 겹치지 않을 후보를 뽑아 줄 뿐이고, 실제로 비어 있는지는 반드시 서버에서 확인해야 합니다.
팀에서 포트를 관리하는 요령
서비스를 여러 개 돌리기 시작하면 포트가 금세 엉킵니다. 무작위로 뽑는 것보다 규칙을 정하는 편이 결국 편합니다 — 예를 들어 팀별로 31xx, 32xx 대를 나누고 그 안에서 서비스마다 번호를 문서로 관리하는 식입니다. 이 도구는 그 규칙 안에서 겹치지 않는 후보를 뽑을 때 "직접 지정" 탭으로 범위를 좁혀 쓰면 됩니다.
개수를 여러 개로 두고 오름차순 정렬을 켜면 목록이 정리되어 나오고 txt로 저장할 수 있습니다. 새 프로젝트 여러 개에 포트를 한꺼번에 배분할 때 유용합니다.
- 컨테이너를 쓴다면 호스트 포트 충돌을 아예 피할 수 있습니다. 컨테이너 안에서는 모두 같은 포트를 쓰고 호스트에 노출할 때만 번호를 다르게 매핑하세요.
- 포트 번호는 비밀이 아닙니다. "특이한 포트에 띄우면 안전하다"는 생각은 자동 스캐너 앞에서 몇 분 못 갑니다. 인증과 방화벽이 본체입니다.
- 이 도구는 편향 없는 암호학적 난수로 중복 없이 뽑습니다. 다만 포트 선정에 예측 불가능성이 필요한 경우는 거의 없습니다 — 겹치지 않는 것이 목적입니다.
자주 묻는 질문
왜 1024 미만 포트는 피하는 게 좋은가요?
포트 번호 0번부터 1023번까지는 '잘 알려진 포트(Well-known Ports)' 영역입니다. HTTP(80), HTTPS(443), SSH(22)처럼 특정 서비스에 국제적으로 예약된 번호들이며, 리눅스나 macOS 등 유닉스 계열 운영체제에서는 해당 포트를 사용하려면 관리자(root) 권한이 필요합니다. 개발용으로 쓰기에는 부적절하며 시스템 서비스와 충돌할 수 있습니다.
여기서 생성한 포트는 항상 사용 가능한가요?
아니요, 보장할 수는 없습니다. 이 도구는 충돌 가능성이 '낮은' 포트 번호를 '추천'해주는 역할을 합니다. 사용자의 컴퓨터나 서버에서 다른 프로그램이 이미 해당 포트를 사용하고 있을 수 있습니다. 포트 생성 후 실제 서버에 적용했을 때 '포트 사용 중' 오류가 발생한다면, 다른 번호로 다시 시도해야 합니다.
'잘 알려진 포트 피하기'는 정확히 어떤 포트를 피하나요?
단순히 1023번 이하의 포트만 피하는 것이 아닙니다. MySQL(3306), PostgreSQL(5432), Redis(6379) 등 주요 데이터베이스와 Node.js(3000), Vite(5173), Grafana(3000) 등 자주 쓰이는 개발 도구의 기본 포트까지 포함된 목록을 기준으로 제외합니다. 제외되는 포트의 전체 목록은 페이지 하단의 '주요 포트 참조표'에서 직접 확인하고 검색해볼 수 있습니다.
생성된 포트 번호는 정말로 무작위인가요?
네, 예측이 거의 불가능한 고품질 난수입니다. 이 도구는 단순한 수학 함수가 아닌, 브라우저에 내장된 암호학적으로 안전한 난수 생성기(crypto.getRandomValues)를 사용합니다. 이를 통해 생성된 포트 번호들은 편향 없이 고르게 분포하며, 한 번에 여러 개를 생성해도 결과 내에서 서로 중복되지 않도록 처리됩니다.