Как маршрутизировать порты, чтобы передавался IP клиента?
Есть 2 сервера
Первый с белым IP адресом
Второй с серым IP адресом
К Первому серверу подключаю Второй по ВПН.
Пробросил через IPTABLES порт:
-A PREROUTING -i eth0 -p tcp -m tcp --dport 22056 -j DNAT --to-destination 192.168.0.234:22
-A POSTROUTING -d 192.168.0.234/32 -o ppp0 -p tcp -m tcp --dport 22 -j MASQUERADE
При обращении клиента к Первому серверу по порту 22056, открывается ssh по 22 порту Второго сервера
Last login: Tue Oct 18 11:50:28 2022 from 192.168.0.1
Как сделать, чтобы был IP клиента с внешки, а не локальный?
Не использовать правило с -j MASQUERADE. Именно оно "портит" адрес клиента.
Посмотрим, для чего это правило нужно. Чтобы второй сервер понимал, куда отправлять ответные пакеты.
Так что вместо этого на втором сервере нужно настроить default-маршрут через VPN.
При этом нужно не забыть добавить явный маршрут до первого сервера через шлюз провайдера.
warcrafer, всё просто: здесь 12.34.56.78 - это адрес, куда хотим попасть,
via 10.0.0.1 - это куда для этого нужно идти, т.е. адрес шлюза.
А какие конкретно у вас адреса - это вам лучше знать.