Для перенаправления трафика на другой сервер нужно сначала включить такую возможность в ядре Linux. Это можно сделать несколькими способами. Если нужно сохранить функцию проксирования даже после перезагрузки сервера, то в файл
/etc/sysctl.conf
надо добавить добавляем строку:
net.ipv4.ip_forward=1
После чего выполнить команду:
sudo sysctl -p
Но если нужно испытать проксирование только для текущего сеанса, то можно выполнить такую команду:
echo "1" > /proc/sys/net/ipv4/ip_forward
или такую:
sysctl net.ipv4.ip_forward=1
После чего можно начать прописывать правила для iptables для перенаправления. Всего правил будет три. Они позволят перенаправить весь трафик с одного порта принимающего сервера на другой порт удалённого сервера.Первое правило перенаправит весь трафик с одного порта сервера на другой сервер (и определённый порт на нём). При этом DNAT изменяет сетевой адрес получателя (то есть передаст пакет дальше). Команда для консоли выглядит так (это очень длинная команда):
iptables -t nat -A PREROUTING -i интерфейс -p tcp --dport порт_принимающий -m state --state NEW -j DNAT --to ip_куда_направить:порт_куда_направить
- не забудьте поменять в этой команде "интерфейс", "порт_принимающий", "ip_куда_направить" и "порт_куда_направить" на нужные.
Второе правило разрешает уже установленные соединения:
iptables -t nat -A PREROUTING -m state --state ESTABLISHED,RELATED -j ACCEPT
И третье правило изменит сетевой адрес отправителя. Команда:
iptables -t nat -A POSTROUTING -p tcp -m tcp --dport порт_принимающий j SNAT --to-source ip_этого_сервера
В этих командах "порт_принимающий" - это порт на проксирующем сервере (который посередине), на который будет приходить запрос. "порт_куда_направить" - это порт на удалённом сервере (конечная станция), куда будет передаваться запрос.
После внесения изменений не забудьте сохранить правила iptables, чтобы они загрузились при следующем старте системы. Для CentOS 8 это будет команда:
для 7-ой это команда:
Если оба сервера не имеют белых ip, то стоит вместо последнего правила с SNAT использовать такую команду:
iptables-save > /etc/sysconfig/iptables
для 7-ой это команда:
service iptables save
iptables -A POSTROUTING -t nat -j MASQUERADE
SNAT можно применять только если оба сервера имеют белы ip адреса. Правило с SNAT работает быстрее, чем MASQUERADE, потому что последний непрерывно спрашивает у сетевой карты её ip адрес.Если использовать SNAT, то при непродолжительном обрыве соединения есть вероятность, что пакет не будет отброшен и дойдёт до адресата. Но с MASQUERADE пакет будет отброшен даже если соединение восстановится.