Xray на VDS сервере и маршрутизаторе Keneetic

Xray на VDS сервере и маршрутизаторе Keneetic

https://habr.com/ru/articles/822597/?utm_source=habrahabr&utm_medium=rss&utm_campaign=822597

Какие цели у этого руководства:
Обеспечение доступа через VDS сервер используя технологии xray, посредством маршрутизатора Keenetic и скрипта Xkeen.

Кому предназначено:
Для людей, которые хотят решить поставленную задачу, не вдаваясь во все тонкости настройки, выполняя инструкции шаг за шагом.

Особая благодарность автору скрипта Xkeen @Skride
Подробное руководство по скрипту

Установка 3X-UI на VDS сервер

Российские VDS сервера можно арендовать по ссылке
В качестве ssh-клиента на Windows будем использовать Putty

Адрес 45.89.67.100 выбран для примера

Альтернативно на Windows начиная с Windows 8, можно подключатся из консоли Powershell, также как и на Linux/macOS

ssh root@45.89.67.100

На Linux/macOS используем стандартную консоль

ssh root@45.89.67.100

Первым делом обновляемся и устанавливаем curl

Debian/Ubuntu

apt update && apt upgrade && apt install curl -y

RHEL/CentOS

dnf check-update && dnf upgrade && dnf install curl

Устанавливаем 3X-UI с помощью скрипта

bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)

На запрос, отвечаем отрицательно n, таким образом будет сгенерирован безопасный логин и пароль

Install/update finished! For security it's recommended to modify panel settings    
Do you want to continue with the modification [y/n]?:n

Готово, сервер автоматически поднялся на порте 2053, не забываем записать сгенерированные данные

Install/update finished! For security it's recommended to modify panel settings    
Do you want to continue with the modification [y/n]?:n
Cancel...
set username and password success
This is a fresh installation, will generate random login info for security concerns:
###############################################
Username: F92M6aia
Password: 9/fHDY37
WebBasePath: mBDNYtiG
###############################################
If you forgot your login info, you can type x-ui and then type 8 to check after installation
Start migrating database...
Migration done!
Created symlink /etc/systemd/system/multi-user.target.wants/x-ui.service → /etc/systemd/system/x-ui.service.
x-ui v2.3.4 installation finished, it is running now...

x-ui control menu usages:  
----------------------------------------------
x-ui              - Enter     Admin menu
x-ui start        - Start     x-ui
x-ui stop         - Stop      x-ui
x-ui restart      - Restart   x-ui
x-ui status       - Show      x-ui status
x-ui enable       - Enable    x-ui on system startup
x-ui disable      - Disable   x-ui on system startup
x-ui log          - Check     x-ui logs
x-ui banlog       - Check Fail2ban ban logs
x-ui update       - Update    x-ui
x-ui install      - Install   x-ui
x-ui uninstall    - Uninstall x-ui
----------------------------------------------

Регистрация доменного имени

Переходим в браузере по адресу https://freemyip.com/

Регистрируем наши "рога и копыта", разумеется это для примера

Убеждаемся что имя не занято, занимаем его CLAIM IT!

Обязательно сохраняем строку с токеном!

Возвращаемся на наш VDS и вводим полученную строку через curl

curl https://freemyip.com/update?token=f4782a18ef08fd3b3f8b33c4&domain=hoofsandhorns.freemyip.com

В ответ получаем OK, если все прошло удачно

[5] 1178  
[4]   Завершён        curl https://freemyip.com/updatetoken=f4782a18ef08fd3b3f8b33c4
root@3X-UI:/home/user# OK
Панель администрирования 3X-UI

Возвращаемся в браузер заходим в административную панель 3X-UI уже по нашему адресу (http протокол) http://hoofsandhorns.freemyip.com:2053

http://hoofsandhorns.freemyip.com:2053/mBDNYtiG

Выбираем русский язык и тему, вводим записанный наш логин и пароль

Появляется страница со статусом

Настройка безопасности в 3X-UI

