Различия
Показаны различия между двумя версиями страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| router:x-ray [2025/12/17 01:35] – mirocow | router:x-ray [2026/03/26 10:44] (текущий) – mirocow | ||
|---|---|---|---|
| Строка 1: | Строка 1: | ||
| - | {{tag> | + | {{tag> |
| - | ====== | + | ====== XRAY Server / XRAYUI |
| + | * https:// | ||
| + | * https:// | ||
| + | |||
| + | ====== asuswrt-merlin-xrayui / Client ====== | ||
| + | |||
| + | * [[xrayui]] | ||
| + | |||
| + | ==== Установка ==== | ||
| <code bash> | <code bash> | ||
| $ wget -O / | $ wget -O / | ||
| </ | </ | ||
| + | |||
| + | === Ошибка === | ||
| + | |||
| + | < | ||
| + | Entware is not installed or opkg binary is not accessible. | ||
| + | Please install Entware first: https:// | ||
| + | </ | ||
| + | |||
| + | === Entware === | ||
| + | |||
| + | <code bash> | ||
| + | $ amtm | ||
| + | i | ||
| + | ep | ||
| + | </ | ||
| + | |||
| + | ==== Удаление ==== | ||
| + | |||
| + | <code bash> | ||
| + | $ / | ||
| + | </ | ||
| + | |||
| + | ==== Обновление ==== | ||
| + | |||
| + | <code bash> | ||
| + | $ wget -O / | ||
| + | </ | ||
| + | |||
| + | ===== 3X-UI / Panel / Server ===== | ||
| + | |||
| + | * https:// | ||
| <code bash> | <code bash> | ||
| Строка 12: | Строка 51: | ||
| $ openssl x509 -noout -sha256 -fingerprint -in / | $ openssl x509 -noout -sha256 -fingerprint -in / | ||
| </ | </ | ||
| + | |||
| + | <code bash> | ||
| + | $ bash <(curl -Ls https:// | ||
| + | </ | ||
| + | |||
| + | ==== Настройки / Подключения ==== | ||
| + | |||
| + | |||
| + | === Схема: Пользователь -> Nginx (443 порт) -> Xray === | ||
| + | |||
| + | Это классическая схема «проксирование через WebSocket + TLS» (часто называемая WS + TLS или VLESS+WS+TLS). | ||
| + | |||
| + | Как это работает: | ||
| + | |||
| + | * Пользователь подключается к вашему домену (например, | ||
| + | * Nginx, получив запрос, | ||
| + | * Ключевой момент: | ||
| + | * Вы настраиваете в nginx правило, | ||
| + | * Обычный веб-трафик (запрос к сайту) идёт к вашему сайту или отдаёт fake page, а трафик по секретному пути — к Xray. | ||
| + | * Со стороны интернета весь трафик выглядит как обычный HTTPS, что обеспечивает высокую степень маскировки и обхода блокировок. | ||
| + | |||
| + | Зачем это нужно: | ||
| + | |||
| + | * Маскировка: | ||
| + | * Надёжность: | ||
| + | * Безопасность: | ||
| + | * Разделение: | ||
| + | |||
| + | === Схема: Пользователь -> Nginx (2053 порт) -> Панель 3x-ui === | ||
| + | |||
| + | |||
| + | Это схема для доступа к веб-панели управления Xray. | ||
| + | |||
| + | Как это работает: | ||
| + | |||
| + | * Панель 3x-ui по умолчанию слушает свой порт (например, | ||
| + | * Вы НЕ открываете порт 2053 напрямую в фаерволе. Вместо этого вы настраиваете nginx как обратный прокси. | ||
| + | * Nginx слушает порт 2053 на внешнем интерфейсе, | ||
| + | * Важное преимущество: | ||
| + | |||
| + | ==== Протоколы ==== | ||
| + | |||
| + | ^ Протокол | ||
| + | | **VLESS** | ||
| + | | **VMess** | ||
| + | | **Trojan** | ||
| + | | **Shadowsocks** | ||
| + | | **mKCP** | ||
| + | | **HTTP** | ||
| + | | **xHTTP** | ||
| + | |||
| + | ==== Настройки ==== | ||
| + | |||
| + | === nginx === | ||
| + | |||
| + | < | ||
| + | location /grpc { | ||
| + | # 1. Безопасность и основные настройки | ||
| + | | ||
| + | | ||
| + | | ||
| + | # 2. Критически важные заголовки для gRPC | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | # 3. Оптимизация таймаутов (более реалистичные значения) | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | # 4. Оптимизация буферизации и производительности | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | # 5. keepalive для upstream соединений (важно для Docker!) | ||
| + | set $upstream_grpc proxy-grpc; | ||
| + | | ||
| + | | ||
| + | # 6. Для отладки (можно отключить в проде) | ||
| + | # access_log / | ||
| + | # error_log / | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | < | ||
| + | # 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:// | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | ==== Обязательные настройки ==== | ||
| + | |||
| + | * Отключает Flow Cache и NAT Acceleration | ||
| + | * Корректно перезапускает сетевой стек | ||
| + | * Безопасен для запуска при старте | ||
| + | |||
| + | <code bash> | ||
| + | $ cat > / | ||
| + | #!/bin/sh | ||
| + | |||
| + | # Отключаем аппаратное ускорение (Flow Cache / CTF) на Broadcom-роутерах | ||
| + | # Необходимо при использовании Xray / TPROXY / iptables-перехвата трафика | ||
| + | |||
| + | logger -t " | ||
| + | |||
| + | # Отключаем 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 " | ||
| + | EOF | ||
| + | |||
| + | $ chmod +x / | ||
| + | </ | ||
| + | |||
| + | <code bash> | ||
| + | $ cat > / | ||
| + | #!/bin/sh | ||
| + | |||
| + | # Ждём, пока Xray UI применит свои правила (обычно 5–10 секунд после старта) | ||
| + | sleep 10 | ||
| + | |||
| + | # Удаляем старые правила (на случай повторного запуска) | ||
| + | iptables -t mangle -D PREROUTING -s 192.168.0.0/ | ||
| + | iptables -t mangle -D PREROUTING -s 10.0.0.0/8 -j RETURN 2>/ | ||
| + | iptables -t mangle -D PREROUTING -s 172.16.0.0/ | ||
| + | iptables -t mangle -D PREROUTING -d 192.168.0.0/ | ||
| + | iptables -t mangle -D PREROUTING -d 10.0.0.0/8 -j RETURN 2>/ | ||
| + | iptables -t mangle -D PREROUTING -d 172.16.0.0/ | ||
| + | iptables -t mangle -D PREROUTING -d 127.0.0.0/8 -j RETURN 2>/ | ||
| + | |||
| + | # Вставляем исключения В САМОЕ НАЧАЛО цепочки mangle | ||
| + | iptables -t mangle -I PREROUTING 1 -s 192.168.0.0/ | ||
| + | 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/ | ||
| + | iptables -t mangle -I PREROUTING 1 -d 192.168.0.0/ | ||
| + | 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/ | ||
| + | iptables -t mangle -I PREROUTING 1 -d 127.0.0.0/8 -j RETURN | ||
| + | |||
| + | # Логируем | ||
| + | logger -t " | ||
| + | EOF | ||
| + | |||
| + | $ chmod +x / | ||
| + | $ iptables -t mangle -L PREROUTING -n --line-numbers | ||
| + | </ | ||
| + | |||