Серверная инфраструктура и анти-детект

Reality на дешёвом VPS с грязным IP в стране, где блокируют все IP-диапазоны хостинга — это провал ещё до запуска. Хороший VPN начинается с правильного выбора железа, локации, ASN и тюнинга ядра. Разберём всё, что нужно для production-сетапа.

Что узнаешь
Вспомни из прошлых уроков

Здесь под протоколы подкладывается фундамент. BBR и тюнинг ядра — те же congestion control и MTU/буферы из урока 2 и разбора TCP; «чистота IP» и ASN важны потому, что цензор блокирует диапазонами (модель противника, урок 5); CDN-фронтинг и защита панели — прямое продолжение урока 10. Reality из урока 7 на «грязном» VPS не спасёт — инфраструктура первична.

Порядок сборки: от участка к протоколу
1. Участок VPS · ASN · чистый IP 2. Коммуникации BBR · sysctl 3. Забор firewall · fail2ban 4. Дом Reality/Hysteria 5. Жильцы панель Обратный порядок = «идеальный Reality, который не открывается»
Инфраструктура строится снизу вверх: сначала участок и коммуникации, протокол — в последнюю очередь.

1. Выбор VPS — главное

1.1. Страна и юрисдикция

Главный критерий: где НЕ применяют закон о логировании VPN-трафика.

СтранаПлюсыМинусыТир
Нидерланды Лучшие провайдеры, чистые IP, GDPR-защита Дороже среднего, иногда DMCA-блокировки на хостинге S
Германия Дешёвые тарифы (Hetzner), стабильный backbone Hetzner блокирует за «massive UDP» A
Финляндия Низкий ping для РФ, нейтральная юрисдикция Меньше провайдеров A
Швеция / Норвегия Дата-центры с холодным климатом, дешёвая электроэнергия Latency для Сибири +30 мс A
Сингапур Идеален для Азии +150 мс для РФ, дороже B (для РФ)
США Дёшево, много провайдеров +150 мс для РФ, NSA/Patriot Act C
Турция, Армения, Казахстан Близко к РФ, низкий ping Иногда сотрудничают с РФ, IP-диапазоны могут попадать в РФ-blacklist B

1.2. ASN и чистота IP

ASN (Autonomous System Number) — идентификатор сети провайдера. У некоторых хостинг-провайдеров блокируют целые ASN в РФ (если оттуда массово исходят VPN-IP).

Проверка ASN при покупке VPS:

Чистый IP — это

1.3. Хостинг-провайдеры (2024-2026)

ПровайдерЦена / месПлюсыОсобенности
Hetzner (DE/FI)€4-8Дёшево, мощноНе любит «массовый UDP» — Hysteria может закрыть
Contabo (DE/US)€5-10Очень дёшево, много трафикаSlow neighbors, не для GP-задач
Vultr (global)$5-2030+ локаций, hourly billingЧистые IP, но не самые быстрые
DigitalOcean$5-20Хорошие IP, стабильноИногда РФ-IP блокируют их диапазоны
BuyVM (Frantech)$2-7Дёшево, лояльны к VPNМалоизвестны, но фанаты privacy
1984.is (Исландия)€8-15Privacy-friendly, не запрашивают KYCДорого, ограниченный bandwidth
Aeza, AS-Local-IT, Aaaarrgh500-1500 ₽Российские провайдеры с VPS в ЕСУдобная оплата картой РФ, но риски юрисдикции

2. BBR — congestion control на ядре

Linux дефолтный CC — CUBIC. Это «осторожный» алгоритм: при потере пакета снижает скорость в 2 раза. На каналах с натуральными потерями (5-10%) это режет пропускную способность.

BBR (Bottleneck Bandwidth and RTT, Google, 2016) — измеряет фактическую пропускную способность и RTT, не реагирует на потери, а только на сигналы «канал перегружен» (рост RTT). На реальных каналах даёт 2-10x прирост.

Включение:

echo 'net.core.default_qdisc = fq' >> /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control = bbr' >> /etc/sysctl.conf
sysctl -p

# проверка:
sysctl net.ipv4.tcp_congestion_control       # → bbr
sysctl net.ipv4.tcp_available_congestion_control
  

BBR v2 / v3 — лучше, но не всегда доступно

BBR v1 имеет проблему — слишком агрессивен к чужим TCP (отжимает полосу). BBR v2/v3 более «справедливые». Доступны в свежих ядрах (Linux 6.4+) или через CloudLinux BBR-Plus, XanMod, Liquorix.

3. sysctl-тюнинг

Базовый набор оптимизаций для VPN-сервера:

# /etc/sysctl.d/99-vpn-tune.conf

# === Network buffers ===
net.core.rmem_max = 67108864
net.core.wmem_max = 67108864
net.core.rmem_default = 1048576
net.core.wmem_default = 1048576
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864

# === BBR + fq ===
net.core.default_qdisc = fq
net.ipv4.tcp_congestion_control = bbr

# === TCP Fast Open ===
net.ipv4.tcp_fastopen = 3

# === Notsent buffer (для BBR) ===
net.ipv4.tcp_notsent_lowat = 16384

# === Connection tracking (для NAT/forwarding) ===
net.netfilter.nf_conntrack_max = 1048576
net.netfilter.nf_conntrack_tcp_timeout_established = 1200
net.netfilter.nf_conntrack_udp_timeout = 60
net.netfilter.nf_conntrack_udp_timeout_stream = 180

# === SYN flood protection ===
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2

# === Reuse / recycle ===
net.ipv4.tcp_tw_reuse = 1

# === IP forwarding для VPN ===
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1

# === Disable ICMP responses (опционально, для скрытности) ===
# net.ipv4.icmp_echo_ignore_all = 1
  

Применить: sysctl -p /etc/sysctl.d/99-vpn-tune.conf

4. fail2ban

Сканеры будут стучать в SSH и админ-порт 3x-ui каждую секунду. fail2ban банит после N неудач.

apt install fail2ban

# /etc/fail2ban/jail.d/sshd-aggressive.conf
[sshd]
enabled  = true
port     = 22,2222
filter   = sshd
backend  = systemd
maxretry = 3
findtime = 300
bantime  = 86400
banaction = ufw

systemctl restart fail2ban
fail2ban-client status sshd
  

То же самое — для 3x-ui (создай filter на патерн «failed login»).

5. Multi-port — несколько inbound на одном сервере

Хорошая стратегия — поднять 3-5 разных протоколов на разных портах:

ПортПротоколТранспортКогда работает
443VLESSReality + VisionОсновной канал — стабильно работает в РФ
2096VLESSWS + TLSЧерез Cloudflare, бэкап
8443Hysteria 2QUIC + UDPКогда плохой канал, мобильный
51820AmneziaWGUDP + obfsДля домашних роутеров
22222TrojanTLSЗапасной, если Reality режут

Если один протокол блокируется — клиент переключается на другой. Sub-link отдаёт все.

6. CDN-фронтинг через Cloudflare

Для VLESS+WS — Cloudflare предоставляет бесплатный proxy с защитой от прямого обращения к твоему серверу. DPI видит TLS-handshake с CF (IP 104.x, 172.67.x), не с твоим VPS.

  1. Регистрируешь свободный домен (можно .tk/.ml бесплатно, или $10/год)
  2. Перевешиваешь NS-серверы на Cloudflare
  3. В DNS Cloudflare создаёшь A-запись: vpn.example.com → твой_VPS_IP с включённой Proxy (оранжевая туча)
  4. В CF включаешь WebSockets (Network → WebSockets: ON)
  5. В Xray inbound — WS + TLS, домен vpn.example.com, path /secret-uuid-path (длинный, рандомный)
  6. Перед Xray — nginx с Let's Encrypt сертификатом для vpn.example.com
Плюс

Даже если твой VPS-IP заблокируют — клиенты, идущие через Cloudflare, продолжают работать, потому что они подключаются к IP CF, а не к твоему. CF проксирует трафик внутрь.

Бонус: CF защищает от DDoS, хайдит реальный IP сервера, добавляет HTTP/3 поддержку «бесплатно».

