另外需要说明的是,购买的国内服务器,不需要进行备案,你可以帮定一个域名到此服务器上,填写ssr客户端也只需要使用这个域名,ssr会自动帮你查询dns,此后即便国外ssr出现端口或ip被封,也不需要更改ssr客户端的配置信息。而只需要另起一台国外服务器,修改国内中转服务器的配置信息。
如果你懂得更多编程知识,你可以在国内国外的两台服务器上进行编程,实现,当国外服务器端口被封,国内和国外服务器自动检测,若检测到端口被封,则国外服务器修改ssr配置端口,而国内服务器修改stunnel配置信息。这样,无需人为干预,也能实现长久而稳定的连接。如果有空的话,我会去探索这个方案。
1:原理说明
简单了解,可以提高你对网络的认识。
1.1 ssr网络加速原理
由于中国移动对普通用户的海外流量随机高概率丢包,导致国外流量进入国内时,走移动线路,就会有很高的丢包率。所以我们希望借助一台,属于移动vip级别的国内服务器(这样移动出海线路优先级高,不容易丢包),或者出入海走联通电信线路的服务器。通常,阿里云、腾讯云服务器都能满足要求。
国内服务器上安装stunnel,并配置为客户端。国外服务器安装stunnel服务端和ssr服务端。
1.2 降低端口被封的风险原理
stunnel是一个将流量利用ssl证书加密的软件,加密后的流量,出国时将会被识别为tls协议,因此不再具有ssr流量特点,我们常使用的https请求便基于ssl证书,此时国外服务器端口被封锁的几率将大大减小。出国后,stunnel将流量解密,再传递给ssr服务端。
通过抓取ssr流量,可以看到,ssr流量在传输过程中,由于协议加密,它不具备任何常见的网络请求特征,而你在使用ssr与海外服务器进行数据往来时,长时间的使用不具有网络请求特征的流量进行连接,很容易被防火墙识别为翻墙软件。因此被封。使用tls协议,就能够伪装为https请求,https(http协议+tls协议)。当然为了更有迷惑性,在ssr服务器端口加一个能被访问的网站是最好的。因为虽然tls协议作为https的一部分,但在实际使用中,由于没有http协议的流量,那么是能被推断出使用stunnel这类加密隧道的。如果长时间大流量访问,也有被封锁的风险。
而使用中转服务器,所付出的代价,仅仅是国内月租几块钱的服务器(阿里云、腾讯云等有学生服务器,一年一百块左右),和相当低的stunnel加解密过程所导致的延迟,此延迟几乎不可见。
2:stunnel和ssr安装
2.1 stunnel安装和配置
stunnel安装,请参见我之间的文章《利用Stunnel+squid代理实现国内无客户端访问外网》。
3.2节是在国外服务器上安装stunnel服务端。第四章,在国内服务器上安装stunnel客户端。
将ssr的流量通过stunnel加密,你需要修改配置文件。在《利用Stunnel+squid代理实现国内无客户端访问外网》安装后的stunnel基础上修改。
修改国外服务器上的stunnel服务端配置文件,在/etc/stunnel/stunnel.conf
文件里,
删除
1 | [squid-proxy] |
添加
1 | [tls2socks] |
修改国内中转服务器上的stunnel客户端配置文件,在/etc/stunnel/stunnel.conf
文件里,
删除
1 | [squid-proxy] |
添加
1 | [socks2tls] |
2.2 ssr安装和配置
ssr安装,可以参考《SSR 一键安装脚本》,在国外的服务器上安装。
ssr服务端端口需要和stunnel服务端的connect
端口保持一致。
ssr客户端配置,客户端地址,应该填写为国内服务器ip,服务端口,应填写为stunnel客户端的accept
端口(国内服务器上配置的accept = your accept port 2),例子中给的34567端口。
配置完成后,就可以连接上网了。
即便使用移动网络,也能产生非常好的连接效果,而且应该在非常久得时间里,端口都不会被封。
3:可能出现的问题
如果配置后无法上网,请检查你设置得端口,通过 https://port.ping.pe 网址检测你的端口是否开启,如果测试未开启,请修改防火墙配置,在《利用Stunnel+squid代理实现国内无客户端访问外网》中第4章有介绍。若任然没有导通,请检查云服务商的安全组是否开启了端口。
如果端口开放,而无法连接,请尝试,终止stunnel进程并重新启用。
方法1:
1 | servicer stunnel restart |
方法2:
检查stunnel的进程
1 | ps aux | grep -i stunnel |
找到进程号pid,在第二列
杀掉进程
1 | kill -9 替换为pid |
然后重新启用stunnel
1 | stunnel |
如果没有任何显示,则stunnel重启成功,且配置文件没有任何问题。否则将显示错误信息。