Есть желание настроить использование тора через арендованную VPS с поднятым VLESS. Само подключение к тору работает только с мостами, однако хотелось бы подключаться напрямую через мою VLESS прокси без нужды в мостах.
На текущий момент использую схему VLESS - WSS - Nginx. Однако не удаётся добиться подключения через проксю (Tor Browser could not connect to Tor).
В самом браузере в настройках сети указываю socks5 прокси 127.0.0.1:1080 для vless. Результатов не дало. Также оборачивал весь трафик в vless туннель через v2rayN. Всё также, подключения нет.
Попытался на самой VPS поставить tor (apt install tor
) и проверить доступность подключения через torsocks curl ...
- подключение проходило. Не знаю, использует ли сервис тора мосты по умолчанию, но если нет, то является признаком того что с VPS сеть тора доступна и не заблокирована.
В чём может быть проблема? VLESS не поддерживает передачу тор траффика или как? Но почему? Vless же должен выглядеть как обычновенное tls подключение, особенно в схеме с nginx’ом. Нужно использовать Reality? Но так ли сильно оно будет отличаться от моей схемы, ведь у меня всё сделано через nginx с подписанным сертификатом.
Ниже приведу свои конфигурации. Хост, UUID, а также path заменил на подходящие к демонстрации эквиваленты. (my.host.com; myuuid; mypath…)
Клиент xray:
{
"log": {
},
"inbounds": [
{
"port": "1080",
"protocol": "socks",
"settings": {
"auth": "noauth",
"udp": true
}
},
{
"port": "1081",
"protocol": "http",
"settings": { }
}
],
"outbounds": [
{
"protocol": "vless",
"settings": {
"vnext": [
{
"address": "my.host.com",
"port": 443,
"users": [ { "id": "myuuid", "encryption": "none" } ]
}
]
},
"streamSettings": {
"network": "ws",
"security": "tls",
"wsSettings": { "path": "/mypath" },
"tlsSettings": { "allowInsecure": false, "serverName": "my.host.com", "fingerprint": "chrome" }
}
},
{ "tag": "direct", "protocol": "freedom", "settings": { } },
{ "tag": "blocked", "protocol": "blackhole", "settings": { } }
],
"routing": {
"domainStrategy": "IPOnDemand",
"rules": [
{
"type": "field",
"ip": [ "geoip:private" ],
"outboundTag": "direct"
}
]
}
}
Сервер xray:
{
"log": {
"loglevel": "none",
"access": "/var/log/xray/access.log",
"error": "/var/log/xray/error.log",
"dnsLog": false
},
"inbounds": [
{
"listen": "127.0.0.1",
"port": 8088 ,
"protocol": "vless",
"settings": {
"clients": [
{
"id": "myuuid"
}
],
"decryption": "none"
},
"streamSettings": {
"network": "ws",
"wsSettings": {
"path": "/mypath"
}
},
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls"
]
}
}
],
"outbounds": [
{
"tag": "direct",
"protocol": "freedom",
"settings": {}
},
{
"tag": "blocked",
"protocol": "blackhole",
"settings": {}
}
],
"routing": {
"domainStrategy": "IPIfNonMatch",
"rules": [
{
"type": "field",
"ip": [
"geoip:cn",
"geoip:private"
],
"outboundTag": "blocked"
},
{
"type": "field",
"domain": ["geosite:category-ads-all"],
"outboundTag": "block"
}
]
}
}
Конфигурация nginx (сделано поверх существующего конфига для одного приложения, важная часть реализующая перенаправление подключений в xray находится в location /mypath
):
upstream myhost {
server unix:/srv/.venvs/myhost/run/gunicorn.sock fail_timeout=0;
}
server {
server_name my.host.com;
listen 80;
return 301 https://my.host.com$request_uri;
}
server {
server_name my.host.com;
listen 443 ssl;
listen 443 quic reuseport ipv6only=off;
ssl_protocols TLSv1.3 TLSv1.2;
ssl_certificate /etc/letsencrypt/live/my.host.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/my.host.com/privkey.pem;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GC M-SHA384;
client_header_timeout 5m;
keepalive_timeout 5m;
client_max_body_size 15M;
access_log /var/log/myhost/nginx/access/access.log;
error_log /var/log/myhost/nginx/error/error.log;
location /mypath {
if ($http_upgrade != "websocket") {
return 404;
}
proxy_pass http://127.0.0.1:8088;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 5d;
}
location /static/ {
alias /srv/myhost/static/;
}
location / {
proxy_pass http://myhost/;
proxy_http_version 1.1;
proxy_connect_timeout 1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}