文档章节

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

Feng_Yu
 Feng_Yu
发布于 2013/11/18 00:13
字数 1090
阅读 32681
收藏 252

太长不看

直接跳转到新的文章总结: 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!!!完全一致!! 至此完成全部实验!

© 著作权归作者所有

共有 人打赏支持
Feng_Yu
粉丝 157
博文 38
码字总数 45571
作品 0
西安
运维
私信 提问
加载中

评论(43)

o
osos

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

为什么能装autossh就不能搞个nginx

不要总关注这些无意义的东西好吧。这个实验是在说没有路由器的权限的情况下如何让外网访问内网服务器,和用不用nginx有什么关系?

能装软件用专业软件搞不行吗,为什么还要SSH

不先打通隧道你怎么让外网访问到内网?

反向代理啊,你用apache或者nginx都比这个强好吧,你有没有思考过这个问题ssh只能做1个,http服务的能做多个,。说句实在话,你思考的问题,我估计很多人思考过了

你没有考虑到点上,服务器在内网,没有合法IP,没有路由器的NAT权限。外网不可能直接访问到内网,你的反向代理根本无法生效。

方法太多了VPN,内网灰鸽子上线都是这个原理

好吧,呵呵……
他完全没有搞明白是怎么回事。
z
zhiying6789
nice
Feng_Yu
Feng_Yu

引用来自“自主创新”的评论

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

为什么能装autossh就不能搞个nginx

不要总关注这些无意义的东西好吧。这个实验是在说没有路由器的权限的情况下如何让外网访问内网服务器,和用不用nginx有什么关系?

能装软件用专业软件搞不行吗,为什么还要SSH

不先打通隧道你怎么让外网访问到内网?

反向代理啊,你用apache或者nginx都比这个强好吧,你有没有思考过这个问题ssh只能做1个,http服务的能做多个,。说句实在话,你思考的问题,我估计很多人思考过了

你没有考虑到点上,服务器在内网,没有合法IP,没有路由器的NAT权限。外网不可能直接访问到内网,你的反向代理根本无法生效。

方法太多了VPN,内网灰鸽子上线都是这个原理

好吧,呵呵……
自主创新
自主创新

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

为什么能装autossh就不能搞个nginx

不要总关注这些无意义的东西好吧。这个实验是在说没有路由器的权限的情况下如何让外网访问内网服务器,和用不用nginx有什么关系?

能装软件用专业软件搞不行吗,为什么还要SSH

不先打通隧道你怎么让外网访问到内网?

反向代理啊,你用apache或者nginx都比这个强好吧,你有没有思考过这个问题ssh只能做1个,http服务的能做多个,。说句实在话,你思考的问题,我估计很多人思考过了

你没有考虑到点上,服务器在内网,没有合法IP,没有路由器的NAT权限。外网不可能直接访问到内网,你的反向代理根本无法生效。

方法太多了VPN,内网灰鸽子上线都是这个原理
Feng_Yu
Feng_Yu

引用来自“自主创新”的评论

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

为什么能装autossh就不能搞个nginx

不要总关注这些无意义的东西好吧。这个实验是在说没有路由器的权限的情况下如何让外网访问内网服务器,和用不用nginx有什么关系?

能装软件用专业软件搞不行吗,为什么还要SSH

不先打通隧道你怎么让外网访问到内网?

反向代理啊,你用apache或者nginx都比这个强好吧,你有没有思考过这个问题ssh只能做1个,http服务的能做多个,。说句实在话,你思考的问题,我估计很多人思考过了

反向代理需要你的服务器能访问到被代理端。现在的问题是服务器在内网,外网根本无法直接访问,何来反向代理一说?我的问题的确是有很多人想过了,那么结果就是我的实验要证明的——利用ssh tunnel。ssh的作用是在路由器端开一个“洞”,作为内网和外网之间的隧道。这个实验是为了证明这个方案的可行性。打通了ssh tunnel之后,这台服务器已经可以作为代理服务器访问到内网服务器了,只不过觉得用户手工配置代理服务器不方便,才有了最后利用apache的反向代理通过ssh tunnel访问到内网服务器的做法。
Feng_Yu
Feng_Yu

引用来自“自主创新”的评论

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

为什么能装autossh就不能搞个nginx

不要总关注这些无意义的东西好吧。这个实验是在说没有路由器的权限的情况下如何让外网访问内网服务器,和用不用nginx有什么关系?

能装软件用专业软件搞不行吗,为什么还要SSH

不先打通隧道你怎么让外网访问到内网?

反向代理啊,你用apache或者nginx都比这个强好吧,你有没有思考过这个问题ssh只能做1个,http服务的能做多个,。说句实在话,你思考的问题,我估计很多人思考过了

