
У меня есть сервер (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