@perl-user

Запуск OpenVPN клиента и сервера на одной машине. Как?

Здравствуйте!

Мой VPN-провайдер с недавних пор заблокирован в России, а я остался с оплаченным на несколько лет вперед аккаунтом. Поэтому было решено использовать промежуточный VPS для обеспечения доступа к услугам VPN-провайдера.

На VPS я решил организовать "транзитный VPN", что-то вроде DoubleVPN, чтобы конечная схема выхода в сеть имела вид:

Я ==(VPNTunnel)==> VPS ==(VPNTunnel)==> VPN-Provider ==> Network


Таким образом, мне потребовалось запустить и OpenVPN-клиент и OpenVPN-сервер на одной машине. По отдельности клиент и сервер запускаются и функционируют успешно. Проблема в том, что не удается заставить корретно работать их вместе.

Ниже таблица маршрутизации:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.36.0.1       128.0.0.0       UG    0      0        0 tun1
0.0.0.0         11.11.11.11     0.0.0.0         UG    0      0        0 eth0
11.11.11.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0
10.8.0.0        10.8.0.2        255.255.255.0   UG    0      0        0 tun0
10.8.0.2        0.0.0.0         255.255.255.255 UH    0      0        0 tun0
10.36.0.0       0.0.0.0         255.255.0.0     U     0      0        0 tun1
128.0.0.0       10.36.0.1       128.0.0.0       UG    0      0        0 tun1
22.22.22.22     11.11.11.11     255.255.255.255 UGH   0      0        0 eth0


Здесь:
  • tun0 - интерфейс VPN-сервера;
  • tun1 - интерфейс VPN-клиента;
  • 11.11.11.11 - IP-адрес VPS;
  • 22.22.22.22 - IP-адрес VPN-провайдера.


Все цепочки iptables пусты и имеют правило по умолчанию - ACCEPT. За иключением того, что были проделаны следующие действия:

# трансляция IP-адреса VPN-сервера в IP-адрес VPS
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

# временный трюк для сохранения доступа по SSH
ip rule add fwmark 2 table 3
ip route add default via 11.11.11.11 table 3
ip route flush cache
iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 2


При активных OpenVPN клиенте и сервере первый работает надлежащим образом. Весь трафик от VPS идет через VPN-провайдера. Не работает корректно VPN-сервер, то есть у меня нет VPN-доступа к VPS.

Я предположил, что трафик исходящий от VPN-сервера по направлению ко мне теряется, поскольку заворачивается в tun1. Казалось, чтобы решить проблему достаточно лишь добавить маршрут:

33.33.33.33     11.11.11.11     255.255.255.255 UGH   0      0        0 eth0

где 33.33.33.33 - мой IP-адрес.

Но это не принесло ожидаемого результата. Да и в принципе такое решение не выглядит изящным, если предположить, что я использую динамический IP-адрес.

Вопрос, как организовать корректную работу OpenVPN клиента и сервера на одной машине?
  • Вопрос задан
  • 490 просмотров
Решения вопроса 1
hint000
@hint000
у админа три руки
На VPS я решил организовать "транзитный VPN"
А всего-то надо было настроить на промежуточном узле DNAT через iptables. И не нужно там ни клиента, ни сервера OpenVPN.

Update: DNAT + SNAT.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
meDveD_spb
@meDveD_spb
Поставить там какой-нибудь Traefik.
Или Router OS, ни места не займет, ни ресурсов.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Проблема, видимо, в том, что при подключении ВПН клиента шлюзом по умолчанию становится ВПН-сервер, к которому подключается ВПН клиент. Нужно убрать это поведение (опция push "redirect-gateway def1" в конфиге ВПН сервера 10.36.0.1).
В целом, не вижу проблем, что бы клиент и сервер работали параллельно на одном компе, если они оба не будут трогать настройки шлюза по умолчанию. Скорее всего для правильной маршрутизации трафика придется добавлять статические маршруты или прописывать правила фаервола, перенаправляющие определенный трафик в нужный интерфейс.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы