@aurel1on_sol
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport [ПОРТ ПРИЕМА] -j DNAT --to-destination [IP КУДА]:[ПОРТ КУДА]
iptables -t nat -A POSTROUTING -d [IP КУДА]/32 -o eth0 -j MASQUERADE
Включить роутинг в sysctl
# sysctl -p
net.ipv4.ip_forward = 1
Если накручена таблица firewall, надо еще в цепочке FORWARD не забыть разрешить
iptables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -m comment --comment ESTABLISHED -j ACCEPT
-A FORWARD -p tcp -m tcp --dport [ПОРТ ПРИЕМА] -j ACCEPT
Ну и всё
@aurel1on_sol
Чуть объясню. Тут в итоге делается двойной NAT (twice NAT). При приеме на определенный порт сервер подменяет IP DST (и порт, если надо) на указанный DST вместо своего собственного, а IP SRC на свой собственный на eth0, вместо того, что ему прилетело в оригинальном пакете. В итоге сервер, куда ты роутишь, видит как будто ему сессия пришла от сервера-приемника. Балансировка в iptables тоже есть, кстати. Без всяких фич, как в haproxy и прочих жижинксах (отслеживание состояния, манипуляции с нагрузкой, решение на основе наргрузки и проч. проч. проч.), но есть
@aurel1on_sol
Чуть объясню. Тут в итоге делается двойной NAT (twice NAT). При приеме на определенный порт сервер подменяет IP DST (и порт, если надо) на указанный DST вместо своего собственного, а IP SRC на свой собственный на eth0, вместо того, что ему прилетело в оригинальном пакете. В итоге сервер, куда ты роутишь, видит как будто ему сессия пришла от сервера-приемника. Балансировка в iptables тоже есть, кстати. Без всяких фич, как в haproxy и прочих жижинксах (отслеживание состояния, манипуляции...