IPTables — пересылка на подключенный клиент, но сохранение исходного IP-адреса

IPTables — пересылка на подключенный клиент, но сохранение исходного IP-адреса

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

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

Я перепробовал много решений, включая замену МАСКАРАДА на...

iptables -t nat -A POSTROUING -o tun0 -s 10.1.2.2 -j SNAT --to-source <EXTERNAL IP #1>

но это не работает. Все запросы просто зависают.

Моя сетевая архитектура использует только venet0 и tun0, который является туннелем OpenVPN. Предложения о том, как получить ИСТИННЫЙ IP-адрес публичного клиента, были бы весьма признательны. Спасибо.

Трециус

решение1

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

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

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

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