精华帖 (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高手和网络工程师提出宝贵意见,我这样做会不会有什么问题?
图做得很丑请见谅。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2012-02-01
最后修改:2012-02-01
huansinho 写道
后来试了弃用联通的光纤,将电信机房的代理服务器指向公司原来电信的ADSL(由于上行的512所以一直用联通的光纤做服务器出口配置),结果代理服务器连公司Web服务器的端口都Telnet不通。
IDC只能指静态IP?
好贴,有意思啊~, 但偶只是素人,来参乎参乎,顶你下
电信>联通http请求,ssh后速度就快了。。。。 不是,电信把http协议搞了吧(这个可以测下嘛)
还有,不在web服务器(windows)下配置ssh,又中间加了个linux windows下ssh配置麻烦呗。。?
同求达人 |
|
返回顶楼 | |
发表时间:2012-02-07
一周了,速度依然坚挺,SSH没有断开过。
|
|
返回顶楼 | |
浏览 3510 次