Здравствуйте!
Мой 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 клиента и сервера на одной машине?