В первой части мы разобрали теорию работы SNI-прокси и Smart DNS, а также настроили всю систему вручную — от веб-сервера Nginx/Angie и DNS-сервера AdGuard Home/Blocky до защиты Firewall. В конце я упомянул утилиту Flowgate, которая автоматизирует весь этот процесс.
Судя по комментариям, у многих возникли вопросы по её использованию. Поэтому я подготовил пошаговую инструкцию, которая поможет развернуть полностью рабочий шлюз на чистом VPS с нуля, используя Flowgate. В результате вы получите работающий доступ к ChatGPT, Claude и другим сервисам без необходимости вручную править конфигурационные файлы.
Что понадобится
VPS с зарубежным IP-адресом (любая локация, где доступны нужные вам сервисы).
Операционная система: Debian 12/13 или Ubuntu 22.04/24.04 (рекомендую Debian, если хотите минимальное количество предустановленных пакетов).
Доменное имя (потребуется для настройки шифрованного DNS DoH/DoT).
Терминал и 10 минут времени.
Требования к ресурсам: Решение очень легкое. Минимального тарифа (1 vCPU, 512 MB RAM) будет достаточно.
Шаг 1: Подготовка сервера
Подключаемся к серверу по SSH, обновляем список пакетов, устанавливаем базовые зависимости:
ssh root@IP_ВАШЕГО_VPS
apt update && apt install -y curl wget gnupg ca-certificates python3 python3-yaml
Какие-то пакеты из этого списка могут быть уже установлены ранее в зависимости от образа VPS, это нормально. В этот список входят и те пакеты, которые понадобятся для установки большинства компонентов вручную.
Шаг 2: Установка Angie
Angie — это веб-сервер (форк Nginx), который нам нужен для работы SNI-прокси. Его главное преимущество в данном случае — встроенная поддержка ACME, которая позволяет автоматически получать и обновлять SSL-сертификаты.
Добавляем репозиторий и устанавливаем:
curl -o /etc/apt/trusted.gpg.d/angie-signing.gpg \
https://angie.software/keys/angie-signing.gpg
echo "deb https://download.angie.software/angie/$(. /etc/os-release && echo "$ID/$VERSION_ID $VERSION_CODENAME") main" \
| tee /etc/apt/sources.list.d/angie.list
apt update && apt install -y angie
Шаг 3: Проверка порта 53
DNS-сервер должен работать на 53 порту, даже если мы не будем светить его наружу. В Ubuntu и Debian этот порт часто занят системной службой systemd-resolved.
Проверим, занят ли порт:
ss -tlnup | grep :53
Если вывод команды пустой — порт свободен, можно переходить к следующему шагу.

