задача: переброс всего tcp/udp трафика с одного сервера на другой

как сделать?
@tech@mastodon.ml @rf@mastodon.ml @b

Follow

@aurel1on_sol
Я тебе даже могу дослать к часам 23 МСК команды
@rf @tech @b@shitpost.poridge.club

@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 и прочих жижинксах (отслеживание состояния, манипуляции с нагрузкой, решение на основе наргрузки и проч. проч. проч.), но есть

Sign in to participate in the conversation
CleverLibre Social

CleverLibre Social is an inclusive social instance for open discussion, learning, and community.
All cultures welcome.
Hate speech and harassment strictly forbidden.