Белые списки на мобильном интернете: каскад из двух серверов
В 2026 году в ряде регионов мобильные операторы включают режим белых списков. Пока он действует, с телефона открываются только одобренные российские сервисы, а до любого зарубежного адреса, включая ваш собственный VPS, пакеты просто не доходят. Домашний интернет при этом работает как обычно.
Выход на OBLAKO разрешён
Выходной сервер с Reality или XHTTP на OBLAKO держать можно: правила допускают личный VPN для себя и домашнего круга. Каскад, которым пользуетесь вы и ваши близкие, под это подходит. Нельзя открывать его для всех желающих, продавать доступ и ставить в SNI популярный чужой сайт: такой сервер система OBLAKO выключит автоматически, используйте свой домен.
Ниже разберём, как устроено ограничение и как собрать для себя цепочку из двух серверов, которая продолжает работать в таком режиме. Это продвинутая настройка: понадобится второй сервер в России и уверенная работа в терминале.
Ничего не гарантировано
Состав белых списков меняется без предупреждения, и у разных операторов он разный. Схема ниже работает, пока российский адрес входа пропускается вашим оператором. Если адрес перестанут пропускать, вход придётся перенести на другой IP.
Как работают белые списки
Ограничение работает в два слоя.
- По IP-адресу. У оператора есть перечень разрешённых подсетей. Соединение с адресом не из перечня отбрасывается молча: нет ни ошибки, ни сброса, клиент просто ждёт до таймаута.
- По имени сайта. Если адрес разрешён, оборудование всё равно смотрит на SNI в начале TLS-соединения и рвёт соединения с явно запрещёнными именами.
Кроме того, в режиме белых списков у многих операторов почти полностью режется UDP. Поэтому WireGuard, AmneziaWG и протоколы на QUIC в этот момент не помогут, даже если адрес разрешён. Рабочий транспорт здесь TCP.
Отсюда понятно, почему VPS в Германии недоступен: его адреса нет и не будет в перечне разрешённых. Зато трафик между двумя серверами в дата-центрах под мобильные ограничения не попадает.
Как устроен каскад
- Вход находится в России на адресе, который ваш оператор пропускает в режиме белых списков. Телефон подключается только к нему.
- Выход это ваш VPS OBLAKO в Германии с уже настроенным Xray. Через него идёт весь трафик в интернет.
Обычно каскад включают только на время ограничений. Когда мобильная сеть работает нормально, телефон подключается к серверу в Германии напрямую.
Что понадобится
- VPS OBLAKO с Ubuntu или Debian и настроенным VLESS Reality. Если его ещё нет, начните со статьи Свой VLESS Reality сервер на VPS или сразу с варианта на своём домене: self-steal. Подойдёт младший тариф.
- VPS у российского провайдера с Linux и публичным IPv4. Он нужен только как точка входа, хватит минимальной конфигурации.
- Доступ по SSH к обоим серверам.
Шаг 1. Проверьте, пропускает ли оператор адрес входа
Прежде чем что-то настраивать, убедитесь, что ваш оператор вообще пропускает российский сервер. От этого зависит весь смысл схемы.
На российском сервере запустите простейшую веб-страницу на 80 порту:
mkdir -p /tmp/check && cd /tmp/check
echo "entry ok" > index.html
python3 -m http.server 80Дождитесь, когда у вас включатся ограничения, выключите на телефоне Wi-Fi и откройте в браузере http://IP_ВХОДА. Если появилась строка entry ok, адрес пропускается. Если страница грузится бесконечно, этот IP в перечень не входит, и нужен другой адрес или другой провайдер.
Остановите сервер сочетанием Ctrl+C. Проверять стоит на той SIM-карте и в том регионе, где вы будете пользоваться каскадом: у соседнего оператора результат может отличаться.
Шаг 2. Выберите способ пересылки
Есть два варианта, оба работают по TCP.
| Проброс порта | Xray на входе | |
|---|---|---|
| Что делает вход | Пересылает соединения на сервер в Германии без расшифровки | Принимает своё соединение и открывает новое к Германии |
| Настройка | Пара правил nftables | Отдельный конфиг Xray, свои ключи |
| Что видит оператор | TLS с SNI вашего сервера в Германии | TLS с SNI, который вы выбрали для входа |
| Российские сайты напрямую | Нет | Можно настроить |
Если вы только начинаете, возьмите проброс порта. Xray на входе пригодится, когда понадобится гибкость, например раздельная маршрутизация прямо на сервере.
Шаг 3, вариант А. Проброс порта через nftables
Все команды выполняются на российском сервере. Поставьте nftables, если его нет, и включите пересылку пакетов:
apt install -y nftables
echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/99-forward.conf
sysctl --systemСоздайте файл с правилами. Вместо IP_ГЕРМАНИИ подставьте адрес VPS OBLAKO:
nano /etc/nftables-cascade.nfttable ip cascade {
chain prerouting {
type nat hook prerouting priority -100;
tcp dport 443 dnat to IP_ГЕРМАНИИ:443
}
chain postrouting {
type nat hook postrouting priority 100;
ip daddr IP_ГЕРМАНИИ tcp dport 443 masquerade
}
}Примените правила и проверьте, что они загрузились:
nft -f /etc/nftables-cascade.nft
nft list table ip cascadeЧтобы правила пережили перезагрузку, подключите файл в основной конфиг:
echo 'include "/etc/nftables-cascade.nft"' >> /etc/nftables.conf
systemctl enable nftablesЕсли на сервере уже есть фаервол
UFW и правила, которые оставил провайдер, могут блокировать пересылку. Если соединение не проходит, проверьте nft list ruleset и разрешите пересылку на 443 порт в цепочке forward.
На клиенте менять почти ничего не нужно. Скопируйте свою ссылку vless:// и замените в ней адрес сервера на IP_ВХОДА. Параметры sni, pbk, sid и UUID оставьте прежними: соединение по-прежнему устанавливается с сервером в Германии, вход только передаёт пакеты.
Шаг 3, вариант Б. Xray на входе
В этом варианте у входа свои ключи, а к Германии он подключается как обычный клиент. Установите Xray на российском сервере официальным скриптом и сгенерируйте ключи входа:
bash -c "$(curl -L https://github.com/XTLS/Xray-install/raw/main/install-release.sh)" @ install
xray uuid
xray x25519
openssl rand -hex 8Команда xray x25519 выводит две нужные строки: PrivateKey это приватный ключ для конфига сервера, а Password (PublicKey) это публичный ключ для клиента (параметр pbk в ссылке).
Откройте /usr/local/etc/xray/config.json и замените содержимое. Блок inbounds описывает вход, блок outbounds подключение к серверу в Германии с его старыми ключами:
{
"log": { "loglevel": "warning" },
"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [{ "id": "UUID_ВХОДА", "flow": "xtls-rprx-vision" }],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"target": "САЙТ_ДЛЯ_ВХОДА:443",
"serverNames": ["САЙТ_ДЛЯ_ВХОДА"],
"privateKey": "PRIVATE_KEY_ВХОДА",
"shortIds": ["SHORT_ID_ВХОДА"]
}
}
}
],
"outbounds": [
{
"tag": "germany",
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "IP_ИЛИ_ДОМЕН_ГЕРМАНИИ",
"port": 443,
"users": [{ "id": "UUID_ГЕРМАНИИ", "flow": "xtls-rprx-vision", "encryption": "none" }]
}
]
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"serverName": "SNI_ГЕРМАНИИ",
"fingerprint": "chrome",
"publicKey": "PUBLIC_KEY_ГЕРМАНИИ",
"shortId": "SHORT_ID_ГЕРМАНИИ"
}
}
},
{ "tag": "direct", "protocol": "freedom" }
]
}Первый outbound в списке используется по умолчанию, поэтому весь трафик уйдёт в Германию. Значения *_ГЕРМАНИИ возьмите из своей рабочей ссылки: UUID, sni, pbk и sid.
Для САЙТ_ДЛЯ_ВХОДА нужен сайт, который открывается с этого российского сервера по HTTPS и не выглядит подозрительно для мобильного оператора. Как выбирать такой адрес, разобрано в статье Как выбрать SNI для Reality.
Проверьте конфиг и перезапустите Xray:
xray run -test -c /usr/local/etc/xray/config.json
systemctl restart xrayНа телефоне создайте новое подключение к IP_ВХОДА с UUID, публичным ключом и shortId входа.
Шаг 4. Проверьте каскад
- На телефоне с мобильным интернетом подключитесь через вход.
- Откройте любой сервис, который показывает ваш IP. Должен отображаться адрес сервера в Германии, а не российского входа.
- Если сайты не открываются, на российском сервере проверьте, что он сам достаёт до Германии:
curl -sI https://ДОМЕН_ГЕРМАНИИдля варианта с self-steal илиnc -zv IP_ГЕРМАНИИ 443.
Если ничего не работает, сначала исключите блокировку самого сервера в Германии по статье Как понять, что IP сервера заблокирован.
Ограничения
- Адрес входа может перестать работать. Перечни разрешённых подсетей пересматривают, и некогда рабочий IP однажды перестаёт проходить. Держите под рукой прямое подключение к Германии и проверяйте вход по шагу 1 после каждого сбоя.
- Скорость упирается в слабое звено. Канал российского входа и задержка между двумя дата-центрами складываются. Для переписки и сайтов этого хватает, для тяжёлого видео может быть мало.
- Два сервера, две оплаты. Следите за сроками обоих. Что происходит с VPS OBLAKO после окончания оплаты, описано в статье Что будет, если не продлить VPS вовремя.
- Только для себя. Правила OBLAKO разрешают личный VPN для себя и домашнего круга. Раздавать доступ к каскаду посторонним и продавать его нельзя, см. Личный VPN на VPS.