1.1.1.1 - public IP of VPS
10.1.0.1 - internal IP of OpenVPN server running on VPS
192.168.1.0/24 - local subnet on the VPN client's side
192.168.1.101 - local server running on port TCP 1234

Основное использование VPN/VPS:

  1. в качестве шлюза для серфинга на конкретных сайтах
  2. в качестве прокси для клиентов, подключающихся к серверу 192.168.1.101

Текущие настройки iptables:

-A PREROUTING -d 1.1.1.1 -p tcp -m tcp --dport 1234 -j DNAT --to-destination 192.168.1.101:1234
-A POSTROUTING -d 192.168.1.101 -p tcp -m tcp --dport 1234 -j SNAT --to-source 10.1.0.1
-A POSTROUTING -o eth0 -j SNAT --to-source 1.1.1.1

Две первые строки перенаправляют порт TCP 1234 на желаемый пункт назначения, и это работает. Единственная проблема в том, что на целевом сервере я не вижу реального IP-адреса подключенных клиентов. Все клиенты имеют одинаковый IP: 10.1.0.1. Я попытался изменить 2-ю строку на:

-A POSTROUTING -d 192.168.1.101 -p tcp -m tcp --dport 1234 -j SNAT --to-source 1.1.1.1

но тогда клиенты не соединяются вообще. Последняя строка используется, чтобы позволить мне путешествовать по Интернету.

Вопрос: Как правильно установить правила, чтобы я мог видеть реальные IP-адреса подключенных клиентов?

1 ответ1

1

Хорошо, похоже, что вы пытаетесь настроить переадресацию портов через VPN, т.е. 1.1.1.1:1234 -> 192.168.1.101:1234. Ваш конфиг openvpn также выглядит нормально.

Как указано в комментариях, во втором правиле вы изменяете исходный IP-адрес с помощью -j SNAT --to-source 10.1.0.1 . Чтобы добиться переадресации портов, замените правила iptables на:

-A PREROUTING -t nat -i eth0 -d 1.1.1.1 -p tcp --dport 1234 -j DNAT --to-destination 192.168.1.101:1234
-A FORWARD -p tcp -d 192.168.1.101 --dport 1234 -j ACCEPT
  • Первое правило говорит iptable для отправки всех входящих tcp-соединений на порт 1234 через интерфейс eth0 с пунктом назначения, установленным на 1.1.1.1, на порт 1234 внутренней машины 192.168.1.101.
  • Второе правило разрешает пересылку пакетов на порт 1234 из 192.168.1.101

Источник

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