Можно ли использовать VPN только для определенных запросов с сервера на сервер?

Есть сервер с сайтом. И есть задача, подключаться к апи стороннего ресурса, доступ к которому предоставлен только по VPN. Каким образом можно предоставить доступ пользователям сайта к этому стороннему ресурсу? Типичная ли это ситуация или сам подход плох изначально?
  • Вопрос задан
  • 1675 просмотров
Решения вопроса 2
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Ситуация типичная. В роутинге указываете что все запросы к нужным приватным IP/доменам идут через VPN.
На сайте соответственно делаете обертку, которая проксирует запросы пользователей.
Ответ написан
Комментировать
Если к API нужно ходить с фронтенда, то можно на вашем nginx запроксировать запросы на сторонний ресурс. В ряде случаев понадобится настройка чего-нибудь (nginx/php) на удаленной стороне (если, например, нужно передавать хидеры специализированные, например http-x-real-ip). Ситуация вполне штатная, обычная. Если нужно ходить с бэкенда, то так и напрямую ходите (curl или что там у вас). Ситуация тоже обычная.

Но я так понимаю, что главный вопрос в том, не плохо ли тут использовать vpn? Здесь нужно знать, какой у вас vpn. Самый печальный vpn - это pptp, т.к. небезопасен и будет дольше реконнектиться в случае потери соединения (да и в сравнении, например, с openvpn он даже в конфигурировании неудобен). Уверен, что у вас не pptp, это просто к слову (никто в здравом уме не будет поднимать pptp между сервер-сервер). Грубо говоря, все остальное (openvpn, ipsec и т.п.) можно использовать: проверено временем, стабильно. Касательно оверхеда: в 99% некритично. Например, если это openvpn l3 по udp, то оверхед на каждый пакет по размеру будет ~70 байт (где-то 20 ip, 8 udp, порядка 40-50 на tls)... примерно. И хотя если посчитать этот размер относительно маленьких пакетов, может выйти больше самого пакета (смотря как считать еще), это ни о чем не говорит: при достаточном канале (а у вас, раз речь идет про сервера, должно быть все хорошо) это некритично. В плане времени сколько-то уйдет на шифрование, но опять же для api это некритично (и надо учитывать, что соединение-то постоянное, то есть временной оверхед, например, на tcp/http и тем более https выше, а оно повсеместно, никто не парится). Для собственного успокоения можете замерить ширину канала (nc), потыкать в api (hping).

Кстати, если везде линуха, не нужна защита, нет по пути страшных фаерволов, видимость на уровне l3 есть, то лучший вариант, как по мне, - это линуксовый ipip, либо gre: минимальный оверхед, крайне легко настраивается (описано в lartc), не нужно дополнительное ПО. Не знаю, насколько это популярно, но я бы использовал такой "vpn", если возможно/нужно.

Еще важно убедиться, что vpn поднимается при ребуте сервера, что работает реконнект в случае чего. Собственно, это относится ко всем сервисам вообще.

В качестве вывода: никаких проблем, используйте.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы