解决电信访问国外慢的方法
2015-08-21 | 标签: | 8 Comments
|应要求写这篇 blog,虽然标题是“电信”,但也适用联通/移动/各类 ISP。
从今年下半年开始,上海电信等国内 ISP 访问国外网站就很慢,Yculer 也遇到同样的问题,过去只是个别网站需要开代理访问,现在是绝大部分国外网站半天都加载不了网页,严重影响工作。
解决方法说来并不复杂,你需要一台在国内的 VPS、一台在境外的 VPS,通过国内 VPS 中转境外 VPS 上架设的代理,换言之用国内“跳板”绕开你本地网络的出国瓶颈。
具体实现的方法有很多,比如 socat / HAProxy 等等。Yculer 偏向于 tcptunnel,一个用 c 语言写的 TCP 隧道程序(端口转发),性能稳定,占用资源少,支持 buffer、fork和长连接。
1. 安装 tcptunnel:
cd /usr/local/src git clone https://github.com/vakuum/tcptunnel.git cd tcptunnel ./configure make && make install
2. 假设国内 vps 的端口为 1080,境外 vps 的 ip 地址为 106.187.96.1,端口为 1081,运行 tcptunnel:
/usr/local/src/tcptunnel/tcptunnel --local-port=1080 --remote-port=1081 --remote-host=106.187.96.1 --fork --buffer-size=8192 --stay-alive
这样你访问国内 vps 的 1080 端口时,所有的 tcp 流量都会转发到 106.187.96.1 的 1081 端口。
后面的内容应该不需要指点了吧,在 106.187.96.1 的 1081 端口上架设你习惯使用的代理,然后通过国内 vps 的 1080 端口连接它。
上一下对比,无中转加速的情况:
wget http://speedtest.tokyo.linode.com/100MB-tokyo.bin --2015-08-21 10:53:02-- http://speedtest.tokyo.linode.com/100MB-tokyo.bin Resolving speedtest.tokyo.linode.com (speedtest.tokyo.linode.com)... 106.187.96.148, 2400:8900::4b Connecting to speedtest.tokyo.linode.com (speedtest.tokyo.linode.com)|106.187.96.148|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 104857600 (100M) [application/octet-stream] Saving to: ‘100MB-tokyo.bin’ 1% [> ] 1,981,586 30.2KB/s eta 37m 16s
速度实在太慢,Yculer 表示“无力吐糟”,以下是中转后的速度:
/usr/bin/proxychains4 wget http://speedtest.tokyo.linode.com/100MB-tokyo.bin [proxychains] config file found: /etc/proxychains.conf [proxychains] preloading /usr/lib/libproxychains4.so [proxychains] DLL init: proxychains-ng 4.10-git-10-g2237749 --2015-08-21 11:06:30-- http://speedtest.tokyo.linode.com/100MB-tokyo.bin Resolving speedtest.tokyo.linode.com (speedtest.tokyo.linode.com)... 224.0.0.1 Connecting to speedtest.tokyo.linode.com (speedtest.tokyo.linode.com)|224.0.0.1|:80... [proxychains] Strict chain ... 127.0.0.1:1083 ... speedtest.tokyo.linode.com:80 ... OK connected. HTTP request sent, awaiting response... 200 OK Length: 104857600 (100M) [application/octet-stream] Saving to: ‘100MB-tokyo.bin’ 100%[==================================================================>] 104,857,600 11.0MB/s in 11s 2015-08-21 11:06:41 (9.50 MB/s) - ‘100MB-tokyo.bin’ saved [104857600/104857600]
基本可以跑满最大带宽 100 Mbps。
特别提醒:
1. Socat、HAProxy 甚至 iptables 都可以实现类似的功能,这里没有“黑科技”,最终决定性能的还是网络质量。
2. 文章中使用的网络资源由 Qingcloud 、Krypt 和 Linode 提供。
3. Yculer 也提供现成的中转,欢迎 Email 我们 yculer@fastmail.com 或 提交工单。
请问这个需要什么操作系统,我刚才在阿里云按照以上方法,安装不了。
linux都可以
请问,国内跳板的带宽决定国外的服务速度吧?
比如国外是G口,国内如果想要达到满速也需要G口?
当然咯,国内一般不提供G口,有100mbps就很可以了。
不太懂“云主机”和“CDN”加速是什么意思,求解释。
如果是玩游戏或者上油管和维特,该用什么
云主机和cdn都是服务网站的,网络加速请使用ss代理。
这个端口可以填写一个范围么?
不可以,你可以运行多个tcptunel,或者用haproxy