Изменить IP-адрес входящего пакета с помощью iptables

Изменить IP-адрес входящего пакета с помощью iptables

У меня есть сервер (S1) внутри LAN, где маршрутизатор находится вне моего контроля. На сервере установлен openvpn, и я могу войти на него по ssh. В LAN есть еще один сервер (S2), и я хочу перенаправить порт на S2 на порт S1.

Если я сделаю

sudo iptables -t nat -A PREROUTING  -p tcp -m tcp -d S1 --dport 8001 -j DNAT --to-destination S2:80

и затем попробуйте подключиться к S1:8001 с моего компьютера, который у меня есть на интерфейсе локальной сети S1:

IP **my_vpn_ip**.48174 > S2.80: Flags [S], seq 4243753453, win 14600, options [mss 1368,sackOK,TS val 89266048 ecr 0,nop,wscale 7], length 0

Очевидно, это не работает, так как S2 не имеет маршрута к моему компьютеру и не может отправить ответ. Возможно ли подделать источник на S1, чтобы получить пакеты обратно, а затем выполнить NAT?

Изменить маршруты на S2 невозможно, так как это IP-камера с очень ограниченными функциональными возможностями.

решение1

Настройте SNAT/Masquerading на хосте, к которому вы подключаетесь. Так что ваш исходный адрес будет изменен, чтобы он отображался как прокси, приходящий из NAT-бокса.

Такое простое правило может сделать то, что вам нужно.

iptables -t nat -A POSTROUTING --destination S2 -j MASQ

Связанный контент