Проксирование портов с помощью 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

Настройка перенаправления портов

  1. Откройте конфигурационный файл:
sudo nano /etc/rinetd.conf
  1. Добавьте в конец файла строки в формате:
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).

  1. Перезапустите rinetd:
sudo systemctl restart rinetd
# или
sudo service rinetd restart

Проверка работы

  1. Убедитесь, что служба запущена:
sudo systemctl status rinetd
  1. Посмотрите, какие порты слушает rinetd:
sudo ss -tuln | grep rinetd

или

sudo netstat -tuln | grep rinetd
  1. Протестируйте подключение:
    • с внешнего 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 проще и легче всего.

Помощь

Если у вас возникли вопросы или требуется помощь, пожалуйста, свяжитесь с нами через систему тикетов — мы обязательно вам поможем!

Обновлено:
Нужна помощь?Наши инженеры бесплатно помогут с любым вопросом за считанные минутыНаписать нам