如何利用外网服务器和本地内网机搭建反向隧道?
一、建立反向隧道的原因和目的
因要做微信支付和支付宝支付,这两个支付在用户支付完成后,都会将支付结果推送到我放服务器上,而我们的开发服务器一般位于公司路由器后,外网无法访问到,这时有四中解决方法。
方法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如何在添加完毕连接后进行修改?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
2013-05-06 在线JS/CSS/HTML压缩
2013-05-06 Kettle连接Mysql数据库异常
2012-05-06 解决myeclipse不编译的方法