Чтобы исчезла плашка о предупреждении безопасности необходимо получить SSL сертификат, после чего мы сможем безопасно входить в панель администрирования 3X-UI.

Для этого необходимо на нашем VDS сервере запустить скрипт настройки панели управления

x-ui

Выбираем пункт 16. SSL Certificate Management

The OS release is: debian  

 3X-ui Panel Management Script
 0. Exit Script
————————————————
 1. Install
 2. Update
 3. Custom Version
 4. Uninstall
————————————————
 5. Reset Username & Password & Secret Token
 6. Reset Settings
 7. Change Port
 8. View Current Settings
————————————————
 9. Start
 10. Stop
 11. Restart
 12. Check Status
 13. Check Logs
————————————————
 14. Enable Autostart
 15. Disable Autostart
————————————————
 16. SSL Certificate Management
 17. Cloudflare SSL Certificate
 18. IP Limit Management
 19. WARP Management
 20. Firewall Management
————————————————
 21. Enable BBR  
 22. Update Geo Files
 23. Speedtest by Ookla

Panel state: Running
Start automatically: Yes
xray state: Running

Please enter your selection [0-23]:16

Далее пункт 1. Get SSL

Please enter your selection [0-23]: 16  
       1. Get SSL
       2. Revoke
       3. Force Renew
       0. Back to Main Menu
Choose an option:1

Вводим наш зарегистрированный домен hoofsandhorns.freemyip.com

Please enter your domain name:hoofsandhorns.freemyip.com

Соглашаемся с портом 80

please choose which port do you use,default will be 80 port:↵

Получаем ключи

