Серверная инфраструктура и анти-детект
Reality на дешёвом VPS с грязным IP в стране, где блокируют все IP-диапазоны хостинга — это провал ещё до запуска. Хороший VPN начинается с правильного выбора железа, локации, ASN и тюнинга ядра. Разберём всё, что нужно для production-сетапа.
- Как выбрать VPS: страна, провайдер, ASN, чистота IP
- BBR / TCP Brutal на ядре Linux — настройка
- sysctl-тюнинг: буферы, conntrack, fast-open
- fail2ban: защита от scanner'ов и brute force на SSH/админ-панель
- Multi-port: один сервер на 5 разных портов с разными протоколами
- CDN-фронтинг через Cloudflare для WS/gRPC inbound
- Ротация IP: что делать, если IP попал в blacklist
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:
- bgp.he.net — введи будущий IP, увидишь ASN и кто владелец
- abuseipdb.com — проверь репутацию IP (не в blacklist ли)
- check-host.net — пинг и доступность из России
- Не в Spamhaus / SORBS
- Не в Censys recently flagged
- Пингуется из России (если цель — пользователи в РФ)
- ASN не помечен в РФ blacklist'ах
- Не был «арендован» предыдущим клиентом-спамером (узнаёшь через AbuseIPDB)
1.3. Хостинг-провайдеры (2024-2026)
| Провайдер | Цена / мес | Плюсы | Особенности |
|---|---|---|---|
| Hetzner (DE/FI) | €4-8 | Дёшево, мощно | Не любит «массовый UDP» — Hysteria может закрыть |
| Contabo (DE/US) | €5-10 | Очень дёшево, много трафика | Slow neighbors, не для GP-задач |
| Vultr (global) | $5-20 | 30+ локаций, hourly billing | Чистые IP, но не самые быстрые |
| DigitalOcean | $5-20 | Хорошие IP, стабильно | Иногда РФ-IP блокируют их диапазоны |
| BuyVM (Frantech) | $2-7 | Дёшево, лояльны к VPN | Малоизвестны, но фанаты privacy |
| 1984.is (Исландия) | €8-15 | Privacy-friendly, не запрашивают KYC | Дорого, ограниченный bandwidth |
| Aeza, AS-Local-IT, Aaaarrgh | 500-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 разных протоколов на разных портах:
| Порт | Протокол | Транспорт | Когда работает |
|---|---|---|---|
| 443 | VLESS | Reality + Vision | Основной канал — стабильно работает в РФ |
| 2096 | VLESS | WS + TLS | Через Cloudflare, бэкап |
| 8443 | Hysteria 2 | QUIC + UDP | Когда плохой канал, мобильный |
| 51820 | AmneziaWG | UDP + obfs | Для домашних роутеров |
| 22222 | Trojan | TLS | Запасной, если Reality режут |
Если один протокол блокируется — клиент переключается на другой. Sub-link отдаёт все.
6. CDN-фронтинг через Cloudflare
Для VLESS+WS — Cloudflare предоставляет бесплатный proxy с защитой от прямого обращения к твоему серверу. DPI видит TLS-handshake с CF (IP 104.x, 172.67.x), не с твоим VPS.
- Регистрируешь свободный домен (можно
.tk/.mlбесплатно, или $10/год) - Перевешиваешь NS-серверы на Cloudflare
- В DNS Cloudflare создаёшь A-запись:
vpn.example.com → твой_VPS_IPс включённой Proxy (оранжевая туча) - В CF включаешь WebSockets (Network → WebSockets: ON)
- В Xray inbound — WS + TLS, домен
vpn.example.com, path/secret-uuid-path(длинный, рандомный) - Перед Xray — nginx с Let's Encrypt сертификатом для
vpn.example.com
Даже если твой VPS-IP заблокируют — клиенты, идущие через Cloudflare, продолжают работать, потому что они подключаются к IP CF, а не к твоему. CF проксирует трафик внутрь.
Бонус: CF защищает от DDoS, хайдит реальный IP сервера, добавляет HTTP/3 поддержку «бесплатно».
7. Что делать, если IP попал в blacklist
- Не паникуй — проверь, действительно ли блок (попробуй с другого канала)
- Узнай причину: блок на TCP-handshake или на ML-классификатор? (тест через nc)
- Меняй IP:
- На Vultr/DigitalOcean — можно destroy/recreate (получишь новый IP)
- На Hetzner — заказать additional IP (€4 единоразово)
- На большинстве хостингов — просто арендуй новый VPS
- Меняй порт: с 443 на 8443/22443/любой случайный — может сработать без смены IP
- Меняй dest в Reality: если microsoft.com стал детектиться (что маловероятно), перейди на apple.com или другой
- Перейди на CDN-фронтинг: если ничего не помогает — клиенты через CF будут продолжать работать
8. Чек-лист для production
- Свежая Ubuntu 22.04/24.04 или Debian 12
- SSH на нестандартном порту, key-only auth, отключён root login
- ufw настроен: разрешены только нужные порты
- fail2ban настроен
- BBR включён
- sysctl-тюнинг применён
- Logrotate для логов Xray (иначе диск кончится)
- Cron на backup БД 3x-ui ежедневно
- Monitor uptime через UptimeRobot (бесплатно)
- Telegram-бот для уведомлений об инцидентах