你没有考虑到点上,服务器在内网,没有合法IP,没有路由器的NAT权限。外网不可能直接访问到内网,你的反向代理根本无法生效。
自主创新
自主创新

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

为什么能装autossh就不能搞个nginx

不要总关注这些无意义的东西好吧。这个实验是在说没有路由器的权限的情况下如何让外网访问内网服务器,和用不用nginx有什么关系?

能装软件用专业软件搞不行吗,为什么还要SSH

不先打通隧道你怎么让外网访问到内网?

反向代理啊,你用apache或者nginx都比这个强好吧,你有没有思考过这个问题ssh只能做1个,http服务的能做多个,。说句实在话,你思考的问题,我估计很多人思考过了
Feng_Yu
Feng_Yu

引用来自“自主创新”的评论

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

为什么能装autossh就不能搞个nginx

不要总关注这些无意义的东西好吧。这个实验是在说没有路由器的权限的情况下如何让外网访问内网服务器,和用不用nginx有什么关系?

能装软件用专业软件搞不行吗,为什么还要SSH

不先打通隧道你怎么让外网访问到内网?
自主创新
自主创新

引用来自“Feng_Yu”的评论

引用来自“自主创新”的评论

为什么能装autossh就不能搞个nginx

不要总关注这些无意义的东西好吧。这个实验是在说没有路由器的权限的情况下如何让外网访问内网服务器,和用不用nginx有什么关系?

能装软件用专业软件搞不行吗,为什么还要SSH
Feng_Yu
Feng_Yu

引用来自“自主创新”的评论

为什么能装autossh就不能搞个nginx

不要总关注这些无意义的东西好吧。这个实验是在说没有路由器的权限的情况下如何让外网访问内网服务器,和用不用nginx有什么关系?
无路由权限的情况下让外网访问内网服务器——SSH反向隧道

今天朋友跟我探讨了一个这样的问题。他目前在一个校园网内部环境,学生都是有好奇心理的,在局域网内部用自己的电脑搭建了一台服务器,想让外网用户访问。 很显然,他并没有校园网路由器的配...

Feng_Yu
2013/11/16
0
0
调试利器-SSH隧道

在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到源码修改后的运行结果。但当涉及到需要调用...

吴浩麟
2017/11/03
0
0
调试利器-SSH隧道

在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分接口需要通过线上域名才能正常访问。但我们一般都会在本地开发,因为这能快速的看到源码修改后的运行结果。但当涉及到需要调用...

浩麟
2017/11/03
0
0
调试利器:SSH隧道

欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 本文作者:ivweb 吴浩麟 原文出处:IVWEB社区 未经同意,禁止转载 在开发微信公众号或小程序的时候,由于微信平台规则的限制,部分...

腾讯云社区
2017/11/28
0
0
如何部署 Hyperic ,使得从内网监测外网服务器

环境介绍: 外网服务器: www.InnovateDigital.com 用户名/密码 test/test 内网服务器:192.168.1.125 操作系统都是 Centos 7 64bit 过程: 下载 Hyperic 5.8.5 ,点击 该链接 安装Hyperic S...

MartinKing
2016/06/01
293
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 没时间 没头发 但有钱

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @开源中国总经办主任 :分享齐一的单曲《这个年纪》 《这个年纪》- 齐一 手机党少年们想听歌,请使劲儿戳(这里) @肿肿卷 :我真的可以睡一天...

小小编辑
43分钟前
11
4
Django进阶 1.1 ORM基础—ORM 1.2.1 增删改查之查询 1.2.2 删改增 (1) 1.2.3 删改增 (2)

ORM基础 ORM是Django操作数据库的API,Django的作者将sql语句封装在里面供我们使用。 我们前面还提到过Django提供一个模拟数据库的工具,sqlite,供我们学习测试使用。 如果我们想使用mysql...

隐匿的蚂蚁
今天
3
0
Windows 上安装 Scala

在安装 Scala 之前需要先安装 Java 环境,具体安装的详细方法就不在这里描述了。 您可以自行搜索我们网站中的内容获得其他网站的帮助来获得如何安装 Java 环境的方法。 接下来,我们可以从 ...

honeymose
今天
3
0
数据库篇多表操作

第1章 多表操作 实际开发中,一个项目通常需要很多张表才能完成。例如:一个商城项目就需要分类表(category)、商品表(products)、订单表(orders)等多张表。且这些表的数据之间存在一定的关系...

stars永恒
今天
3
0
nginx日志自动切割

1.日志配置(Nginx 日志) access.log----记录哪些用户,哪些页面以及用户浏览器,IP等访问信息;error.log------记录服务器错误的日志 #配置日志存储路径:location / {      a...

em_aaron
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部