[ERR] your input  is invalid,will use default port    
[INF] will use port: to issue certs,please make sure this port is open...  
[Вс 26 май 2024 12:23:41 AM MSK] Changed default CA to: https://acme-v02.api.letsencrypt.org/directory
[Вс 26 май 2024 12:23:41 AM MSK] Using CA: https://acme-v02.api.letsencrypt.org/directory
[Вс 26 май 2024 12:23:41 AM MSK] Standalone mode.
[Вс 26 май 2024 12:23:42 AM MSK] Create account key ok.
[Вс 26 май 2024 12:23:42 AM MSK] Registering account: https://acme-v02.api.letsencrypt.org/directory
[Вс 26 май 2024 12:23:43 AM MSK] Registered
[Вс 26 май 2024 12:23:43 AM MSK] ACCOUNT_THUMBPRINT='DJ5g0VfLTC9OH9-IyctnEMscqenBrfulACbZGzeDkp4'
[Вс 26 май 2024 12:23:43 AM MSK] Creating domain key
[Вс 26 май 2024 12:23:43 AM MSK] The domain key is here: /root/.acme.sh/hoofsandhorns.freemyip.com_ecc/hoofsandhorns.freemyip.com.key
[Вс 26 май 2024 12:23:43 AM MSK] Single domain='hoofsandhorns.freemyip.com'
[Вс 26 май 2024 12:23:45 AM MSK] Getting webroot for domain='hoofsandhorns.freemyip.com'
[Вс 26 май 2024 12:23:45 AM MSK] Verifying: hoofsandhorns.freemyip.com
[Вс 26 май 2024 12:23:45 AM MSK] Standalone mode server
[Вс 26 май 2024 12:23:47 AM MSK] Pending, The CA is processing your order, please just wait. (1/30)
[Вс 26 май 2024 12:23:50 AM MSK] Success
[Вс 26 май 2024 12:23:50 AM MSK] Verify finished, start to sign.
[Вс 26 май 2024 12:23:50 AM MSK] Lets finalize the order.
[Вс 26 май 2024 12:23:50 AM MSK] Le_OrderFinalize='https://acme-v02.api.letsencrypt.org/acme/finalize/1758584822/274601066162'
[Вс 26 май 2024 12:23:51 AM MSK] Downloading cert.
[Вс 26 май 2024 12:23:51 AM MSK] Le_LinkCert='https://acme-v02.api.letsencrypt.org/acme/cert/04db8aa3f5403403649266624d72b3dbef80'
[Вс 26 май 2024 12:23:52 AM MSK] Cert success.
-----BEGIN CERTIFICATE-----
MIIENTCCAx2gAwIBAgISBNuKo/VANANkkmZiTXKz2++AMA0GCSqGSIb3DQEBCwUA
MDIxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1MZXQncyBFbmNyeXB0MQswCQYDVQQD
EwJSMzAeFw0yNDA2MDEyMDIzNTFaFw0yNDA4MzAyMDIzNTBaMCQxIjAgBgNVBAMT
GWdyaXRza2V2aXRjaC5mcmVlbXlpcC5jb20wWTATBgcqhkjOPQIBBggqhkjOPQMB
BwNCAASplnt5M4J8TYJrcVb11KrZOAOxgHGW3tg5+cipYe8+0C2IMgVQ+teGUR2s
U3tmaf0SQ6tn36ZW5hfd8ruARFv7o4ICHDCCAhgwDgYDVR0PAQH/BAQDAgeAMB0G
A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAMBgNVHRMBAf8EAjAAMB0GA1Ud
DgQWBBRXhN9Hwlc+d2Oj6MIz4X8gLlBuPjAfBgNVHSMEGDAWgBQULrMXt1hWy65Q
CUDmH6+dixTCxjBVBggrBgEFBQcBAQRJMEcwIQYIKwYBBQUHMAGGFWh0dHA6Ly9y
My5vLmxlbmNyLm9yZzAiBggrBgEFBQcwAoYWaHR0cDovL3IzLmkubGVuY3Iub3Jn
LzAkBgNVHREEHTAbghlncml0c2tldml0Y2guZnJlZW15aXAuY29tMBMGA1UdIAQM
MAowCAYGZ4EMAQIBMIIBBQYKKwYBBAHWeQIEAgSB9gSB8wDxAHcASLDja9qmRzQP
5WoC+p0w6xxSActW3SyB2bu/qznYhHMAAAGP1a/8IAAABAMASDBGAiEAiZ7RwnZc
EBL9V2axNHz6MskuGVmDNrAHrzHDoMRqY7UCIQDY1mBhcBg10jATKqa3oIrymAno
DmRQgXPLR5QP11xYfAB2AD8XS0/XIkdYlB1lHIS+DRLtkDd/H4Vq68G/KIXs+GRu
AAABj9Wv/B8AAAQDAEcwRQIgJnNfg70UGKQ4sJOYuFkgRWn3fScSKd73C9vUMgPI
xuACIQDclXZhKGM7lnsyQOIdRPFGDXhYroz8SuRzqibkWAKhPjANBgkqhkiG9w0B
AQsFAAOCAQEAsQR78VLSNAa8TJx9p/UiVwLbuu5v4lpELR2rd+zQQP1AYg8eIjUt
zccP6133Ca2x2uBJba/Sv08FXiEo2u8N9JdFQJBBQplqoCFMTzcMBqjLvI2TL7D8
f1jmd1HBpHgB/UCApDCESu2DQiOM+7ZcX9onEWZ0GrtCAQo7BNcyK2oiRLVHkhAN
6SLdPPPCtET0xQChk54nUfhccYAByFg3QLrsycWKkdrV8RQUg6tFQ9V01c66nrzn
3NHQcjBVLR/4XDTikPdrLIfJPWExwU3xzxbFjykZ6R9vdJK18mD2t94kcrifHZJy
C6OPFlRir5ETrTvinDGw5hmOXWJgHrUNUQ==
-----END CERTIFICATE-----
[Вс 26 май 2024 12:23:52 AM MSK] Your cert is in: /root/.acme.sh/hoofsandhorns.freemyip.com_ecc/hoofsandhorns.freemyip.com.cer
[Вс 26 май 2024 12:23:52 AM MSK] Your cert key is in: /root/.acme.sh/hoofsandhorns.freemyip.com_ecc/hoofsandhorns.freemyip.com.key
[Вс 26 май 2024 12:23:52 AM MSK] The intermediate CA cert is in: /root/.acme.sh/hoofsandhorns.freemyip.com_ecc/ca.cer
[Вс 26 май 2024 12:23:52 AM MSK] And the full chain certs is there: /root/.acme.sh/hoofsandhorns.freemyip.com_ecc/fullchain.cer
[ERR] issue certs succeed,installing certs...  
[Вс 26 май 2024 12:23:52 AM MSK] The domain 'hoofsandhorns.freemyip.com' seems to have a ECC cert already, lets use ecc cert.
[Вс 26 май 2024 12:23:52 AM MSK] Installing key to: /root/cert/hoofsandhorns.freemyip.com/privkey.pem
[Вс 26 май 2024 12:23:52 AM MSK] Installing full chain to: /root/cert/hoofsandhorns.freemyip.com/fullchain.pem
[INF] install certs succeed,enable auto renew...  
[Вс 26 май 2024 12:23:53 AM MSK] Already uptodate!
[Вс 26 май 2024 12:23:53 AM MSK] Upgrade success!
[INF] auto renew succeed, certs details:  
total 16K
drwxr-xr-x 2 root root 4.0K Jun  2 00:23 .
drwxr-xr-x 3 root root 4.0K Jun  2 00:23 ..
-rw-r--r-- 1 root root 3.3K Jun  2 00:23 fullchain.pem
-rw------- 1 root root  227 Jun  2 00:23 privkey.pem

