https://github.com/kaurcev/node-tcp-proxy
[RU] Ничего более, чем простой, легковесный и надежный TCP-прокси (TCP-туннель) на Node.js без внешних зависимостей.
https://github.com/kaurcev/node-tcp-proxy
env example example-project nodejs simple-project tcp-proxy
Last synced: 6 days ago
JSON representation
[RU] Ничего более, чем простой, легковесный и надежный TCP-прокси (TCP-туннель) на Node.js без внешних зависимостей.
- Host: GitHub
- URL: https://github.com/kaurcev/node-tcp-proxy
- Owner: kaurcev
- License: mit
- Created: 2026-06-05T03:49:44.000Z (18 days ago)
- Default Branch: main
- Last Pushed: 2026-06-05T03:57:52.000Z (18 days ago)
- Last Synced: 2026-06-05T05:18:30.052Z (18 days ago)
- Topics: env, example, example-project, nodejs, simple-project, tcp-proxy
- Language: JavaScript
- Homepage: https://kaurcev.dev
- Size: 10.7 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# node-tcp-proxy
Ничего более, чем простой, легковесный и надежный TCP-прокси (TCP-туннель) на Node.js без внешних зависимостей.
Предназначен для перенаправления (форвардинга) входящего сетевого трафика с одного порта на другой. Полезен для проброса локальных сервисов во внешнюю сеть, смены портов на лету или отладки сетевых соединений.
## Особенности
- **Zero dependencies**: Работает исключительно на встроенных модулях Node.js (`node:net`).
- **Стриминг данных**: Использование `Stream.pipe()` обеспечивает высокую скорость и встроенное управление нагрузкой памяти (backpressure).
- **Безопасность процесса**: Корректная обработка сетевых ошибок (`ECONNRESET` и др.) предотвращает падение приложения.
- **Environment Config**: Полная настройка через переменные окружения.
## Требования
- **Node.js** v20.6.0 или выше (для встроенной поддержки `.env` файлов).
*Если у вас старая версия Node.js, потребуется установить пакет `dotenv`.*
## Быстрый старт
### 1. Настройка окружения
Создайте файл `.env` в корневом каталоге проекта и укажите ваши порты:
```env
# Порт, который будет слушать прокси-сервер
LISTEN_PORT=3000
# Сетевой интерфейс (0.0.0.0 — принимать подключения отовсюду)
LISTEN_HOST=0.0.0.0
# Адрес и порт целевого сервиса, куда перенаправляется трафик
TARGET_HOST=127.0.0.1
TARGET_PORT=8080
```
### 2. Запуск
Запустите скрипт, передав файл настроек через встроенный флаг Node.js:
```bash
node --env-file=.env index.js
```
Успешный запуск выведет в консоль:
```text
Проброс запущен!
Входной порт: 0.0.0.0:3000 ===> Целевой сервис: 127.0.0.1:8080
```
## Как это работает под капотом
1. Сервер слушает подключения на `LISTEN_PORT`.
2. При подключении клиента создается параллельное соединение к `TARGET_PORT`.
3. Потоки данных связываются нативно в обе стороны: `client ⇄ proxy ⇄ target`.
## Лицензия
MIT. Свободно для использования и модификации.