Содержание

, , , ,

XRAY Server / XRAYUI

asuswrt-merlin-xrayui / Client

Установка

$ 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

Ошибка

Entware is not installed or opkg binary is not accessible.
Please install Entware first: https://github.com/Entware/Entware/wiki/Install-on-ASUSWRT

Entware

$ amtm
i
ep

Удаление

$ /jffs/scripts/xrayui uninstall

Обновление

$ 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

3X-UI / Panel / Server

$ 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
$ bash <(curl -Ls https://raw.githubusercontent.com/mhsanaei/3x-ui/master/install.sh)

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

Схема: Пользователь -> Nginx (443 порт) -> Xray

Это классическая схема «проксирование через WebSocket + TLS» (часто называемая WS + TLS или VLESS+WS+TLS).

Как это работает:

Зачем это нужно:

Схема: Пользователь -> Nginx (2053 порт) -> Панель 3x-ui

Это схема для доступа к веб-панели управления Xray.

Как это работает:

Протоколы

Протокол Транспорт Модуль 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

    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;
    }
    # 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;
    }

Обязательные настройки

$ 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
$ 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