Как реализовать редирект на сайт?
По вводным: есть Debian с установленным xray-vless на 433, все как у всех.
Нужно понять: а как сделать так, что бы при заходе на этот ресурс браузером происходил редирект на другой сайт?
По вводным: хотелось бы сделать с помощью nftables. Везде предлагают конструкцию:
nft add rule ip nat prerouting iifname eth0 tcp dport 80 counter dnat to 92.122.110.37:80
По вводным: где "92.122.110.37" это результат командыwhosip.exe www.microsoft.com
Сейчас ситуация такая: но это же не работает, ёлки-палки.
Прошу.
По вводным: uDP: Этот ресурс - имею ввиду мой сервер с xray. Если кто-то шарит по нему браузером, путь редиректился на www.microsoft.com например.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Сделать HTTP-редирект через
nftables dnatнельзя в том смысле, в котором вы хотите. DNAT меняет адрес назначения пакета на сетевом уровне, но не отправляет браузеру HTTP-ответ301/302. Браузер всё равно думает, что он пришёл на ваш домен/IP, а трафик просто перенаправляется на другой IP. Для настоящего редиректа нужен HTTP-сервер, который вернёт заголовокLocation.Правильная схема: Xray слушает свой порт, а на 80/443 ставится nginx/caddy. Если кто-то открывает IP/домен браузером, nginx отдаёт редирект на нужный сайт. Например для HTTP:
server { listen 80 default_server; server_name _; return 302 https://www.microsoft.com$request_uri; }
Для HTTPS всё сложнее: браузер ожидает TLS-сертификат для домена/IP, на который он заходит. Если заходят просто на IP, нормального сертификата под IP обычно нет, и до HTTP-редиректа пользователь может увидеть ошибку сертификата. Для домена можно выпустить сертификат и сделать:
server { listen 443 ssl http2; server_name your-domain.example; ssl_certificate /etc/letsencrypt/live/your-domain.example/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/your-domain.example/privkey.pem; return 302 https://www.microsoft.com$request_uri; }
Если Xray использует 443, нужно развести трафик: либо Xray за nginx через stream/SNI, либо Xray на другом порту, либо reality/fallback в зависимости от вашей конфигурации. Просто повесить и nginx, и Xray на один 443 без согласованной схемы нельзя.
nftables может только перенаправить порт на локальный nginx, например с 80 на 8080, но сам редирект всё равно делает nginx:
nft add rule ip nat prerouting tcp dport 80 redirect to :8080
Итог: DNAT на IP Microsoft не даст нормальный браузерный редирект. Поднимите nginx/caddy и отдавайте
301/302. Для HTTPS нужен домен и сертификат, а если на 443 уже работает Xray, сначала продумайте разделение Xray и веб-сервера.