Проксирование портов с помощью Rinetd
Перенаправления TCP-трафика на VPS и выделенных серверах.
Rinetd — это минималистичный TCP-прокси, который перенаправляет соединения с одного IP-адреса и порта на другой. Он идеально подходит для VPS и выделенных серверов, когда нужно:
- пробросить порт с публичного IP на внутренний сервер
- запустить несколько сервисов на одном порту
- организовать доступ к сервисам за NAT или в локальной сети
- быстро настроить прокси без сложных iptables-цепочек
Rinetd работает как один процесс с неблокирующим I/O, поэтому выдерживает большое количество одновременных подключений без заметной нагрузки на сервер.
Установка Rinetd
Ubuntu / Debian:
sudo apt update
sudo apt install rinetd -y
CentOS / RHEL / AlmaLinux / Rocky:
sudo yum install rinetd -y
# или
sudo dnf install rinetd -y
Настройка перенаправления портов
- Откройте конфигурационный файл:
sudo nano /etc/rinetd.conf
- Добавьте в конец файла строки в формате:
public_IP external_port internal_IP internal_port
Пример (перенаправление с публичного IP на несколько внутренних серверов):
85.85.85.85 12341 192.168.1.5 1234
85.85.85.85 12342 192.168.1.6 1234
85.85.85.85 12343 192.168.1.7 1234
85.85.85.85 12344 192.168.1.8 1234
85.85.85.85 12345 192.168.1.9 1234
- 1-й столбец — публичный IP сервера (или
0.0.0.0для всех интерфейсов) - 2-й столбец — внешний порт, который слушает rinetd
- 3-й столбец — внутренний IP, куда перенаправляем
- 4-й столбец — внутренний порт назначения
Сохраните файл (Ctrl+O → Enter → Ctrl+X).
- Перезапустите rinetd:
sudo systemctl restart rinetd
# или
sudo service rinetd restart
Проверка работы
- Убедитесь, что служба запущена:
sudo systemctl status rinetd
- Посмотрите, какие порты слушает rinetd:
sudo ss -tuln | grep rinetd
или
sudo netstat -tuln | grep rinetd
- Протестируйте подключение:
- с внешнего IP на порт 12341 → должен прийти трафик на 192.168.1.5:1234
- используйте
telnet,ncили любой клиент для проверки.
Полезные замечания
- Rinetd не поддерживает логирование по умолчанию. Для логов добавьте в конфиг по пути
/etc/rinetd.conf:
log /var/log/rinetd.log
- Если нужно разрешить доступ только с определённых IP — используйте
iptablesилиfirewall-cmdперед rinetd. - Для высокой нагрузки (тысячи соединений) rinetd может потреблять много памяти — мониторьте через
topилиhtop. - Альтернативы: socat, iptables DNAT, HAProxy, nginx stream — но rinetd проще и легче всего.
Помощь
Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!