Возвращаемся в браузер в панель 3X-UI, переходим в Настройки панели

  • Порт панели меняем на нестандартный, например 65456

  • В поле Путь к файлу публичного ключа сертификата панели вставляем путь из терминала /root/.acme.sh/hoofsandhorns.freemyip.com_ecc/fullchain.cer

  • В поле Путь к файлу приватного ключа сертификата панели соответственно путь /root/.acme.sh/hoofsandhorns.freemyip.com_ecc/hoofsandhorns.freemyip.com.key

  • Поле Корневой путь URL адреса панели для большей безопасности, меняем на какое-нибудь секретное слово, например /pusti

Сохраняем и перезапускаем панель 3X-UI, теперь наш адрес для входа в панель

https://hoofsandhorns.freemyip.com:65456/pusti

Настройка подключения

Далее необходимо создать подключение, выбираем Добавть подключение, на вкладке Подключения

Заполняем подключение:

  • Пишем название в поле Примечание, например Ausweis

  • Протокол выбираем vless

  • Порт меняем на 443

  • Безопасность переключаем на REALITY

  • В uTLS выбираем браузер, которым пользуетесь чаще, например chrome

  • Dest и SNI лучше заменить с yahoo.com на российский yandex.ru

  • Генерируем пару ключей путем нажатия на Get New Cert

  • Сохраняем подключение кнопкой Создать

Усилим маскировку нашего соединения:

  • Разворачиваем меню нашего соединения +

  • Нажимаем пиктограмму с карандашом для редактирования

  • В поле Flow выбираем xtls-rprx-vision

  • Сохраняем изменения

Готово! Для проверки работоспособности можно воспользоваться телефоном установив на Android приложение v2rayNG, а на iOS V2BOX Нажимаем значок с QR-кодом и показываем его приложению в телефоне.

Установка OPKG Entware на маршрутизатор Keenetic

Для справки
Entware — это менеджер ПО для встраиваемых систем, который открывает доступ к огромному количеству (более 1500) пакетов программ для Linux, расширяя возможности устройства, на котором он установлен. Чаще всего поддержкой Entware обладают продвинутые маршрутизаторы.

Перед установкой OPKG Entware необходимо подготовить Flash-накопитель на USB, подойдет минимальный объем (4-8 GB). Накопитель будет вставлен в USB порт постоянно, на нем будет находиться операционная система.
Делаем подготовку USB накопителя по ссылке Использование файловой системы EXT4 на USB
После того как имеем подготовленный носитель, приступаем непосредственно к установке Установка репозитория Entware на USB-накопитель

