透過 https 進行普通 http 代理?

透過 https 進行普通 http 代理?

我對網路相關的東西不是很有經驗,但最近我必須深入研究它,因為我國的審查水平正在迅速提高。我在另一個國家託管 VPS,並在其中設定了 OpenVPN 和 Shadowsocks 服務。它是繞過當地審查制度並訪問禁止資源的絕佳工具,但現在我需要更複雜的東西。最近,我的 ISP 封鎖了一些 torrent 追蹤器,我在這些追蹤器上播種了數百個 torrent。現在我的 torrent 用戶端無法向這些追蹤器宣布,所以我只能使用 DHT 進行播種。我想要的是使用一些解決方法來連接到被阻止的追蹤器,但我不想將整個 torrent 流量包裝到 VPN/代理中,我希望能夠使用某種代理僅使追蹤器宣布,然後種子與我真實的IP:Port。我嘗試將我的 Deluge 用戶端設定為僅使用 Socks5-proxy(Shadowsocks) 進行追蹤器連接,但它無法按預期工作,因為追蹤器獲取我的 VPS 的 IP,而不是我真正的 IP。然後我找到了一個工作方法 - 我在我的 VPS 上以 proxy_pass 模式設定 Nginx,如下所示:

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

在我的路由器設定中,我將所有對被封鎖追蹤器的請求轉送到遠端 VPS 的連接埠 80。現在它工作正常 - 我可以透過代理向追蹤器宣布,但是追蹤器然後在標頭的幫助下將我的真實 IP 提供給對等點X-Forwarded-For,並且 DHT 沒有被破壞。但問題是它看起來像這樣:


Me -> http -> ISP -> http -> Nginx -> http -> tracker

由於追蹤器使用純 http 協議,因此整個請求都是未加密的。因此,如果願意,ISP 仍然可以看到請求的真實目的地,並使用 DPI 之類的東西來阻止它們。我想要的是這樣的:


Me -> https -> ISP -> https -> Nginx -> http -> tracker

我希望 Nginx 透過添加標頭將純 http 請求代理到追蹤器X-Forwarded-For,但在我的家庭電腦和它本身之間使用加密。我試圖天真地告訴 Nginx 在連接埠 80 上使用我的自簽名 SSL 證書,但是,顯然,我以這種方式得到了 400 錯誤:The plain HTTP request was sent to HTTPS port

有可能實現嗎?如果不使用 Nginx,也許可以使用其他工具?

答案1

我不知道如何使用反向代理程式等解決此問題,但您可以進行 ssh 連接埠轉送。因此,您保持與 vps 的 ssh 連接,並配置 ssh 將本機連接埠轉送到追蹤器的連接埠。然後,您將 torrent 應用程式配置為使用本機主機位址:連接埠而不是真正的追蹤器位址。

就像在 torrent 應用程式中一樣配置追蹤器。或您喜歡的任何其他本地端口。ssh –L 8080:the.tracker.ip:trackerport [email protected]http://localhost:8080

根據您的作業系統,您可以使用 putty 或https://github.com/daradib/sidedoor後者保持隧道開放並在中斷時自動重新連接。然後,ssh 隧道將加密通過它的所有通訊服務。

編輯:只有當 torrent 應用程式以某種方式確定公共 IP 位址本身時,而不是當追蹤器僅使用連接似乎來自的 IP 位址時,這才有效。

相關內容