论坛首页 综合技术论坛

利用SSH隧道加速电信和联通网络之间的通信速率

浏览 3511 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2012-01-31   最后修改:2012-01-31

首先要吐槽一下电信和联通的网络之间通信真是让人吐血!

 

 

场景:

公司内部有一台Windows的Web服务器,由于域名备案的关系暂时只能屈居公司的小机房。但可悲的办公楼只能拉联通的光纤(其他运营商只能拉ADSL)。通过网管配置好端口映射以后就可以从外网访问。

 

服务放开出去以后就发现打开速度慢到难以接受。事前其实也是知道不同网络运营商之间的通信是不好,可没想到会如此糟糕。

图一是直接从外部访问公司内部的服务器速度很慢,但内网是很快,说明程序和服务器是没有问题的。

 

 


 

图一

 

 

后来我在电信IDC机房找到一台Linux服务器配了Nginx做代理服务器,初始情况有所改善。但是也有访问很慢的时候,比图一定时候好。

 


图二

 

后来试了弃用联通的光纤,将电信机房的代理服务器指向公司原来电信的ADSL(由于上行的512所以一直用联通的光纤做服务器出口配置),结果代理服务器连公司Web服务器的端口都Telnet不通。

 

后来突发奇想:我用联通的网络通过SSH连接到电信的Linux服务器速度还不错,是否能够在代理服务器那边连接一条SSH连接到公司的接口机,然后转发公司内网的那台Web服务器的80端口。

 

方案如下:

 


图三

 

 

 

 

具体操作:

 

1. 登录电信的代理服务器(Linux操作系统)

2. 在代理服务器使用SSH登录公司内部的接口机

 

ssh -tt -L 7003:192.168.1.100:7001 www@120.85.140.101

(说明:将内网Web服务器192.168.1.100的7001端口转发到本机的7003端口) 

3. 由于SSH做的端口转发不可以被服务器外部所访问,所以这里我们加多一层代理将7003端口转发为80端口,我用的是linux下的rinetd程序转发7003端口到80的。

/etc/rinetd.conf 配置如下

 

0.0.0.0 80 127.0.0.1 7003
 

启动rinetd以后就可以访问代理服务器的80端口,嘻嘻~~~实际访问的是公司内网的Web服务器,而且速度极快,和内网差不多。

 

 

通过上面3个步骤应该可以说SSH隧道这个方法是可行的。接下来我们要这个做成后台服务,因为SSH连接是可能会断开的,一旦断开意味着服务也随之中断。

 

好在公司有一个C语言写的主控程序:我们通过主控程序来启动SSH端口转发这条命令(记得加上-tt参数否则会自动退出SSH连接),SSH端口转发如果退出主控程序会再次执行SSH端口转发这条命令,保证服务不会因为SSH退出而中断。

 

 

 

 

 

2012-01-30下午部署这套方案到现在还是很稳定。希望它管用吧。

 

 

请Linux高手和网络工程师提出宝贵意见,我这样做会不会有什么问题?

 

 

图做得很丑请见谅。

  • 大小: 31.7 KB
  • 大小: 43.6 KB
  • 大小: 63.2 KB
   发表时间:2012-02-01   最后修改:2012-02-01
huansinho 写道

后来试了弃用联通的光纤,将电信机房的代理服务器指向公司原来电信的ADSL(由于上行的512所以一直用联通的光纤做服务器出口配置),结果代理服务器连公司Web服务器的端口都Telnet不通。

 

 

IDC只能指静态IP?

 

好贴,有意思啊~,

但偶只是素人,来参乎参乎,顶你下

 

电信>联通http请求,ssh后速度就快了。。。。

不是,电信把http协议搞了吧(这个可以测下嘛)

 

还有,不在web服务器(windows)下配置ssh,又中间加了个linux

windows下ssh配置麻烦呗。。?

 

同求达人

0 请登录后投票
   发表时间:2012-02-07  
一周了,速度依然坚挺,SSH没有断开过。
0 请登录后投票
论坛首页 综合技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics