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

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

Что узнаешь

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 будут продолжать работать

8. Чек-лист для 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-бот для уведомлений об инцидентах