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

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

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

Follow

@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
Qoto Mastodon

QOTO: Question Others to Teach Ourselves
An inclusive, Academic Freedom, instance
All cultures welcome.
Hate speech and harassment strictly forbidden.