7. Что делать, если IP попал в blacklist

  1. Не паникуй — проверь, действительно ли блок (попробуй с другого канала)
  2. Узнай причину: блок на TCP-handshake или на ML-классификатор? (тест через nc)
  3. Меняй IP:
    • На Vultr/DigitalOcean — можно destroy/recreate (получишь новый IP)
    • На Hetzner — заказать additional IP (€4 единоразово)
    • На большинстве хостингов — просто арендуй новый VPS
  4. Меняй порт: с 443 на 8443/22443/любой случайный — может сработать без смены IP
  5. Меняй dest в Reality: если microsoft.com стал детектиться (что маловероятно), перейди на apple.com или другой
  6. Перейди на CDN-фронтинг: если ничего не помогает — клиенты через CF будут продолжать работать
Аналогия

VPS-сервер — это участок под дом, а не сам дом

Протокол (Reality, Hysteria) — дом, который ты строишь. Но дом на плохом участке бесполезен. Локация и ASN — район: если весь район хостинга-«гетто» снесён по суду (диапазон IP заблокирован целиком), твой идеальный дом недостижим, хотя с ним всё в порядке. Чистота IP — история участка: на «грязном» IP до тебя кто-то спамил или держал палёный сервис, и он уже в чёрных списках. BBR и sysctl — инженерные коммуникации: без них даже хороший дом «тормозит воду». fail2ban и firewall — забор и охрана. Мораль урока: сначала выбираешь участок (VPS/ASN/локацию) и подводишь коммуникации (ядро), и лишь потом ставишь дом-протокол — обратный порядок даёт «идеальный Reality, который не открывается».

8. Мини-лаба: попробуй прямо сейчас

Оценить «участок» и коммуникации можно с любой Linux-машины (или своего VPS):

# 1. Чей это IP и ASN — тот самый «район», который блокируют диапазонами
curl -s https://ipinfo.io/$(curl -s ifconfig.me)/json | grep -E 'org|country|city'

# 2. Включён ли BBR (congestion control из урока 2)
sysctl net.ipv4.tcp_congestion_control
sysctl net.ipv4.tcp_available_congestion_control   # есть ли bbr в списке

# 3. Как включить BBR (на своём VPS с root):
# echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf
# echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf && sudo sysctl -p

# 4. «Чистота» IP: не в спам-листах ли он (замени на свой серверный IP)
# открой https://check.spamhaus.org или:
dig +short 2.0.0.127.zen.spamhaus.org   # пример обратного запроса к DNSBL

# 5. Открытые порты снаружи — поверхность атаки (скан своего сервера)
sudo nmap -sT -p- --min-rate 1000 <свой IP> | grep open
Ожидаемый результат

Пункт 1 покажет провайдера и страну — если это крупный «хостинг-ASN» в стране жёсткой цензуры, риск блокировки диапазоном высок (лучше резидентные/менее засвеченные сети). Пункт 2 выдаст текущий congestion control: если cubic, а bbr есть в доступных — включив BBR (пункт 3), получишь заметный прирост на дальних/потерянных каналах. Пункт 5 должен показать только те порты, что ты сознательно открыл: всё лишнее — это дыры, которые закрывают firewall и раздел про fail2ban.

9. Задачи самопроверки — реши, потом раскрой ответ

Задача 1. Идеально настроенный Reality на свежекупленном дешёвом VPS блокируется через час после запуска, хотя протокол безупречен. Назови две вероятные причины из этого урока.

(1) «Грязный» или уже засвеченный IP: на нём до тебя держали палёный сервис, и он в списках/под наблюдением цензора. (2) Блокировка по ASN/диапазону: провайдер известен как «хостинг для обхода», и цензор рубит весь его диапазон оптом, независимо от протокола. Лечение: сменить IP/провайдера на менее засвеченный, проверять чистоту IP до деплоя, выбирать локацию и ASN осознанно. Протокол тут ни при чём — виноват «участок».

Задача 2. На дальнем канале (клиент РФ — сервер США, RTT 150 мс) скорость упирается в потолок гораздо ниже полосы. Что включить на ядре и почему это помогает?