Если вы видите процессы systemd-resolve, службу нужно отключить, чтобы освободить порт для Blocky:
systemctl stop systemd-resolved
systemctl disable systemd-resolved
# Настраиваем DNS для самого сервера (чтобы он мог разрешать доменные имена)
rm -f /etc/resolv.conf
echo "nameserver 8.8.8.8" > /etc/resolv.conf
Примечание: В некоторых минимальных образах на VPS эта служба может быть отключена по умолчанию.
Шаг 4: Установка Flowgate и Blocky
Blocky — быстрый DNS-сервер с поддержкой блокировки рекламы и гибкой настройки.
Flowgate — утилита управления, которая связывает Blocky и Angie.
Рекомендуемый способ: Установка из APT-репозитория
Для удобства обновления и управления пакетами рекомендую использовать APT-репозиторий:
# Добавляем GPG-ключ репозитория
curl -fsSL https://crim50n.github.io/flowgate-repo/key.gpg | sudo tee /usr/share/keyrings/flowgate.asc > /dev/null
# Добавляем репозиторий
echo "deb [signed-by=/usr/share/keyrings/flowgate.asc] https://crim50n.github.io/flowgate-repo stable main" | sudo tee /etc/apt/sources.list.d/flowgate.list
# Обновляем список пакетов и устанавливаем
apt update
apt install -y flowgate blocky
# Включаем службу синхронизации конфигурации
systemctl enable --now flowgate-sync.path
Преимущества этого способа:
Автоматические обновления через
apt upgradeПростота установки и удаления
Доступ к исходным кодам через
apt source flowgate
Альтернатива: Установка из .deb файлов
Если по каким-то причинам вы не хотите добавлять репозиторий, можно установить пакеты напрямую:
cd /tmp
wget -q https://github.com/crim50n/flowgate/releases/download/v1.1.3/flowgate_1.1.3-1_all.deb
wget -q https://github.com/crim50n/blocky-deb/releases/download/v0.28.2-4/blocky_0.28.2-4_amd64.deb
# Устанавливаем пакеты (префикс ./ обязателен)
apt install -y ./blocky_0.28.2-4_amd64.deb ./flowgate_1.1.3-1_all.deb
# Включаем службу синхронизации
systemctl enable --now flowgate-sync.path
Альтернатива: Ручная установка
Если вы используете дистрибутив, не основанный на Debian (например, CentOS, AlmaLinux или любой другой) или просто хотите усложнить себе жизнь, установку можно выполнить вручную.
Установка Blocky:
cd /tmp
wget -q https://github.com/0xERR0R/blocky/releases/download/v0.24/blocky_v0.24_Linux_x86_64.tar.gz
tar -xzf blocky_v0.24_Linux_x86_64.tar.gz
mv blocky /usr/local/bin/
chmod +x /usr/local/bin/blocky
# Проверка версии
blocky version
Создаем пользователя и systemd-сервис:
useradd -r -s /usr/sbin/nologin blocky
mkdir -p /etc/blocky
chown blocky:blocky /etc/blocky
cat > /etc/systemd/system/blocky.service << 'EOF'
[Unit]
Description=Blocky DNS Proxy
Documentation=https://0xerr0r.github.io/blocky/
After=network.target
[Service]
Type=simple
User=blocky
Group=blocky
ExecStart=/usr/local/bin/blocky --config /etc/blocky/config.yml
Restart=on-failure
RestartSec=5
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
[Install]
WantedBy=multi-user.target
EOF
systemctl daemon-reload
Установка Flowgate:
cd /tmp
git clone --depth 1 https://github.com/crim50n/flowgate.git
cd flowgate/flowgate
make install INIT_SYSTEM=systemd
Для систем без systemd: используйте
make install INIT_SYSTEM=noneи настройте автозапуск служб средствами вашей системы инициализации.
Шаг 5: Настройка конфигурации
Запустите команду инициализации. Flowgate определит внешний IP сервера, создаст конфигурацию для Blocky и настроит Angie для проксирования трафика.
flowgate init

Проверяем статус служб:
flowgate status

Шаг 6: Проверка работы
Убедимся, что DNS-сервер корректно обрабатывает запросы. Для проверки используем утилиту dig (из пакета dnsutils).
Проверяем домен, который должен проксироваться (например, chatgpt.com):
apt install -y dnsutils
dig @127.0.0.1 chatgpt.com +short

В ответе должен вернуться IP-адрес вашего VPS. Это означает, что Smart DNS работает и перенаправляет трафик на ваш прокси.
Проверяем обычный домен (например, ya.ru):
dig @127.0.0.1 ya.ru +short
Здесь должны вернуться реальные IP-адреса Яндекса.
Шаг 7: Настройка DNS-over-HTTPS (DoH)
Для безопасного использования DNS (чтобы провайдер не мог перехватывать или подменять DNS-запросы) настроим шифрование.
Вам понадобится доменное имя (например, dns.example.com), направленное на IP вашего VPS.
Варианты доменов:
Собственный домен (рекомендуется): Зарегистрируйте домен у регистратора (~$1/год) и добавьте A-запись, указывающую на IP вашего VPS.
Динамический DNS (бесплатно): Существуют бесплатные сервисы динамического DNS (например, DuckDNS, FreeDNS и другие). Зарегистрируйтесь на любом из них, создайте поддомен и настройте его на IP вашего VPS.
Важно: У некоторых бесплатных DNS-сервисов бывают проблемы со стабильностью NS-серверов, что может приводить к временным ошибкам при получении сертификатов Let's Encrypt. Обычно помогает повторная попытка через несколько минут. Для production-использования рекомендуется собственный домен.
flowgate dns dns.example.com
# или для динамического DNS:
flowgate dns dns.your-subdomain.yourdyndns.org
Эта команда автоматически:
Настроит параметры http-блока Angie (resolver, variables_hash_bucket_size)
Получит SSL-сертификат через ACME
Настроит Angie на приём DoH/DoT запросов

