关于TCP阻断
在国外VPS服务器上搭建Shadowsocks/ShadowdsocksR,如果设置不当,有一定的机率会被GFW墙掉。
如何避免被墙?可以参考:安全使用SSR的一些注意事项 避免VPS服务器被墙
服务器被墙分为几个级别,其中TCP阻断是目前较为主流的封锁方式。如何检测VPS是否被TCP阻断,可以点此查看。
TCP阻断的表现形式:
- 可以正常ping通(ICMP协议正常)。
- 不能正常SSH连接,换端口也不行。
- 不能正常使用SS/SSR服务,换端口也不行。
- 不能打开服务器上架设的网站。
- 在国外连接以上各项服务,一切正常。
解决TCP阻断的思路
在TCP阻断的封禁模式下,国外服务器上的所有TCP流量,都无法在国内正常连接。而SSH、HTTP流量、SS/SSR流量,走的恰好就是TCP流量。
在TCP流量被阻断的同时,其它协议,比如ICMP、UDP等流量,是可以正常连接的。
根据以上情况,我们可以将服务器上的Shadowsocks/ShadowsocksR使用的TCP流量,在服务器内部转化为UDP流量发出来。经过这样转化后,就可以正常在国内连接了。
解决TCP阻断的两种方法
根据以上思路,下面我们提供两种具体方案:
方案一:在VPS服务器上安装KCPTUN
KCPTUN是一款服务器网络加速工具,加速效果极为明显,开发本意并不是用来解决IP被墙、服务器被TCP阻断的。
但是KCPTUN的一大特点,就是将服务器某个端口的TCP流量,转变为KCPTUN协议的UDP流量发出,所以正好可以用来解决TCP阻断问题。
KCPTUN的运行,需要分别使用服务器端和客户端,连接成功后,就可以突破TCP阻断,顺便享受网络加速效果。
KCPTUN服务器端一键安装:
提示:KCPTUN在服务器上安装比较简单,并且不挑架构(OVZ/KVM),不挑系统(CentOS/Debian/Ubuntu)。
KCPTUN各平台客户端下载:
方案二:在服务器上安装V2ray科学上网
V2ray是科学上网领域的后起之秀,自带mkcp加速,可以选择流量以TCP协议发出,或是UDP协议发出。
由于以上特点,我们将V2ray设置为使用UDP流量,就可以解决服务器TCP阻断问题。
V2ray服务器端一键安装:
提示:在部分服务器系统版本中,可能会安装不成功,建议在纯净系统安装。
V2ray各平台客户端下载:
如何将V2ray流量以UDP协议发出:
以V2ray Windows客户端为例,将V2ray服务器连接参数中的如下两项:
- 传输协议:选择kcp
- 伪装类型:任选其一
以上为V2ray客户端设置,服务端也有传输协议设置,不要选择默认的TCP,可以设置为mkcp。
经过以上设置后,V2ray的流量,将以UDP的形式发出,也可以避开TCP阻断。
SSH端口还是无法连接?
以上两种方案,只能解决SS/SSR所用端口的流量转换,并不能解决其它端口的TCP流量被阻断问题。
也就是说,设置之后,可以正常科学上网,但是直接SSH连接服务器,可能还是连不上,无法用Winscp/Putty等工具对服务器进行管理。
如何解决:
VPS服务器可以正常科学上网后,可以采取 自己代理自己 的方式,即通过相关设置,让Winscp/Putty,通过同一服务器上的SS/SSR/V2ray代理中转连接,连接成功后就可以正常使用了。
相关内容可以参考: