Почему лучше не использовать dest за CDN в XTLS-Reality
REALITY — усовершенствованный форк TLS; реализует полный TLS 1.3 с определенным SNI веб-сайта для маскировки, при этом сохраняя внешний вид трафика, аналогичный обычному TLS 1.3.
REALITY по умолчанию пересылает все SNI, dest
(target
) используется только для определения назначения. Это происходит потому, что блокировка определенных SNI для пересылки уже сама по себе является характерной особенностью. А как мы знаем, цель маскировки — спрятать дерево в лесу.
Например:
curl --connect-to ::www.speedtest.net: https://www.cloudflare.com -I
Соединяемся с IP-адресом speedtest.net, но отправляем SNI cloudflare.com. В результате откроется cloudflare.com.
REALITY с dest=www.speedtest.net
или любым dest за CDN ведет себя аналогично.
Что делать
1.
Не использовать сайт за CDN в качестве маскировочного.
2.
Поставить перед xray-core любой прокси типа nginx или haproxy и ввести белый список SNI, чтобы предотвратить злоупотребление и риск поведения, отличающегося от dest.
stream {
map $ssl_preread_server_name $backend {
super-site.com reality;
default 127.0.0.1:9999;
}
upstream reality {
server 127.0.0.1:14000;
}
server {
listen 443 reuseport so_keepalive=on;
ssl_preread on;
proxy_pass $backend;
proxy_protocol on;
}
}
3.
Надеяться, что ваш сервер не найдут и не начнут гонять через него терабайты трафика.