Guide 02 — Network
NaïveProxy Guide
NaïveProxy прячет трафик внутри обычного HTTPS к вашему домену. Собираем Caddy с forwardproxy, поднимаем systemd-сервис и подключаем клиент.
Нужен домен, направленный на IP сервера, и открытые порты 80 и 443 — их открывает гайд по настройке VPS. Дальше всё выполняется от root.
Установка Go
Скрипт берёт последнюю версию Go, распаковывает её в
/usr/local и прописывает путь в ~/.bashrc.
Сборка Caddy идёт через go install, поэтому Go нужен до неё.
LATEST_GO=$(curl -sSL "https://go.dev/dl/?mode=json" | grep -o '"version": "go[^"]*"' | head -n 1 | cut -d '"' -f 4) && \
echo "Качаем $LATEST_GO..." && \
curl -sSLO "https://go.dev/dl/${LATEST_GO}.linux-amd64.tar.gz" && \
rm -rf /usr/local/go && \
tar -C /usr/local -xzf "${LATEST_GO}.linux-amd64.tar.gz" && \
rm -f "${LATEST_GO}.linux-amd64.tar.gz" && \
export PATH=$PATH:/usr/local/go/bin && \
grep -qxF 'export PATH=$PATH:/usr/local/go/bin' ~/.bashrc || echo 'export PATH=$PATH:/usr/local/go/bin' >> ~/.bashrc && \
go version
Сборка сервера и конфигурация
Ставим xcaddy и собираем Caddy с
naive-форком forwardproxy:
go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
~/go/bin/xcaddy build --with github.com/caddyserver/forwardproxy=github.com/klzgrad/forwardproxy@naive
Создаём каталог для конфига и открываем его в редакторе:
mkdir -p /etc/caddy
nano -I /etc/caddy/Caddyfile
Конфиг для своего сайта
Caddy терминирует TLS, проксирует через forward_proxy и
раздаёт статику из /var/www/example.com/html.
{
http_port 80
https_port 443
order forward_proxy before file_server
}
:443, example.com {
tls my@email.com
forward_proxy {
basic_auth ВАШ_ЛОГИН ВАШ_ПАРОЛЬ
hide_ip
hide_via
probe_resistance
}
file_server {
root /var/www/example.com/html
}
}
Замените example.com, my@email.com и логин с
паролем на свои. Сохранить: Ctrl + O → Enter →
Ctrl + X.
Конфиг для стороннего сайта
Если своего контента нет, reverse_proxy отдаёт запросы на
чужой сайт — здесь yastatic.net. Заголовки Host
подменяются, чтобы upstream принял запрос.
{
http_port 80
https_port 443
order forward_proxy before reverse_proxy
}
:443, example.com {
tls my@email.com
forward_proxy {
basic_auth ВАШ_ЛОГИН ВАШ_ПАРОЛЬ
hide_ip
hide_via
probe_resistance
}
reverse_proxy https://yastatic.net {
header_up Host {upstream_hostport}
header_up X-Forwarded-Host {host}
}
}
Перемещаем собранный бинарник в системный каталог и делаем исполняемым:
chmod +x caddy
mv caddy /usr/bin/
Создание systemd-сервиса
nano /etc/systemd/system/caddy.service
Содержимое unit-файла:
[Unit]
Description=Caddy
Documentation=https://caddyserver.com/docs/
After=network.target network-online.target
Requires=network-online.target
[Service]
User=root
Group=root
ExecStart=/usr/bin/caddy run --environ --config /etc/caddy/Caddyfile
ExecReload=/usr/bin/caddy reload --config /etc/caddy/Caddyfile
TimeoutStopSec=5s
LimitNOFILE=1048576
LimitNPROC=512
PrivateTmp=true
ProtectSystem=full
AmbientCapabilities=CAP_NET_BIND_SERVICE
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
Сохраняем файл и включаем автозапуск:
systemctl daemon-reload
systemctl enable --now caddy
Запуск и проверка
Сервис уже запущен через enable --now. Смотрим статус:
systemctl status caddy
Смотрите логи: journalctl -u caddy -f. Чаще всего дело в
занятом порту, неверном домене или опечатке в Caddyfile.
Настройка клиента
Клиенты по платформам
Поставьте клиент с поддержкой NaïveProxy под свою ОС:
- Windows: Nekoray + ядро Naive
- Android: NekoBox + плагин Naive
- iOS: Karing
- macOS: Nekoray + ядро Naive
- Linux: Nekoray + ядро Naive
Параметры подключения
Добавьте подключение с типом Naive и укажите данные из конфига:
- Домен
example.com- Порт
443- Логин
ВАШ_ЛОГИН- Пароль
ВАШ_ПАРОЛЬ
Ссылка для импорта
Проще всего добавить подключение ссылкой — клиент разберёт её сам:
naive+https://ВАШ_ЛОГИН:ВАШ_ПАРОЛЬ@example.com:443#Naive