Packet Redirector는 특정 IP와 포트로 수신된 패킷을 실시간으로 다른 IP와 포트로 전달(포워딩)해주는 간단하고 가벼운 GUI 기반 프로그램입니다. UDP / TCP 모두 지원하며, 실시간 패킷 확인 기능 및 다국어 지원을 제공합니다.
2.0 버전부터 Rust + egui로 다시 작성되었습니다.
결과물은 약 3.2 MB짜리 단일 실행 파일(PacketRedirector.exe) 하나이며, .NET 런타임을 비롯한 어떤 별도 설치도 필요하지 않습니다.
파일 하나만 복사해 두면 어디서든 바로 실행됩니다.
- UDP / TCP 패킷 리다이렉팅 지원
- TCP 양방향 통신 — 대상 서버가 보낸 응답이 원래 클라이언트에게 그대로 되돌아갑니다
- 프로토콜 교차 변환 — UDP로 받아 TCP로 보내거나, TCP로 받아 UDP로 보낼 수 있습니다
- 수신 및 송신 포트/프로토콜 지정 가능
- 초당 수신 패킷 수 실시간 표시
- 최근 수신된 패킷 메시지 확인 가능
- 수정 가능한 다국어 UI (예: English / 한국어)
- 외부
locales폴더로 번역 추가/수정 — 재빌드 없이 언어를 늘릴 수 있습니다 - 설정 자동 저장 및 복원 (
config.json)
PacketRedirector.exe실행 (설치 없이 바로 실행 가능)
상단의
Language드롭다운에서 언어 선택
| 항목 | 설명 |
|---|---|
| Receive Protocol | 수신 프로토콜 (UDP 또는 TCP) |
| Receive IP / Port | 수신 IP 주소와 포트 (기본: 127.0.0.1 / 39539) |
| Send Protocol | 송신 프로토콜 (UDP 또는 TCP) |
| Send IP / Port | 전송할 대상 IP 주소와 포트 |
설정은
Start실행 시, 언어 변경 시, 그리고 프로그램 종료 시 실행 파일과 같은 폴더의config.json에 저장됩니다.
Start버튼 클릭 → 포워딩 시작Stop버튼 클릭 → 중단
- 하단
Last Packet Message패널을 열면 가장 최근 수신된 메시지를 확인할 수 있습니다. - 패널을 닫아두면 패킷 내용을 복사하지 않으므로 부하가 거의 없습니다.
en.json, ko.json은 실행 파일 안에 내장되어 있어 별도 파일 없이도 동작합니다.
번역을 추가하거나 고치고 싶다면 실행 파일과 같은 폴더에 locales 폴더를 만들고
JSON 파일을 넣으면 됩니다. 파일 이름(확장자 제외)이 언어 ID가 되며,
en.json / ko.json처럼 내장 언어와 이름이 같으면 내장 번역을 덮어씁니다.
PacketRedirector.exe
config.json
locales\
ja.json ← 새 언어 추가
ko.json ← 내장 한국어 번역 수정
예시 (locales/en.json):
{
"lang": "English",
"text": {
"title": "Packet Redirector",
"start": "Start",
"stop": "Stop",
"status_idle": "Ready",
"packets_per_sec": "Packets/sec: {n}"
}
}{n}, {e}는 각각 패킷 수와 오류 메시지로 치환됩니다.
없는 키는 키 이름이 그대로 표시되므로 빠진 번역을 바로 알 수 있습니다.
Rust(GNU 툴체인)만 있으면 됩니다. Visual Studio는 필요 없습니다.
rustup default stable-x86_64-pc-windows-gnu
cargo build --release결과물: target\release\PacketRedirector.exe
참고:
windows-targets계열 크레이트가 import 라이브러리를 만들 때 GNUdlltool/as를 사용합니다. 빌드가dlltool오류로 멈추면 mingw-w64(예:winget install BrechtSanders.WinLibs.POSIX.MSVCRT)를 설치하고 그mingw64\bin을 PATH에 추가하세요.
- UDP → TCP는 데이터그램 경계를 보존하지 않습니다. 데이터그램 바이트가 그대로 스트림에 이어 붙어 전송되므로, 받는 쪽이 경계를 필요로 한다면 길이 접두사 같은 프레이밍을 직접 넣어야 합니다.
- UDP 응답은 마지막 송신자에게만 돌아갑니다. 대상이 보낸 응답은 가장 최근에 패킷을 보낸 클라이언트 한 곳으로만 전달됩니다. 여러 클라이언트가 동시에 사용하는 환경에는 적합하지 않습니다.
- UDP → TCP 연결이 끊겨 재연결된 경우, 응답 수신은 재시작 전까지 복구되지 않습니다.