Настройка клиента xray с помощью скрипта xkeen

Для справки
Ветка по теме xkeen на форуме keenetic
Подробная инструкция по настройке

Установка скрипта

На Windows используем Putty, заходим на ваш роутер, ip-адрес может отличаться, порт 222, если задействован SSH компонент в Keenetic OS, если нет, то стандартный 22

На Linux/macOS по ssh

ssh -p222 root@192.168.1.1

Установка скрипта Xkeen

opkg install curl tar
cd /tmp
curl -s -L https://github.com/Skrill0/XKeen/releases/latest/download/xkeen.tar --output xkeen.tar && tar -xvf xkeen.tar -C /opt/sbin --overwrite > /dev/null && rm xkeen.tar
xkeen -i

Выбираем 1. Установить отсутствующие GeoIP

 Выберите номер или номера действий для GeoIP  

    0. Пропустить
    1. Установить отсутствующие GeoIP
    2. Нет доступных GeoIP для обновления
    3. Установить AntiFilter
    4. Установить v2fly
    99. Нет установленных GeoIP для удаления

 Ваш выбор: 1

Выбираем 1. Установить отсутствующие GeoSite

 Выберите номер или номера действий для GeoSite  

    0. Пропустить
    1. Установить отсутствующие GeoSite
    2. Нет доступных GeoSite для обновления
    3. Установить v2fly
    4. Установить AntiFilter
    5. Установить AntiZapret
    6. Установить Zkeen
    99. Нет установленных GeoSite для удаления

 Ваш выбор: 1

Включаем автоматическое обновление для всех (1)

 Выберите номер или номера действий для автоматических обновлений  

    0. Пропустить
    1. Включить отсутствующие задачи автоматического обновления
    2. Обновить включенные задачи автоматического обновления
    3. Обновить Xkeen
    4. Обновить Xray
    5. Включить GeoSite
    6. Обновить GeoIP
    99. Выключить все

 Ваш выбор: 1

Устанавливаем обновление, например ежедневно в 00:00

 Время автоматического обновления для всех задач:  

 Выберите день
    0. Отмена
    1. Понедельник
    2. Вторник
    3. Среда
    4. Четверг
    5. Пятница
    6. Суббота
    7. Воскресенье
    8. Ежедневно

 Ваш выбор: 8
 Cron остановлен  
 Cron запущен

 Выполняется очистка временных файлов после работы Xkeen
 Очистка временных файлов успешно выполнена

 Перед использованием Xray настройте конфигураций по пути «/opt/etc/xray/configs»
 Установка окончена

Справка
По ключу -h можно вызвать помощь по всем командам xkeen

Настройка портов для прокси

xkeen -ap 443,80

Конфигурирование Xray

Список файлов конфигурации Xray

ls -la /opt/etc/xray/configs/
drwxr-xr-x    4 root     root          4096 May 28 05:45 ./  
drwxr-xr-x    4 root     root          4096 May 25 20:47 ../
-rw-rwxrwx    1 root     root           564 May 25 20:47 01_log.json*
-rw-rwxrwx    1 root     root           724 May 25 20:47 02_transport.json*
-rwxrwxrwx    1 root     root           383 May 28 02:13 03_inbounds.json*
-rwxrwxrwx    1 root     root           915 May 28 03:45 04_outbounds.json*
-rw-rwxrwx    1 root     root          1097 May 28 03:26 05_routing.json*
-rwxrwxrwx    1 root     root           182 May 26 00:21 06_policy.json*

Нас интересуют только 3 файла 03_inbounds.json, 04_outbounds.json и 05_routing.json

Будем пользоваться редактором nano, устанавливаем

opkg install nano

Правим конфигурационный файл 03_inbounds.json

nano /opt/etc/xray/configs/03_inbounds.json
{
"inbounds": [
{
// TUN
"tag": "socks-in",
"port": 2080,
"protocol": "socks",
"settings": {
"auth": "noauth",
"udp": true
},
"sniffing": {
"enabled": true,
"routeOnly": true,
"destOverride": [
"http",
"tls",
"quic"
]
}
}
]
}

