解决电信访问国外慢的方法

| | 标签: | 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. 文章中使用的网络资源由 QingcloudKrypt Linode 提供。

3. Yculer 也提供现成的中转,欢迎 Email 我们 yculer@fastmail.com提交工单。

分类:未分类

8 comments

  1. alex 8月 21st, 2015 at 下午 12:56

    请问这个需要什么操作系统,我刚才在阿里云按照以上方法,安装不了。

  2. 歪酷人 8月 21st, 2015 at 下午 1:32

    linux都可以

  3. tttt 10月 12th, 2015 at 下午 1:58

    请问,国内跳板的带宽决定国外的服务速度吧?
    比如国外是G口,国内如果想要达到满速也需要G口?

  4. 歪酷人 1月 7th, 2016 at 上午 10:28

    当然咯,国内一般不提供G口,有100mbps就很可以了。

  5. 夺命奇犽 11月 13th, 2015 at 下午 5:05

    不太懂“云主机”和“CDN”加速是什么意思,求解释。
    如果是玩游戏或者上油管和维特,该用什么

  6. 歪酷人 1月 7th, 2016 at 上午 10:27

    云主机和cdn都是服务网站的,网络加速请使用ss代理。

  7. kevin 1月 5th, 2016 at 上午 10:33

    这个端口可以填写一个范围么?

  8. 歪酷人 1月 7th, 2016 at 上午 10:27

    不可以,你可以运行多个tcptunel,或者用haproxy

发表评论