Включить BBR (net.ipv4.tcp_congestion_control=bbr + fq qdisc). CUBIC на высоком RTT с редкими потерями трактует потери как перегрузку и держит окно маленьким — на «длинной толстой трубе» это недобор. BBR оценивает реальную пропускную способность и RTT напрямую и держит окно ближе к оптимуму, давая заметный прирост на дальних каналах. Плюс тюнинг буферов (rmem/wmem) в sysctl, чтобы окно вообще могло вырасти.

Задача 3. Зачем держать один сервер на нескольких портах с разными протоколами (multi-port), если Reality и так хорош?

Диверсификация под непредсказуемый DPI: если цензор точечно придушит один порт/протокол, у пользователя остаётся запасной inbound (например, Reality на 443 + Hysteria на UDP-диапазоне + ShadowTLS). Разные транспорты по-разному переживают разные приёмы блокировки и разные сети (офис режет UDP — работает TCP, и наоборот). Один сервер обслуживает несколько «дверей», клиент переключается между ними без миграции на новый VPS.

Задача 4. В логах SSH — тысячи попыток входа в минуту с разных IP. Что настроить и чем это отличается от смены порта SSH?

fail2ban: он читает логи и банит IP после N неудачных попыток на время — режет brute-force и массовые сканеры. Смена порта SSH снижает шум от «тупых» ботов, но не защищает от целевого перебора (порт всё равно найдут сканом). Комбинация: key-only аутентификация (пароли вообще выключить), отключить root login, нестандартный порт как гигиена + fail2ban на SSH и админ-порт панели. Ключи закрывают перебор в принципе, fail2ban гасит шум и сканеров.

Задача 5. IP сервера всё-таки попал в blacklist и заблокирован. Каков план восстановления и как снизить шанс повторения?

План: сменить IP (у многих провайдеров — за отдельную плату/пересоздание), при необходимости — сервер в другом ASN/локации; конфиги пользователям обновятся через sub-link (урок 10) без ручной рассылки. Профилактика: не светить IP origin (прятать за Cloudflare/CDN-фронтинг, mTLS origin), не раздавать sub-link публично, держать запасной сервер/локацию, разнести пользователей по нодам, мониторить доступность (UptimeRobot) и списки. Идея та же, что в networking-deep: origin недостижим напрямую — его труднее выбить.

10. Словарик урока

VPSвиртуальный сервер — «участок» под протокол; локация и провайдер критичны
ASN · автономная системаномер сети провайдера; цензор часто блокирует диапазонами по ASN
чистота IP · IP reputationне засвечен ли адрес в спам/блок-листах и у цензора
BBRcongestion control, оценивающий полосу и RTT; выигрыш на дальних каналах
fq qdiscдисциплина очереди, нужная BBR для честного распределения
sysctl-тюнингпараметры ядра: буферы (rmem/wmem), conntrack, TCP fast open
fail2banбаня IP после серии неудачных попыток входа (SSH, панель)
multi-portнесколько inbound/протоколов на одном сервере для отказоустойчивости
CDN-фронтингприём трафика через Cloudflare, скрывающий и защищающий origin
ротация IPсмена адреса/локации сервера после попадания в blacklist
Протокол вторичен — первична инфраструктура. Правильный VPS (локация, ASN, чистый IP) решает исход ещё до запуска: идеальный Reality на «грязном» адресе или в блокируемом диапазоне не откроется. BBR и sysctl-тюнинг дают скорость на дальних/потерянных каналах, fail2ban и firewall — сокращают поверхность атаки, multi-port — отказоустойчивость под непредсказуемый DPI, CDN-фронтинг прячет origin. Строй в порядке: участок → коммуникации → дом-протокол.

11. Чек-лист для production

Перед запуском
  1. Свежая Ubuntu 22.04/24.04 или Debian 12
  2. SSH на нестандартном порту, key-only auth, отключён root login
  3. ufw настроен: разрешены только нужные порты
  4. fail2ban настроен
  5. BBR включён
  6. sysctl-тюнинг применён
  7. Logrotate для логов Xray (иначе диск кончится)
  8. Cron на backup БД 3x-ui ежедневно
  9. Monitor uptime через UptimeRobot (бесплатно)
  10. Telegram-бот для уведомлений об инцидентах