Внимание
Будьте внимательны, синтаксис json строгий, не нарушайте структуру, соблюдайте синтаксис.

listen - IP-адрес вашего роутера
port - произвольный порт (2000-65535)
protocol - указываем "socks" или "http"
tag - тег соединения, пусть будет "socks-in"
остальное как в примере

Нажимаем сохранение CRTL+O, затем выходим из редактора CTRL+X

Конфигурационный файл 04_outbounds.json

nano /opt/etc/xray/configs/04_outbounds.json
{
"outbounds": [
{
"domainStrategy": "UseIPv4",
"tag": "vless-reality",
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "hoofsandhorns.freemyip.com",
"port": 443,
"users": [
{
"id": "8bda3d23-262f-44ff-b8a3-f7dfc83cb705",
"encryption": "none",
"flow": "xtls-rprx-vision",
"level": 0
}
]
}
]
},
"streamSettings": {
"network": "tcp",
"security": "reality",
"realitySettings": {
"publicKey": "Jf0f3n7elMH7PZNXpCKcKzT7Qx2_n1kvA6NIwn_eSk4",
"fingerprint": "chrome",
"serverName": "yandex.ru",
"shortId": "d0c03b88",
"spiderX": "/"
}
}
}
]
}

tag - тег соединения, пусть будет "vless-reality"
protocol - обязательно "vless"
address - тот что мы регистрировали, "hoofsandhorns.freemyip.com"
port - "443"
fingerprint - то что указывали в настройках 3X-UI "chrome"
serverName - тоже такие же как в 3X-UI "yandex.ru"
id, publicKey, shortId - смотрим в инфо соединения на 3X-UI в разделе URL

Нажимаем сохранение CRTL+O, затем выходим из редактора CTRL+X

Данные еще можно посмотреть в настройке подключения, выбрав в меню с тремя точками пункт Изменить

Конфигурационный файл 04_outbounds.json

nano /opt/etc/xray/configs/05_routing.json
{
"routing": {
"rules": [
// Блокируем соединение по уязвимым UDP портам
{
"inboundTag": ["socks-in"],
"outboundTag": "block",
"type": "field",
"network": "udp",
"port": "135, 137, 138, 139"
},
// Настройка vless
{
"inboundTag": ["socks-in"],
"outboundTag": "vless-reality",
"type": "field"
}
]
}
}

VPS подключение
inboundTag - тег что что указывали в 03_inbounds.json "socks-in"
outboundTag - тег из 04_outbounds.json "vless-reality"

Запускаем xkeen

xkeen -start

Настройка роутера для подключения

Заходим на ваш роутер в браузере по адресу 192.168.1.1 (ваш ip может отличаться)

  1. Устанавливаем клиента прокси

Путь: Управление-> Параметры системы-> Изменить набор компонентов -> Клиент прокси

Нажимаем Обновить KeeneticOS, маршрутизатор перезагрузиться

  1. Настраиваем прокси подключение

Путь: Интернет -> Другие подключения -> Прокси подключения -> Добавить

  • Имя - xray

  • Протокол - SOCKS v5

  • Адрес - ip адрес вашего роутера : порт тот что указан 03_inbounds.json 2080

Путь: Интернет -> Приоритеты подключений -> Добавить политику -> Xkeen

  1. Добавляем в политику Xkeen прокси Xray, нажимаем сохранить

  1. Добавляем клиента в политику Xkeen путем перетаскивания на него мышкой

Подключившись к веб-конфигуратору в адресной строке браузера вы увидите адрес вида http://192.168.1.1/dashboard
Сотрите слово dashboard и после символа косой черты / добавьте маленькую строчную букву a английского алфавита http://192.168.1.1/a

В веб-интерфейсе откроется страница Web cli, с которой можно отправлять команды для роутера.

interface Proxy0 proxy socks5-udp
system configuration save 

Все готово! Проверяем наш внешний IP-адрес.

Report Page