Подключение сервера через обратный прокси
Блокировка по IP-адресу бессильна, если приложение не подключается к серверу напрямую. С обратным прокси вроде Cloudflare клиенты обращаются к прокси, а тот безопасно перенаправляет трафик на ваш сервер.
Как это работает
Ваш домен указывает на прокси-сервер, а не на сам сервер. Приложение подключается к прокси, который расшифровывает трафик (как для обычного веб-сайта) и повторно шифрует его при передаче на ваш сервер. Соединение идет через WebSocket — Cloudflare полностью поддерживает этот протокол. Подойдет и любой другой обратный прокси с поддержкой WebSocket и TLS-подключения к вашему серверу.
Приложения подключаются к домену, только если он указан в ключе как доверенный — для этого необходим действительный SSL/TLS-сертификат от центра сертификации.
Ключ может также содержать прямой IP-адрес сервера. В этом случае приложение пробует оба варианта: прокси спасет при блокировке IP, однако прямой адрес можно извлечь из ключа. Если же создать ключ без IP-адреса сервера, весь трафик гарантированно пойдет через прокси.
Важные нюансы
- Блокировки: Провайдер все еще может заблокировать адреса reverse proxy или ваш домен. Однако адреса Cloudflare обслуживают множество сайтов, поэтому блокировать их сложнее и дороже.
- DNS: Перед подключением приложения запрашивают домен через DNS сети. Если провайдер блокирует или подменяет ответ, приложения переключаются на IP-адреса из ключа. Поэтому ключ, содержащий только домен, подключиться не сможет.
- Конфиденциальность: Reverse proxy видит трафик внутри туннеля так же, как и ваш сервер: куда подключаются пользователи и все незашифрованные данные. Их трафик по HTTPS остается защищенным. Используйте только надежный reverse proxy.
- Только TCP: Сервер не предоставляет порты UDP и QUIC для приложений, подключающихся через прокси.
- Условия использования: Убедитесь, что правила вашего провайдера разрешают VPN-трафик. Небольшая группа пользователей (примерно до 50 человек) обычно не вызывает вопросов.
Перед началом
- Домен или поддомен с сертификатом от доверенного центра сертификации (CA) на сервере: инструкция Использование доменного имени и доверенного сертификата поможет все настроить. Сделайте это заранее, пока DNS-запись домена указывает напрямую на сервер.
- Один сервер за доменом. Если DNS-записи ведут на два разных сервера, пакеты одной сессии могут распределяться между ними, что приведет к разрыву соединения.
- Сервер должен принимать входящие подключения на TCP-порту
443или другом порту, поддерживаемом прокси. Cloudflare пропускает HTTPS только через443, 2053, 2083, 2087, 2096, 8443.
Включение прокси
- В панели Cloudflare откройте DNS-записи домена и переключите статус записи вашего сервера в режим Proxied (а также для записи AAAA, если она есть).
- В разделе SSL/TLS выберите режим шифрования Full (strict). В этом случае Cloudflare будет подключаться к серверу по TLS и проверять его сертификат. В режиме Flexible используется обычный HTTP, который сервер не поддерживает.
VpnHood! MANAGER обновляет сертификаты по протоколу HTTP через TCP-порт 80 с использованием домена, а Cloudflare передает эти запросы на сервер. На управляемом сервере отключите параметр Always Use HTTPS, иначе запрос будет перенаправлен на HTTPS и обновление завершится ошибкой.
На управляемом сервере
Проверьте сертификат фермы для домена: в пункте Signature должно быть указано CA Signed, а в Visibility — PublicInToken. Тогда ключи будут содержать домен, и приложения смогут его распознавать.
Чтобы направлять все приложения через прокси, исключите прямые адреса сервера из ключей в разделе Access Points:
- Отключите параметр Automatic Configuration.
- Для каждого адреса измените Mode на Private.
- Оставьте параметр Listen со значением Yes, чтобы сервер продолжал принимать входящие соединения от прокси.
MANAGER разрешает создавать ключи без адреса только со статусом сертификата CA Signed. Подробнее о параметрах — в руководстве Настройка IP-адресов сервера.
Если оставить PublicInToken, адреса сохранятся в ключах, и приложения смогут использовать как их, так и прокси. При блокировке адреса прокси сохранит подключение для ваших пользователей.
Приложения со старыми ключами получат новые при следующем подключении, так как параметр Push token to clients включен по умолчанию.
Домен привязан к одному серверу, поэтому на ферме серверов все приложения, подключающиеся через прокси, попадают на один и тот же сервер.
На отдельном сервере
Убедитесь, что сервер использует сертификат домена со значением IsValidHostName: true. Инструкция: Использование домена и доверенного сертификата. Новые ключи будут содержать этот домен, и приложения будут обращаться к нему.
Отдельный сервер всегда добавляет свои адреса в ключи вместе с доменом, позволяя приложениям использовать как адреса, так и прокси. Прокси защитит связь от блокировок, однако адрес останется видимым в ключе.