如何利用外网服务器和本地内网机搭建反向隧道?
一、建立反向隧道的原因和目的
因要做微信支付和支付宝支付,这两个支付在用户支付完成后,都会将支付结果推送到我放服务器上,而我们的开发服务器一般位于公司路由器后,外网无法访问到,这时有四中解决方法。
方法1,直接将外网网络接入你的开发机器,这样外网可以直接访问了,缺点是公司其他同事都无法上网了。
方法2,在路由器上做NAT转发,这样同样可以在外网访问了,缺点是要有路由器的访问权,其次如果是多级路由的话,配置比较复杂。
方法3,直接在有外网的服务器上做开发或者测试,比如代码写完了打包部署到外网服务器上进行测试。缺点是无法很好的对代码进行调试。
方法4,利用外网服务器做反向隧道,缺点是需要拥有一台外网服务器,不过现在阿里云已经提供了按量付费的按量服务器,可以选择1C1G版本即可。
恰好前段时间阿里云搞活动,1C2G服务器购买3年仅需298元,还送1M网络,而推荐的人则获得1C2G1M服务器一台3个月。刚好有同事需要购买,就用了我的推荐,所以就有了一台带有外网的服务器。
二、反向隧道环境
建立反向隧道需要的环境
1.带有外网的Linux服务器一台,此处选择阿里云ECS,CentOS7系统
2.Windows版本的XShell5软件
三、如何搭建反向隧道?
反向隧道的搭建分两步,一是服务端配置文件配置,允许服务器进行反向隧道(服务本身默认是关闭的,需要打开)。二是本地XShell进行反向隧道的配置。
a.服务端反向隧道配置
进入配置修改,主要是vim的操作
vim /etc/ssh/sshd_config
按insert键进入编辑功能,在配置最后面添加一行,并输入一下内容
GatewayPorts clientspecified
按ECS退出编辑功能,输入 :wq,按回车进行保存,同时要使用重新加载配置的方法,使得新设置生效。因本人是Linux小白,此处并不知道如何加载,但我还有终极武器,重启服务器。
reboot
服务器重启后,配置自动生效。
b.本地XShell配置
本地配置主要体现在连接、隧道、跟踪三个类别上,具体看图,第一张图的重连最好打上√,第三张图是为点击新增功能。
配置连接,设置连接名称、账号、密码
真正的重头戏,设置隧道,此处不要设置错了,隧道有两种方式,一种是从远程到本地,一种是从本地到远程,此文章只讲从远程到本地的配置,所以按照顺序来。
侦听端口填写要访问的外网端口,目标端口填写局域网内本地计算机提供服务的端口。默认网站端口为80。如果访问不同,并且使用的是阿里云的服务器,需要登录控制台看看是否有打开对应的端口。
至此配置结束,下面看看反向隧道是否建立成功。
看看转移规则是否为上图所示。看看提示是否如下图所示。
最后测试下联通性,请在本地配置好服务,并设置好访问地址和端口。我使用的是IIS,配置的本地和外网的端口均为80,最后测试结果如下图所示,左边是访问服务器的页面,右边是本地访问的页面。服务器上并未配置任何网站,并且站点是.NET的,并不能在Linux上部署。所以真实的反映了本次配置的结果:成功!
附录:XShell如何在添加完毕连接后进行修改?