1

Вот мой сценарий:

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

1 ответ1

1

Похоже, вы не должны использовать ни SNAT, ни MASQUERADE. Любой из вариантов приведет к двойному NAT, не позволяющему обоим концам узнать настоящий IP-адрес другого конца. NAT всегда сломает эти знания, по крайней мере, в одном направлении.

Если сервер на другом конце tun0 использует ваш маршрутизатор в качестве маршрута по умолчанию, он должен вернуть трафик обратно на ваш маршрутизатор, где DNAT может быть отменен для обратного трафика.

Альтернативным вариантом, по крайней мере для HTTP, является запуск прокси на вашем сервере. Прокси должен добавить или расширить заголовок X-Forwarded-For. Он будет содержать один или несколько адресов, идентифицирующих адрес, для которого был перенаправлен трафик. Вы можете доверять IP-адресу, который вы добавляете. Другие адреса могут быть подделаны.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .