Как пробросить порты в Proxmox (утилита rinetd)

Я обычно для этих целей использую утилиту — rinetd.

Во-первых проще, во-вторых утилита — отдельный демон и работает шустрее iptables. Минус в однопоточности. DDoS в 100к pps такой штукой отмаршрутизировать ещё можно, но дальше начнутся проблемы. С другой стороны, там, где летает 100к пакетов в секунду и iptables будет задумчиво перекидывать пакеты (хоть и в несколько потоков).

Через rinetd нельзя пробросить FTP, не пытайтесь. (если вдруг, знаете как это сделать, напишите мне, буду благодарен)

И так, все делается достаточно просто.

Задача.

Рассмотрим одну из самых частых задач, предоставление ssh доступа к виртуальной машине или контейнеру.
У нас есть:
1) ip адрес основной машины (на которой установлен proxmox) 8.8.8.8.
2) контейнер 10.0.0.1 на него нужно пробросить ssh.

Решение.

Ставим сам rinetd:

apt-get update
apt-get install rinetd

Открываем и правим конфиг:

nano /etc/rinetd.conf

И пишем туда следующее:

# разрешим всем ходить по редиректам (и вообще цепляться к портам):
allow *.*.*.*
# перенаправление ssh трафика с 8.8.8.8 на 10.0.0.1:
8.8.8.8 223 10.0.0.1 22

На всякий случай поясню:
- 1й столбик — IP, который слушает rinetd
- 2й столбик — порт, который слушает rinetd
- 3й столбик — IP, на который перенаправляем трафик
- 4й столбик — порт, на который перенаправляем трафик с порта из второго столбика.
Правил может быть сколько угодно (65к я не вбивал, но, думаю, справится).
В первый столбик нельзя вписывать IP, не принадлежащий машине (не поднятый на интерфейсах), иначе rinted не запустится. Точнее запустится, но будет дропать коннекты и спамить в логи.
Лог пишется в /var/log/rinetd.log, посматривайте сколько он места занимает — может расти достаточно быстро, если есть какие-либо проблемы.
После правки конфига следует перезапускать rinetd командой:

/etc/init.d/rinetd restart