之前使用的nginx伪装流量,后来发现是有问题的,很快就被封了。
之前的思路是,机器保留443端口,然后使用ssr去链接跳板机的443端口,如果是ssr协议,就转发到本地的ssr服务,如果是http请求,就返回对应的页面。
这么做存在一个漏洞,所有经过443端口的流量都会被探测到,如果检测到ssr的特征,就会直接导致机器的端口被封,连不上。而443和80又是被检测的高风险端口
我们可以通过以下的思路来限制
这里我们使用自定义端口,然后只允许通过国内的机器访问(nginx指定ip),这里我们在客户端连接的时候,连接的是国内的nginx暴露出来的端口,然后国内nginx再把流量转发到国外的nginx指定端口,国外nginx再把流量转发到本机的ssr服务,这样从外界看起来,直接简单的对nginx的访问,而且因为使用的是自定义的端口,除非是对机器所有端口扫描,否则是很难去探测到的。
对我们来说,实现这些东西,需要两台机器,一台国内机器,一台国外机器,并且都需要安装nginx,并且开放指定的端口访问权限,国外的机器需要安装需要转发的流量,如ssr。
国内nginx配置
1 | stream { |
修改完配置文件以后,记得使用命令重启nginx,让修改生效
1 | nginx -s reload |
国外nginx配置
1 | stream { |
ssr配置
ssr设置端口,然后nginx转发过来,具体配置依靠各自的ssr实现方式