Itnull
Admin
- Регистрация
- 22.05.13
- Стаж
- 13 г. 5 мес.
- Сообщения
- 29.301
- Реакции
- 13.536
- ID пользователя
- 1
- Автор темы
- Администратор
- Модер.
- #1
[Guide] Настройка OpenVPN через Cloak и связка с VLESS на FreeBSD 14.5
Всем привет! В этой статье мы разберем развертывание классического OpenVPN на современной системе FreeBSD 14.5, а также рассмотрим методы его маскировки и обхода систем глубокого анализа трафика (DPI) с помощью модуля Cloak и современной инфраструктуры VLESS (Xray).
FreeBSD традиционно славится своим стабильным сетевым стеком и гибким пакетным фильтром (pf), что делает ее отличным выбором для создания отказоустойчивых VPN-шлюзов.
---
1. Подготовка системы FreeBSD 14.5
Для начала работы обновите репозитории пакетов и установите необходимые базовые утилиты:
Bash:
pkg update
pkg upgrade -y
pkg install openvpn easy-rsa bash curl
Внесите параметры автозапуска в файл
/etc/rc.conf с помощью утилиты sysrc:
Bash:
sysrc openvpn_enable="YES"
sysrc openvpn_if="tun"
---
2. Установка и базовая настройка OpenVPN
Создайте рабочую директорию для управления сертификатами на базе
easy-rsa:
Bash:
mkdir -p /usr/local/etc/openvpn/easy-rsa
cp -R /usr/local/share/easy-rsa/ /usr/local/etc/openvpn/easy-rsa/
cd /usr/local/etc/openvpn/easy-rsa/
Инициализируйте PKI (Public Key Infrastructure) и сгенерируйте ключи сервера и клиентов:
Bash:
./easyrsa init-pki
./easyrsa build-ca nopass
./easyrsa gen-dh
./easyrsa build-server-full server nopass
./easyrsa build-client-full client1 nopass
Скопируйте полученные файлы конфигурации и сертификаты в корневой каталог OpenVPN:
Bash:
cp pki/ca.crt pki/issued/server.crt pki/private/server.key pki/dh.pem /usr/local/etc/openvpn/
Создайте конфигурационный файл сервера
/usr/local/etc/openvpn/server.conf:
Код:
port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh.pem
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 8.8.8.8"
keepalive 10 120
cipher AES-256-GCM
auth SHA256
user nobody
group nobody
persist-key
persist-tun
status openvpn-status.log
verb 3
Запустите службу OpenVPN:
Bash:
service openvpn server start
---
3. Маскировка OpenVPN с помощью Cloak
Cloak — это мощный плагин маскировки транспорта (Pluggable Transport), который заворачивает TCP-поток (включая трафик OpenVPN TCP) в легитимные HTTPS-запросы, защищая соединение от активного зондирования DPI.
- Скачайте актуальный бинарник
ck-serverдля FreeBSD (архитектура amd64) с официального репозитория GitHub и сделайте его исполняемым:
Bash:fetch https://github.com/c-fs/cloak/releases/download/v2.5.1/ck-server-freebsd-amd64 -o /usr/local/bin/ck-server chmod +x /usr/local/bin/ck-server - Создайте конфигурационный файл Cloak
/usr/local/etc/cloak/ck-server.json:
(Приватный ключ и UID можно сгенерировать с помощью утилитыJSON:{ "LogFile": "stdout", "LogLevel": "info", "BindAddr": ["0.0.0.0:443"], "RedirAddr": "127.0.0.1:1194", "PrivateKey": "ВАШ_СЕКРЕТНЫЙ_ПРИВАТНЫЙ_КЛЮЧ_CLOAK", "AdminUID": "ВАШ_ADMIN_UID_UUID", "DatabasePath": "/usr/local/etc/cloak/userdb.json", "StreamTimeout": 300 }ck-server -key). - Настройте перенаправление трафика: клиент подключается к Cloak на порт
443, Cloak расшифровывает легитимный трафик/маскировку, а «чистый» OpenVPN-поток отправляет локально на порт1194.
---
4. Интеграция OpenVPN с VLESS (Xray)
В современных сетевых реализациях протокол VLESS (работающий внутри ядра Xray-core) является одним из самых производительных стандартов. Напрямую OpenVPN «внутри» VLESS протокола не работает как встроенный модуль, однако их можно связывать архитектурно:
- Параллельное использование: На FreeBSD 14.5 поднимается Xray для работы с VLESS (обычно с маскировкой XTLS-Reality на порт
443), в то время как OpenVPN переносится на другой нестандартный порт или работает локально черезtun2socks. - Пример конфигурации Xray (
/usr/local/etc/xray/config.json):
JSON:
{
"inbounds": [
{
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "dl.google.com:443",
"serverNames": ["dl.google.com"],
"privateKey": "ПРИВАТНЫЙ_КЛЮЧ_REALITY"
}
}
}
],
"
