Как реализовать редирект на сайт?

Ссылка скопирована
1 ответ

По вводным: есть 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 например.

Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Мария Код Ответ

Сделать 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;
}

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

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

nft add rule ip nat prerouting tcp dport 80 redirect to :8080

Итог: DNAT на IP Microsoft не даст нормальный браузерный редирект. Поднимите nginx/caddy и отдавайте 301/302. Для HTTPS нужен домен и сертификат, а если на 443 уже работает Xray, сначала продумайте разделение Xray и веб-сервера.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно