Вот мой сценарий:
У меня есть VPS, который имеет два IP-адреса и работает OpenVPN (IP-адрес сервера OpenVPN: 10.1.2.1). Я хочу перенаправить весь полученный трафик по ОДНОМУ адресу VPN-клиенту (10.1.2.2).
Вот два правила, которые я в настоящее время использую:
iptables -t nat -A PREROUTING -i venet0 -p ALL -d <EXTERNAL IP #1> -j DNAT --to-destination 10.1.2.2
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
Это работает. Я могу переслать запрос VPN-клиенту и использовать сервисы, размещенные VPN-клиентом. Однако у меня есть другая служба, которой нужно знать ИСТИННЫЙ IP-адрес запроса ВХОДЯЩЕГО КЛИЕНТА. Когда я делаю это вышеупомянутым способом, VPN-клиент думает, что входящий клиент имеет IP-адрес 10.1.2.1, который является IP-адресом сервера OpenVPN.
Я перепробовал много решений, включая замену MASQUERADE на ...
iptables -t nat -A POSTROUING -o tun0 -s 10.1.2.2 -j SNAT --to-source <EXTERNAL IP #1>
но это не работает Все запросы просто висят.
Моя сетевая архитектура использует только venet0 и tun0, который является туннелем OpenVPN. Будем весьма благодарны за предложения относительно того, как получить ИСТИННЫЙ IP-адрес публичного клиента. Спасибо.
Trecius