랜덤 포트 생성기

잘 알려진 포트를 피해 사용 가능한 임의의 포트 번호를 생성합니다.

생성 결과

난수는 브라우저의 암호학적 난수 생성기(crypto.getRandomValues)로 만들며 중복 없이 생성됩니다. 실제로 그 포트가 비어 있는지는 서버에서 확인해야 합니다.

주요 포트 참조표

"잘 알려진 포트 피하기"를 켜면 이 표의 포트는 생성 결과에서 제외됩니다.

랜덤 포트 생성기란?

개발 서버를 띄우거나 Docker 컨테이너를 실행할 때, 포트 번호가 겹쳐서 골치 아팠던 적 없으신가요? '이미 사용 중인 포트(address already in use)' 오류는 개발 흐름을 끊는 주범입니다. 랜덤 포트 생성기는 잘 알려진 표준 포트와 다른 개발 도구들이 흔히 쓰는 포트를 피해, 충돌 가능성이 낮은 임의의 포트 번호를 즉시 만들어줍니다. 동적·사설 포트(49152~65535) 등 원하는 범위에서 필요한 개수만큼 한 번에 생성하고, 생성된 번호들은 중복 없이 안전하게 만들어집니다. 모든 과정은 브라우저 안에서만 처리되므로 서버로 아무 정보도 전송되지 않습니다. 설치나 회원가입 없이 지금 바로 사용해 보세요.

사용 방법

  1. 생성할 포트의 범위를 선택합니다. '동적', '등록' 등 미리 정해진 범위나 '직접 지정'을 고를 수 있습니다.
  2. 생성할 포트 개수를 1부터 200 사이로 입력합니다.
  3. 필요에 따라 '잘 알려진 포트·흔히 쓰는 포트 피하기', '오름차순 정렬' 옵션을 켜거나 끕니다.
  4. '포트 생성' 버튼을 누르면, 설정에 맞는 임의의 포트 번호가 중복 없이 생성되어 결과 창에 나타납니다.
  5. 결과는 '복사' 버튼으로 간편하게 클립보드에 복사하거나, '저장' 버튼을 눌러 ports.txt 파일로 다운로드할 수 있습니다.

랜덤 포트 생성기 사용 가이드

실제 작업에서 이 도구를 어떻게 쓰는지, 무엇을 조심해야 하는지 정리했습니다.

세 구간의 의미와, 개발 서버를 어디에 둬야 하나

포트 번호 65,535개는 IANA가 세 구간으로 나눠 놓았습니다. 위쪽 탭이 이 구간과 대응합니다.

여기에 함정이 하나 있습니다. 아래 표의 동적 구간은 원래 "OS가 아웃바운드 연결을 만들 때 임시로 빌려 쓰는" 자리입니다. 그런데 리눅스가 실제로 쓰는 임시 포트 범위는 기본값이 32768~60999 라서 동적 구간과 크게 겹칩니다. 이 안에서 고른 포트로 서버를 띄우면, 서버가 시작하기 전에 다른 프로세스의 아웃바운드 연결이 그 포트를 먼저 잡아버릴 수 있습니다. 그러면 평소엔 잘 되다가 재부팅이나 재배포 때 가끔 "주소가 이미 사용 중"으로 죽는, 재현이 안 되는 장애가 됩니다.

구간범위성격
잘 알려진 포트1 ~ 1023HTTP 80, SSH 22 등 표준 서비스. 리눅스에서 root 권한 필요
등록된 포트1024 ~ 49151MySQL 3306 등. 등록은 관례일 뿐 누구나 쓸 수 있음
동적·사설 포트49152 ~ 65535운영체제가 임시로 빌려주는 구간
오래 떠 있을 서비스의 고정 포트를 고른다면 "등록 1024~49151" 탭이 더 안전합니다. 동적 구간은 잠깐 쓰고 버릴 임시 서버나, 중복을 피하는 것만이 목적일 때 쓰세요. 서버의 현재 임시 포트 범위는 cat /proc/sys/net/ipv4/ip_local_port_range 로 확인할 수 있습니다.

1024 미만이 root를 요구하는 이유와 실무 해법

리눅스에서 1024 미만 포트는 특권 포트로 취급되어 root 권한이 있어야 바인딩됩니다. 아무나 80번 포트를 잡아 가짜 웹 서버를 띄우지 못하게 하려던 옛 설계입니다. 그렇다고 웹 애플리케이션을 root로 실행하는 것은 최악의 선택입니다 — 앱이 뚫리면 서버 전체가 넘어갑니다.

그래서 현장에서는 앱을 3000번대 같은 일반 포트에 띄우고 앞단에서 nginx가 80·443을 받아 넘겨주는 구조를 씁니다. 이 도구로 고른 포트는 대개 그 "뒤쪽" 자리에 들어갑니다.

bash
# 방법 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
앱을 외부에 직접 노출할 게 아니라면 0.0.0.0 이 아니라 127.0.0.1 에 바인딩하세요. 0.0.0.0:3000 으로 띄우면 방화벽이 허술한 순간 개발 서버가 인터넷에 그대로 열립니다.

포트 충돌 디버깅

"주소가 이미 사용 중(EADDRINUSE)"은 개발자가 가장 자주 만나는 오류입니다. 순서대로 확인하면 대부분 1분입니다.

  • 범인이 자기 자신인 경우가 가장 많습니다. 이전에 띄운 nodemon·pm2 프로세스가 살아 있는지 보세요.
  • 아무도 안 잡고 있는데 오류가 나면 TIME_WAIT 상태일 수 있습니다. 방금 종료한 서버의 연결이 정리되는 중이며 잠시 후 풀립니다. 개발 서버라면 SO_REUSEADDR 옵션으로 피할 수 있습니다.
  • 맥에서 5000번이 안 되면 시스템의 AirPlay 수신 기능일 가능성이 큽니다. 이 참조표에 5000번이 올라 있는 이유입니다.
  • 서버는 정상인데 접속만 안 된다면 포트가 아니라 방화벽입니다. 클라우드 보안그룹에서 해당 포트를 열었는지 확인하세요.
bash
# 리눅스 · 맥 — 누가 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여 개의 대표적인 포트일 뿐입니다. 사내에서 이미 쓰고 있는 포트, 설치된 에이전트가 잡은 포트, 다른 팀이 예약한 포트는 알 방법이 없습니다. 이 도구는 규격상 겹치지 않을 후보를 뽑아 줄 뿐이고, 실제로 비어 있는지는 반드시 서버에서 확인해야 합니다.

참조표 검색창에 번호나 서비스명(3306, redis)을 넣으면 바로 찾아집니다. 로그에 낯선 포트가 보일 때 무슨 서비스인지 확인하는 용도로도 씁니다.

팀에서 포트를 관리하는 요령

서비스를 여러 개 돌리기 시작하면 포트가 금세 엉킵니다. 무작위로 뽑는 것보다 규칙을 정하는 편이 결국 편합니다 — 예를 들어 팀별로 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)를 사용합니다. 이를 통해 생성된 포트 번호들은 편향 없이 고르게 분포하며, 한 번에 여러 개를 생성해도 결과 내에서 서로 중복되지 않도록 처리됩니다.