
Я не очень опытен в сетевых вопросах, но в последнее время мне приходится вникать в это, потому что уровень цензуры в моей стране стремительно растет. Я размещаю VPS в другой стране, на котором настроил сервисы OpenVPN и Shadowsocks. Это отличный инструмент для обхода локальной цензуры и получения доступа к запрещенным ресурсам, но теперь мне нужно что-то посложнее. Недавно мой интернет-провайдер заблокировал несколько торрент-трекеров, на которых я раздаю сотни торрентов. Теперь мой торрент-клиент не может делать анонсы на этих трекерах, поэтому я могу раздавать только с помощью DHT. Я хочу использовать какие-то обходные пути для подключения к заблокированным трекерам, но я не хочу заворачивать весь торрент-трафик в VPN/Proxy, я хочу иметь возможность использовать какой-то прокси-сервер только для анонсов трекеров, а затем раздавать с помощью моего настоящего IP:Port
. Я пытался настроить свой клиент Deluge на использование Socks5-proxy(Shadowsocks) только для трекерных подключений, но это не работает так, как ожидалось, потому что трекеры получают IP моего VPS, а не мой реальный. Затем я нашел рабочий метод - я настроил Nginx в режиме proxy_pass на моем VPS следующим образом:
http {
types_hash_max_size 4096;
server {
listen 80 default_server;
access_log off;
return 444;
}
server {
listen 80;
server_name <trackers_list>;
allow <my_home_ip>;
deny all;
access_log off;
location / {
proxy_pass http://$http_host;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
resolver 127.0.0.1;
}
}
}
В настройках роутера я перенаправил все запросы к заблокированным трекерам на порт 80 моего удаленного VPS. Теперь все работает нормально - я могу анонсировать трекерам через прокси, но трекеры потом отдают мой настоящий IP пирам с помощью заголовка X-Forwarded-For
, и DHT не ломается. Но проблема в том, что это выглядит вот так:
Me -> http -> ISP -> http -> Nginx -> http -> tracker
Поскольку трекеры используют простой http-протокол, все запросы не шифруются. Таким образом, провайдер, если захочет, все равно сможет увидеть реальное назначение запросов и заблокировать их чем-то вроде DPI. Я хочу, чтобы было так:
Me -> https -> ISP -> https -> Nginx -> http -> tracker
Я хочу, чтобы Nginx проксировал простые http-запросы к трекерам с добавлением заголовков X-Forwarded-For
, но использовал шифрование между моей домашней машиной и собой. Я пытался наивно сказать Nginx использовать мой самоподписанный SSL-сертификат на порту 80, но, очевидно, я получаю ошибку 400 таким образом: The plain HTTP request was sent to HTTPS port
.
Возможно ли это сделать? Если не с помощью Nginx, то, может быть, с помощью каких-либо других инструментов?
решение1
Я не знаю, как решить эту проблему с помощью обратного прокси или чего-то подобного, но вы можете сделать переадресацию портов ssh. Таким образом, вы сохраняете ssh-подключение к своему vps и настраиваете ssh для переадресации локального порта на порт трекера. Затем вы настраиваете свое торрент-приложение на использование localhost address:port вместо реального адреса трекера.
Лайкните и тогда трекер будет настроен как в торрент-приложении. Или любой другой локальный порт, который вам нравится.ssh –L 8080:the.tracker.ip:trackerport [email protected]
http://localhost:8080
В зависимости от вашей ОС вы можете использовать такие инструменты, как putty илиhttps://github.com/daradib/sidedoorпоследний сохраняет туннель открытым и автоматически переподключается при прерывании. Затем туннель ssh будет шифровать все коммуникации, проходящие через него.
Редактировать: это работает только в том случае, если торрент-приложение каким-то образом само определяет публичный IP-адрес, а не тогда, когда трекер просто использует IP-адрес, с которого, по-видимому, происходит соединение.