ssh反向隧道实验——没有端口映射的前提下,让外网访问内网服务器

太长不看

直接跳转到新的文章总结: http://www.jianshu.com/p/edc9c408d065

有关ssh反向隧道的概念和用法详情可以google,这里不再细表,只是做一个实验。

设想这样一种场景: 在局域网中架设了一台服务器,但是又没有网关的配置权限(比如企业内部局域网内搭建的测试服务器,你又不是网管;比如校园网内部学生为学习而练习搭建的服务器等等),同时还希望外网用户能方便的访问到我这台内网服务器中,应该如何实现呢?

幸运的是这个这个需求并不少见,已经有了一些优秀的解决方案,比如本文中即将提到的ssh tunnel

服务器在局域网,没有配置路由器端口映射,想让外网访问到内网服务器。 此时外网有一个公网服务器,该服务器具有合法IP,希望借助该服务器访问到局域网,该服务器将作为用户前端服务器,外网用户访问这个服务器就可以访问到局域网内部服务器了。

以下涉及到外网服务器的IP全部打码处理

开始试验,首先按照这个资料:http://blog.zjutoe.net/?p=95 , 来简单做个小实验。 virtualbox虚拟了一个debian,就照着资料提供的命令在debian的终端上敲autossh -M 5678 -NR 19999:localhost:22 root@myserver_ip,输入密码后ssh就在前台开始监听端口了。

进入外网服务器,看一下监听端口: 在此输入图片描述

没问题!确实在远程服务器开放了一个19999端口,通过这个端口就实现了隧道,访问这个端口实际就访问了我内网服务器的22端口。显然22端口是ssh的默认端口,我们现在就来试一下: 在此输入图片描述

Very Good!成功了!在没有路由器端口映射的情况下,成功让外网访问到了内网服务器!

接下来我们继续实现我们的需求,在虚拟机上的debian搭建webserver。 使用apache做webserver,IP为192.168.1.106,为了让实验明显点,编辑了一下index.html。 局域网内部打开浏览器,访问192.168.1.106

在此输入图片描述

现在要让外网访问到这个网站,其实我不怎么会搭建socket-4a代理,只好把上面的命令改一下了,让外网服务器上19999映射到内网服务器上80端口。(其实用socket代理效果会更好,不需要再这么转端口了) 在debian服务器上把命令改成autossh -M 5678 -NR 19999:localhost:80 root@myserver_ip 这次在外网服务器测试一下,终端下用links浏览器访问一下看看 在此输入图片描述

在此输入图片描述

Good job! 发现确实OK,注意用的是http-proxy,socket-proxy需要改一些东西。 此时理论上只要用这台服务器做代理服务器,那么外网用户就可以访问到内网服务器了。

但是外网用户可能还是觉得自己去配置代理服务器太麻烦了,喜欢更加简单的操作。 那么我们可以用apache(或者nginx等其他webserver)的mod_proxy模块,把apache配置成前端代理服务器,用户访问本机的apache就相当于访问了内网服务器,这个也很简单,打开apache的mod_proxy模块,在配置文件中写上http代理的配置即可。 我是这么写的:

在此输入图片描述

按照这个配置,用户访问/proxy实际就是访问的内网服务器(可根据需要调整),实际上是不是这样呢? 迫不及待的打开本机浏览器,访问一下/proxy 在此输入图片描述

Nice!!!完全一致!! 至此完成全部实验!

转载于:https://my.oschina.net/abcfy2/blog/177094

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值