前言:

为啥会有这个教程,是因为朋友前两天,问我他的qb怎么调整都无法链接到憨憨的tracker,还有两个站点也无法正常链接站点的tracker,我说你在那个地区 他说江苏,我忽然想起来江浙沪的网络可能比较严苛,所以才想到了一个很久很久以前的方案,当然因为特殊原因,他的网络不能梯,所以才有了今天的方案,也共享给有相似的小伙伴使用。

此方案使用的是sniproxy 正向代理,加stunnel加密,加修改hosts实现,本来我是不打算加入stuneel的,但是发现只是sniproxy并不能正常通讯,所以加了stunnel加密。

注意此方案需要一个其他地区的vps,国内国外都可以,可以在现有VPS搭建,也可以新购入,会产生额外费用,大家如果不想额外花钱的,就不需要往下看了,也可以和小伙伴合购。

这里我推荐一个我用的VPS,顺便赚点推广费 我这里用的服务器推广链接https://yuyunkj.com/aff/TBVSNBOB

这里我选的是:

共享300Mbps 足够我们用了,不过是电信的宽带给100G防御,如果大内网的用户,还可以顺带做一个端口穿透,一机多用。

购买地址:https://yuyunkj.com/cart?fid=3&gid=44

教程:

这里我使用的是Ubuntu22,系统使用docker搭建sniproxy和stunnel。

这里使用的sniproxy和stunnel,是多年前我制作的镜像,年代有点久远,但是不影响我们使用。

我们先配置stunnel,因为stunnel 是需要证书加密的,所以我们先生成个证书给stunnel。

创建根证书CA:
# 创建一个 CA 的私钥
openssl genrsa -out ca.key 4096

# 创建一个自签名的 CA 证书(有效期 10 年)
openssl req -x509 -new -nodes -key ca.key -sha256 -days 3650 -out ca.crt

# 填写 CA 证书信息(Common Name 可以为 "服务器域名")
  • ca.key 是 CA 的私钥(不要泄露)。
  • ca.crt 是 CA 的公钥证书,供客户端验证使用。

除了Common Name写域名,其他都可以胡诌。

创建服务器证书:

服务端密钥

openssl genrsa -out server.key 2048

服务端的证书签名请求(CSR)

openssl req -new -key server.key -out server.csr

注意Common Name (CN)要写域名,或者服务端IP图我就不放了和根过程一样。

使用 CA 签署服务端证书:
openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 -sha256
合并证书为PEM:
cat server.crt server.key > server.pem

到此,服务端的证书我们就准备好了。

创建stunnel配置文件:

这里因为都是容器跑的,所以我们找一个路径存放stunnel的证书和配置文件,教程以/appdata/stunnel为例,其他存放地区的,请自行修改。

client = no


[http]
accept = 1880 
connect = sniproxy:80 
cert = /etc/stunnel/cert/server.pem


[https]
accept = 1443 
connect = sniproxy:443 
cert = /etc/stunnel/cert/server.pem

配置文件这里,不需要过多解释,accept可以根据自身情况修改,因为1880和1443是对外端口,也就是给客户端链接用的,其他默认即可。

在配置docker之前,检查一下路径,是否是如下结构。

创建docker-compose.yaml

因为sniproxy,我直接内部写好了配置文件,是所有请求都允许的,所以这里就不需要去映射配置文件,直接用即可。

services:
  sniproxy:
    container_name: sniproxy
    image: rsg2019/sniproxy
    environment:
      - "TZ=Asia/Shanghai"
    restart: always
  stunnel:
    image: rsg2019/stunnel
    container_name: "stunnel"
    restart: always
    ports:
      - "1880:1880"
      - "1443:1443"
    volumes:
      - "/appdata/stunnel:/etc/stunnel"
    environment:
      - "TZ=Asia/Shanghai"

直接docker compose up -d 执行就可以跑起来了,注意因为服务器是在国内,所以可能会来不下docker镜像,这个可以去百度找个代理或者国内的镜像仓库,本站会员这里提供我的docker仓库,希望大家不要公开 小服务器撑不住。

本站会员:

隐藏内容

此处内容需要权限查看

  • 普通10金币
  • 会员免费
  • 永久会员免费推荐
会员免费查看

到此,服务端的配置内容就结束了,下面我们来处理客户端,在处理客户端的时候,我们需要把我们生成的证书下载到客户端,只要ca.crt,可以用scp命令或者winscp等工具拷贝下来,如果不会可以百度这个是基操。

因为我们用的不是受信任CA发布的证书,所以我们客户端需要使用ca.crt来验证,如果是受信任证书可以不用这么操作。

配置客户端stunnel:

这里客户端使用的也是docker在启动docker之前,我们也要向服务端那样,创建一个stunnel配置文件,以及服务端获取到的ca.crt,这里客户机的存放路径为/appdata/stunnel其他路径的请自行替换。

配置文件:

client = yes

[http]
accept = 0.0.0.0:80
connect = 服务端ip或者域名:1880
CAfile = /etc/stunnel/cert/ca.crt


[https]
accept = 0.0.0.0:443
connect = 服务端ip或者域名:1443
CAfile = /etc/stunnel/cert/ca.crt

注意红色区域是我们需要修改的地方,要修改为你服务端的ip或者域名都可

在启动前,请将服务端下载的ca.crt证书放在/appdata/stunnel/cert

创建docker-compose.yaml:
services:
  stunnel:
    image: rsg2019/stunnel
    container_name: "stunnel"
    restart: always
    volumes:
      - "/appdata/stunnel:/etc/stunnel"
    environment:
      - "TZ=Asia/Shanghai"

如果拉不下来镜像,可以使用代理或者国内镜像,本站会员可以用服务端同样方法获取。

到此客户端配置完成,我们来说说如何用在qbittorrent上。

严格来说这个方法,可以用在任何下载工具上,这里只是我常用qb所以就用qb演示了,这里我使用的方法是修改qbittorrent的容器内部的hosts。

我们先拷贝出来容器内部的hosts,以免对容器有影响,可以使用命令拷贝

docker cp qbittorrent:/etc/hosts ./

命令红色的地方qbittorrent是容器的名字,这个要根据你的容器名字进行修改, 红色的./是容器内部文件拷贝到当前操作文件夹。

我们修改一下从容器内部拷贝出来的hosts,然后在映射到容器内部。

这里注意,192.168.10.111是运行stunnel的ip 后面是不能正常访问的PT站点的tracker,这里江苏地区是最近两条不能正常访问的两个站点的tracker。

修改完成后,我们把修改好的hosts按照下面的映射方式,重新映射回到qb的容器内。

我们在去PT下载一个种子回来测试一下,看看能不能获取到tracker。

到此教程结束

结尾:

这个只是一个解决办法,面对江浙沪国强的盾的一个无奈之举,又梯子的小伙伴,也可以通过梯子来解决这个问题,或者等pt维护人员出解决方案都可,我这也是出一个解决方法,希望对大家有用,如有问题或者可以申请qq群与我交流

发表回复

后才能评论