Запуск собственного XRay сервера.
Арендуем VPS с оплатой криптовалютой и без привязки к личным данным. Подключаемся по SSH через Tor к VPS
torsocks ssh root@IP_addr
Настраиваем SSH сервер на VPS: добавляем пользователя, запрещаем подключение от root, включаем авторизацию по ключам, меняем стандартный порт на котором SSH принимает подключения, перезапускаем SSH, подключаемся к VPS по SSH от добавленного пользователя с использованием ключа.
Установка XRay сервера.
Скачиваем со страницы репозитория последний релиз Xray-core для Linux amd64. На данный момент v24.10.31.
$ wget https://github.com/XTLS/Xray-core/releases/download/v24.10.31/Xray-linux-64.zip
Создаём каталог для установки XRay
$ sudo mkdir /opt/xray
Распаковываем в него загруженный архив
$ sudo unzip ./Xray-linux-64.zip -d /opt/xray
Добавялем права на выполнение файлу xray
$ sudo chmod +x /opt/xray/xray
Создаём юнит systemd для запуска\останова сервиса XRay.
$ sudo nano /usr/lib/systemd/system/xray.service
Помещаем в этот файл следующий текст:
[Unit]
Description=Xray Service
Documentation=https://github.com/xtls
After=network.target nss-lookup.target
[Service]
User=nobody
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
NoNewPrivileges=true
ExecStart=/opt/xray/xray run -config /opt/xray/config.json
Restart=on-failure
RestartPreventExitStatus=23
LimitNPROC=10000
LimitNOFILE=1000000
[Install]
WantedBy=multi-user.target
Настройка XRay сервера.
Генерируем аутентификационные данные для сервера и клиентов uuid, ключевую пару x25519 и shortIds:
$ /opt/xray/xray uuid
d14cba7c-b10a-4ef0-979d-3ad901bfff69
$ /opt/xray/xray x25519
Private key: iGfJHDX2iqN62QgMRR-UqR41RkpZmH2d6_F0VzcVeDY
Public key: cPcCpq4eVajazQHhsGgl2OI5j0_1K685wYaXZ8Kj7HY
$ openssl rand -hex 8
d0d3ce54d0c75f78
Загружаем сканер для нахождения сайта для под который будет маскироваться сервер.
$ wget https://github.com/XTLS/RealiTLScanner/releases/download/v0.2.1/RealiTLScanner-linux-64
$ wget https://github.com/Loyalsoldier/geoip/releases/latest/download/Country.mmdb
Разрешаем исполнение этого файла
$ chmod +x RealiTLScanner-linux-64
Запускаем сканер.
$ /home/ваш_user/RealiTLScanner-linux-64 -addr IP_вашего_VPS -port 443 -thread 100 -timeout 5
В результатах сканирования выбираем сайт. Это должен быть иностранный сервер (вне РФ), не забаненный по домену Роскомнадзором, поддерживающий подключения по TLSv1.3 и HTTP/2, имеющий заглавную страницу, которая не переадресовывает на какой-нибудь другой домен. Для проверки открываем его в браузере. Если сайт открывается и нет ошибок сертификата, то он нам подходит.
Создаём конфигурационный файл сервера.
sudo nano /opt/xray/config.json
Помещаем в него текст:
{
"log": {
"access": "/var/log/xray/access.log",
"error": "/var/log/xray/error.log",
"loglevel": "debug",
"dnsLog": true
},
"inbounds": [
{
"listen": "IP_вашего_VPS",
"port": 443,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "d14cba7c-b10a-4ef0-979d-3ad901bfff69",
"flow": "xtls-rprx-vision"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "www.найденный_сканером_сайт.com:443",
"serverNames": [
"www.найденный_сканером_сайт.com",
"найденный_сканером_сайт.com"
],
"privateKey": "iGfJHDX2iqN62QgMRR-UqR41RkpZmH2d6_F0VzcVeDY",
"shortIds": [
"d0d3ce54d0c75f78"
]
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls",
"quic"
]
}
}
],
"outbounds": [
{
"protocol": "freedom",
"tag": "direct"
},
{
"protocol": "blackhole",
"tag": "block"
}
]
}
Создаём каталог, файлы и выдаём на них права для отладочных логов подключения.
$ sudo mkdir /var/log/xray
$ sudo touch /var/log/xray/access.log
$ sudo touch /var/log/xray/error.log
$ sudo chown nobody:root /var/log/xray/access.log
$ sudo chown nobody:root /var/log/xray/error.log
Включаем автозапуск службы XRay при загрузке системы.
$ sudo systemctl enable xray
Запускаем службу Xray.
$ sudo systemctl start xray
Проверяем что всё запустилось и работает.
Смотрим системный лог.
$ journalctl -u xray
$ sudo systemctl status xray
● xray.service - Xray Service
Loaded: loaded (/usr/lib/systemd/system/xray.service; enabled; preset: disabled)
Active: active (running) since Sun 2024-XX-XX XX:XX:XX XXX; XXX XXX
Invocation: XXXXXXXXXXXXXXXXXXXXXXXXXXXX
Docs: https://github.com/xtls
Main PID: 231602 (xray)
Tasks: 8 (limit: 9254)
Memory: 7.5M (peak: 8.1M)
CPU: 95ms
CGroup: /system.slice/xray.service
└─231602 /opt/xray/xray run -config /opt/xray/config.json
XXX systemd[1]: Started xray.service - Xray Service.
XXX xray[231602]: Xray 24.10.31 (Xray, Penetrates Everything.) 4ec5c78 (go1.23.2 linux/amd64)
XXX xray[231602]: A unified platform for anti-censorship.
XXX xray[231602]: 2024/XX/XX XX:XX:XX [Info] infra/conf/serial: Reading config: &{Name:/opt/xray/config.json Format:json}
$ sudo lsof -i :443
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xray 231602 nobody 3u IPv4 14318516 0t0 TCP host.name:https (LISTEN)
$ sudo apt install sockstat
$ sudo sockstat | grep xray
nobody xray 231602 tcp4 IP_вашего_VPS:443 *:* LISTEN
$ nmap IP_вашего_VPS
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-XX-XX XX:XX XXX
Nmap scan report for host.name (IP_вашего_VPS)
Host is up (x.xxxxxxs latency).
Not shown: 996 closed tcp ports (reset)
PORT STATE SERVICE
443/tcp open https
Подключаемся с клиента, смотрим логи XRay сервера.
$ sudo cat /var/log/xray/access.log
$ sudo cat /var/log/xray/error.log
Если ошибок в логах нет, клиент подключается, всё работает, удаляем лог-файлы
$ sudo rm /var/log/xray/access.log
$ sudo rm /var/log/xray/error.log
Комментируем в /opt/xray/config.json строчки
"log": {
//"access": "/var/log/xray/access.log",
//"error": "/var/log/xray/error.log",
//"loglevel": "debug",
//"dnsLog": true
},
Перезапускаем службу XRay.
$ sudo systemctl restart xray