Проверка выпуска сертификата:
Если в выводе команды вы видите ошибки ACME или сертификат не был выпущен, проверьте:
# Убедитесь, что домен резолвится на ваш сервер
dig +short dns.example.com
# Проверьте, что порты 80 и 443 открыты
ss -tlnp | grep -E ':80|:443'
# Посмотрите логи Angie для диагностики
tail -20 /var/log/angie/error.log
# Проверьте наличие сертификата
ls -la /var/lib/angie/acme/
Если сертификат выпущен успешно, вы увидите директорию вида acme_dns_example_com/ с файлами certificate.pem и private.key.
Частые причины ошибок:
Домен не указывает на IP вашего сервера
Порт 80 заблокирован firewall (нужен для ACME HTTP-01 challenge)
Превышен лимит запросов Let's Encrypt (5 сертификатов на домен в неделю)
Нестабильные NS-серверы у бесплатных DNS-сервисов
Теперь ваш DNS-сервер доступен по адресам:
DoH:
https://dns.example.com/dns-queryDoT:
dns.example.com(порт 853)
Проверка работы DoT:
apt install -y knot-dnsutils
kdig @dns.example.com -p 853 +tls chatgpt.com
Вы должны увидеть IP вашего VPS в ответе, что подтверждает работу Smart DNS через зашифрованное соединение.
Шаг 8: Настройка безопасности и клиентов
Теперь осталось защитить сервер и настроить ваши устройства для использования нового DNS-сервера. Подробные инструкции по настройке Firewall и для каждой платформы (Android, iOS, Windows, браузеры, роутеры) есть в первой части статьи.
Основные команды Flowgate
Управление осуществляется через консольную утилиту (я специально не рассматриваю веб-интерфейс, так как для большинства пользователей он излишен, а настраивается достаточно просто):
# Добавить домен в список проксируемых
flowgate add notion.so
# Удалить домен из списка
flowgate remove notion.so
# Настроить обратный прокси для локального сервиса
# (например, для веб-интерфейса Flowgate, если вы решите его использовать)
flowgate service flowgate.example.com 5000
# Показать статус служб и список доменов
flowgate status
Возможные проблемы
Ошибка "address already in use" при запуске Blocky
Обычно означает, что порт 53 занят другой службой. Вернитесь к Шагу 3 и убедитесь, что systemd-resolved отключен.
Ошибки конфигурации Angie
Используйте команду angie -t для диагностики. Flowgate автоматически добавляет необходимые параметры (resolver, variables_hash_bucket_size) при синхронизации.
Заключение
Мы развернули собственный шлюз, который позволяет пользоваться AI-сервисами без VPN-клиентов на устройствах. Решение работает прозрачно для приложений, использует шифрованный DNS и потребляет минимум ресурсов.
Буду признателен за ваши отзывы и предложения в комментариях! Конечная цель проекта - сделать из утилиты одну большую кнопку с надписью "сделать хорошо", так что работы предостаточно.

saipr
На мой взгляд, это статья может служить (помимо своего целевого назначения) образцом для написания аналогичных статей по настройке того или иного функционала.
crims0n_ru Автор
Спасибо! Рад, что вам понравился формат статьи, но моей заслуги здесь минимум: я просто пошагово описал свои действия.