Показать страницуИстория страницыСсылки сюдаCopy this pageExport to MarkdownODT преобразованиеНаверх Вы загрузили старую версию документа! Сохранив её, вы создадите новую текущую версию с этим содержимым. Медиафайлы{{tag>[router vless proxy]}} ====== XRAYUI: плагин XRAY-Core для роутеров ASUS ====== ====== asuswrt-merlin-xrayui / Client ====== * https://github.com/DanielLavrushin/asuswrt-merlin-xrayui - Клиент на роутер * https://github.com/XTLS/Xray-core - Само приложение Xray ===== Установка ===== <code bash> $ wget -O /tmp/asuswrt-merlin-xrayui.tar.gz https://github.com/DanielLavrushin/asuswrt-merlin-xrayui/releases/latest/download/asuswrt-merlin-xrayui.tar.gz && rm -rf /jffs/addons/xrayui && tar -xzf /tmp/asuswrt-merlin-xrayui.tar.gz -C /jffs/addons && mv /jffs/addons/xrayui/xrayui /jffs/scripts/xrayui && chmod 0777 /jffs/scripts/xrayui && sh /jffs/scripts/xrayui install </code> ===== Обновление ===== <code bash> $ wget -O /tmp/asuswrt-merlin-xrayui.tar.gz https://github.com/DanielLavrushin/asuswrt-merlin-xrayui/releases/latest/download/asuswrt-merlin-xrayui.tar.gz && rm -rf /jffs/addons/xrayui && tar -xzf /tmp/asuswrt-merlin-xrayui.tar.gz -C /jffs/addons && mv /jffs/addons/xrayui/xrayui /jffs/scripts/xrayui && chmod 0777 /jffs/scripts/xrayui && sh /jffs/scripts/xrayui update </code> ===== 3X-UI / Panel / server ===== * https://github.com/AghayeCoder/tx-ui <code bash> $ openssl req -x509 -keyout /etc/ssl/certs/3x-ui.key -out /etc/ssl/certs/3x-ui.pem -newkey rsa:4096 -sha256 -days 3650 -nodes -new $ openssl x509 -noout -sha256 -fingerprint -in /etc/ssl/certs/3x-ui.pem </code> <code bash> $ bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh) </code> ===== Настройки / Подключения ===== === Схема: Пользователь -> Nginx (443 порт) -> Xray === Это классическая схема «проксирование через WebSocket + TLS» (часто называемая WS + TLS или VLESS+WS+TLS). Как это работает: * Пользователь подключается к вашему домену (например, yourdomain.com) по стандартному HTTPS-порту 443. * Nginx, получив запрос, проверяет его. * Ключевой момент: * Вы настраиваете в nginx правило, чтобы запросы, приходящие на определённый путь (например, **/graphql, /ray, /ws**), пересылались (проксировались) на локальный порт, где работает Xray (например, 127.0.0.1:10000). * Обычный веб-трафик (запрос к сайту) идёт к вашему сайту или отдаёт fake page, а трафик по секретному пути — к Xray. * Со стороны интернета весь трафик выглядит как обычный HTTPS, что обеспечивает высокую степень маскировки и обхода блокировок. Зачем это нужно: * Маскировка: Трафик Xray выглядит как обычный веб-серфинг. * Надёжность: Используется порт 443, который почти всегда открыт. * Безопасность: TLS-шифрование завершается на nginx. * Разделение: На одном IP-адресе можно одновременно держать и сайт, и прокси-сервис. === Схема: Пользователь -> Nginx (2053 порт) -> Панель 3x-ui === Это схема для доступа к веб-панели управления Xray. Как это работает: * Панель 3x-ui по умолчанию слушает свой порт (например, 2053) и отдаёт веб-интерфейс. * Вы НЕ открываете порт 2053 напрямую в фаерволе. Вместо этого вы настраиваете nginx как обратный прокси. * Nginx слушает порт 2053 на внешнем интерфейсе, принимает входящие соединения и передаёт их на внутренний порт панели 3x-ui (например, 127.0.0.1:2053). * Важное преимущество: Вы можете легко добавить к этому соединению аутентификацию (логин/пароль) на уровне nginx (auth_basic) или даже TLS-сертификат, чтобы шифровать доступ к самой панели, что сильно повышает безопасность. ==== Протоколы ==== ^ Протокол ^ Транспорт ^ Модуль nginx ^ Особенности настройки ^ | **VLESS** | TCP‑TLS, WS‑TLS, gRPC‑TLS, H2‑TLS | http, stream (для TCP) | Полная поддержка через proxy_pass (WS) или grpc_pass (gRPC). | | **VMess** | TCP‑TLS, WS‑TLS, gRPC‑TLS, H2‑TLS | http, stream (для TCP) | Аналогично VLESS, требует правильных заголовков и пути. | | **Trojan** | TCP‑TLS, WS‑TLS, gRPC‑TLS, H2‑TLS | http, stream (для TCP) | Часто используется как fallback‑протокол; проксируется как обычный TLS‑трафик. | | **Shadowsocks** | TCP‑TLS, WS‑TLS, gRPC‑TLS (с obfs) | http (если с TLS), stream (чистый TCP) | Без obfs легко обнаруживается; в режиме TLS настраивается как обычный HTTPS‑прокси. | | **mKCP** | (KCP over UDP) UDP | stream (с указанием udp) | Требует модуля ngx_stream_proxy_module с поддержкой UDP. | | **HTTP** | Upgrade (WebSocket) | WS‑TLS http | Стандартная настройка WebSocket‑прокси с заголовками Upgrade, Connection. | | **xHTTP** | (HTTP/2, HTTP/3) | H2‑TLS, QUIC | http (HTTP/2), экспериментальный модуль http3 | ==== Настройки ==== === nginx === <code> location /grpc { # 1. Безопасность и основные настройки limit_except GET POST { deny all; } # Разрешаем только методы gRPC client_max_body_size 0; # 2. Критически важные заголовки для gRPC grpc_set_header Content-Type application/grpc; grpc_set_header TE trailers; # Обязательно для gRPC grpc_set_header Host $host; grpc_set_header X-Real-IP $remote_addr; grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for; grpc_set_header X-Forwarded-Proto $scheme; # 3. Оптимизация таймаутов (более реалистичные значения) grpc_read_timeout 30m; # Для долгих потоков grpc_send_timeout 30m; grpc_connect_timeout 5s; # Быстрое отсечение недоступных серверов # 4. Оптимизация буферизации и производительности grpc_buffer_size 128k; # Увеличиваем буфер для gRPC потоков grpc_next_upstream error timeout http_502 http_503; grpc_next_upstream_timeout 0; grpc_next_upstream_tries 2; # 5. keepalive для upstream соединений (важно для Docker!) set $upstream_grpc proxy-grpc; grpc_pass grpc://$upstream_grpc; # 6. Для отладки (можно отключить в проде) # access_log /var/log/nginx/grpc_access.log upstream_time; # error_log /var/log/nginx/grpc_error.log debug; } </code> <code> # Xray grpc location /grpc { # Защита от больших тел запросов client_max_body_size 0; # Настройки таймаутов для gRPC (чтобы не рвалось соединение) grpc_read_timeout 1h; grpc_send_timeout 1h; client_body_timeout 1h; # Обязательные заголовки grpc_set_header X-Real-IP $remote_addr; grpc_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # Пробрасываем на апстрим grpc_pass grpc://proxy-grpc; } </code> ==== Обязательные настройки ==== * Отключает Flow Cache и NAT Acceleration * Корректно перезапускает сетевой стек * Безопасен для запуска при старте <code bash> $ cat > /jffs/scripts/init-start << 'EOF' #!/bin/sh # Отключаем аппаратное ускорение (Flow Cache / CTF) на Broadcom-роутерах # Необходимо при использовании Xray / TPROXY / iptables-перехвата трафика logger -t "DISABLE-HW-ACC" "Отключение аппаратного ускорения (Flow Cache и NAT Acceleration)..." # Отключаем Cut-Through Forwarding (Flow Cache) nvram set ctf_disable=1 # Отключаем fast NAT forwarding nvram set nf_nat_fastforward=0 # Сохраняем настройки nvram commit # Перезапускаем firewall (вместо полной перезагрузки) service restart_firewall logger -t "DISABLE-HW-ACC" "Аппаратное ускорение отключено. Сетевой стек перезапущен." EOF $ chmod +x /jffs/scripts/init-start </code> <code bash> $ cat > /jffs/scripts/nat-start << 'EOF' #!/bin/sh # Ждём, пока Xray UI применит свои правила (обычно 5–10 секунд после старта) sleep 10 # Удаляем старые правила (на случай повторного запуска) iptables -t mangle -D PREROUTING -s 192.168.0.0/16 -j RETURN 2>/dev/null iptables -t mangle -D PREROUTING -s 10.0.0.0/8 -j RETURN 2>/dev/null iptables -t mangle -D PREROUTING -s 172.16.0.0/12 -j RETURN 2>/dev/null iptables -t mangle -D PREROUTING -d 192.168.0.0/16 -j RETURN 2>/dev/null iptables -t mangle -D PREROUTING -d 10.0.0.0/8 -j RETURN 2>/dev/null iptables -t mangle -D PREROUTING -d 172.16.0.0/12 -j RETURN 2>/dev/null iptables -t mangle -D PREROUTING -d 127.0.0.0/8 -j RETURN 2>/dev/null # Вставляем исключения В САМОЕ НАЧАЛО цепочки mangle iptables -t mangle -I PREROUTING 1 -s 192.168.0.0/16 -j RETURN iptables -t mangle -I PREROUTING 1 -s 10.0.0.0/8 -j RETURN iptables -t mangle -I PREROUTING 1 -s 172.16.0.0/12 -j RETURN iptables -t mangle -I PREROUTING 1 -d 192.168.0.0/16 -j RETURN iptables -t mangle -I PREROUTING 1 -d 10.0.0.0/8 -j RETURN iptables -t mangle -I PREROUTING 1 -d 172.16.0.0/12 -j RETURN iptables -t mangle -I PREROUTING 1 -d 127.0.0.0/8 -j RETURN # Логируем logger -t "XRAY-FIX" "Локальные сети исключены из TPROXY через iptables (nat-start)." EOF $ chmod +x /jffs/scripts/nat-start $ iptables -t mangle -L PREROUTING -n --line-numbers </code> СохранитьПросмотрРазличияОтменить Сводка изменений Примечание: редактируя эту страницу, вы соглашаетесь на использование своего вклада на условиях следующей лицензии: CC0 1.0 Universal