在不采用第三方服务(如51mypc、teamviewer)的情况下,通过建立反向ssh tunnel 和反向代理服务器实现在任何地方访问公司网络。

原理图如下(此图是对网络上的图片处理过):

以下是具体操作步骤:
一、实现远程ssh到内网120
1.1 建立到公网主机22的反向连接
lai@120:~$ ssh -p 6120 -NfR 60.*.*.22:10086:localhost:22  www-data@60.*.*.22
1.2 在任何client上用ssh连接22主机的10086端口,以www-data用户(其他用户也可以,但用户名和密码都是指120上的,而不是公网主机22上的)连接,这样就可以以www-data身份登陆120。
lai@196:~$ ssh -p 10086 www-data@60.*.*.22
二、用apache的Proxy Module搭建反向代理服务器来转发请求到相应虚拟主机来实现远程访问公司内部开发测试网站
2.1 建立到公网主机22的反向连接,使其监听10000端口
lai@120:~$ ssh -p 6120 -NfR 60.*.*.22:10000:localhost:8080  www-data@60.*.*.22
2.2 在120上搭建指向相应虚拟主机的反向代理服务器
#反向代理
<VirtualHost *:8080>
ServerAdmin admin@163.com
ProxyRequests Off
ProxyPass / http://tv120.test.com/
ProxyPassReverse / http://tv120.test.com/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
ServerName 192.168.0.120
</VirtualHost>
2.3 在任何client上直接用浏览器访问22的10000端口即可
http://60.*.*.22:10000/
三、问题及解决方法:
3.1 默认情况下建立的tunnel在ssh session空闲一段时间后会断开连接(俗称掉线),掉线后client就无法访问内网了。
解决方法:
a.将建立反向连接的命令写到脚本,然后设置crontab每2小时执行,并将该脚本加入到开机自启动
# more reverse_ssh_tunnel.sh 
#!/bin/sh
COMMAND="ssh -p 6120 -NfR 60.*.*.22:10086:localhost:22  www-data@60.*.*.22"
pgrep -f -x "$COMMAND" > /dev/null 2>&1 || $COMMAND
b.使用开源的autossh工具实现建立的tunnel永久掉线
#autossh -M 9000 -p 6120 -NfR 60.*.*.22:10086:localhost:22  www-data@60.*.*.22
3.2 安全方面,整个通信过程都是在加密的tunnel中进行传输的,需要增加的安全措施是:要保证在公网22主机上开启的端口不是常见端口,并且要增加120上用户密码的复杂性。
3.3 在访问120上的虚拟主机时,如果是需要登录的网站会出现登录不上的问题,而访问不需要登录的网站和正常访问没有区别。
3.4 流量问题。由于建立的到内网的连接需要经过公网主机22,故在远程访问内网的过程中会有流量经过公网22主机。
经测试:
a.使用iftop 命令查看120实时连接的过程中,40s内的平均流量为2.63Kbps,使用watch命令每秒钟刷新ps进程时,40s内的平均流量为1.84Kbps。如果不执行命令,流量几乎为0。由于ssh传输的是命令行文本,理论上不会产生太大流量,在实际测试中没有超过5Kbps。
b. 连接内网的windows xp的远程桌面时,流量跟画面的变化程度相关,画面变化越大流量越大,在播放视频时能到达2mbps(带宽为2M时),如果不进行操作时,流量几乎为0。
3.5 需要一台开放端口的公网主机22(俗称打洞服务器)。
四、测试方法:将步骤中的*代替实际的ip地址即可进行测试。

使用Reverse SSH Tunnel实现内网穿透的可行性方案相关推荐

  1. SSH隧道与内网穿透

    SSH参数解释 -L port:host:hostPort 解释:将本地机器某个端口转发到远端指定机器的指定端口 原理:本地机器分配了一个socket监听port端口,一旦端口上有了连接,该连接就经过 ...

  2. 群晖IPv6/ddns-go/域名解析设置内网穿透方案

    前言 群晖的内网穿透有很多方案,外网IPv4(这个现在很难搞到了),中间服务器搭建Tunnel隧道,frp等方案(网速慢,流量限制,需另购服务器),第三方服务花生壳等(按量付费,速度问题). 本篇介绍 ...

  3. 利用阿里云和frp实现无域名内网穿透

    在学校做了一个deep learning项目通过web提供服务,验收阶段需要给甲方测试,但是学校是内网甲方无法访问,于是搜索内网穿透,解决方案非常多,身边同学推荐花生壳,经实测花生壳体验版速度慢,流量 ...

  4. 【失败日记】手机内网穿透

    [失败日记]内网穿透 自从在旧的手机上下载了linux系统,我便开始不断设想,企图把手机变成linux服务器,碍于之前就对手机进行过改装linux服务器的操作,但是之前搞了一天左右也没有任何成果,反而 ...

  5. 让你的工作更高效!快来看看如何使用内网穿透

    什么是内网穿透 内网穿透,也即 NAT 穿透,进行 NAT 穿透是为了使具有某一个特定源 IP 地址和源端口号的数据包不被 NAT 设备屏蔽而正确路由到内网主机. 通俗的讲,内网穿透其实就是两台计算机 ...

  6. 简单内网穿透-利用树莓派-低成本建站 无需公网ip

    很多人都想试试自己建站玩一玩 (比如博客.自建网盘.远程下载等),但家里宽带没公网 IP,特意买台服务器又显得浪费.那么有没成本小.可玩性高.又能长期稳定使用的方案呢? 其实,免费的内网穿透工具 (如 ...

  7. 简单免费内网穿透教程,利用树莓派实现低成本建站 无需公网

    很多人都想试试自己建站玩一玩 (比如博客.自建网盘.远程下载等),但家里宽带没公网 IP,特意买台服务器又显得浪费.那么有没成本小.可玩性高.又能长期稳定使用的方案呢? 其实,免费的内网穿透工具 (如 ...

  8. Docker系列 通过FRP实现内网穿透

    转自我的个人博客https://blognas.hwb0307.com.欢迎关注! 前言 有小伙伴提醒,fatedier/frps才是frp官方的Docker镜像.但我看这个官方镜像都没有详细的使用说 ...

  9. 公网IP与内网穿透的使用场景和区别

    一.使用场景 最近在本地开发了一个web网页,数据库和后端都在本地,但是又外网访问的需求. 也就是说将一个单机版的转换为一个网络版的. 单机版是只有自己的局域网可以访问,网络版是外网也可访问. 查询了 ...

  10. 云计算时代必备技术:内网穿透详解

    内网穿透是一种可以让外部网络与内部网络建立连接的技术,它可以帮助我们在外部网络上访问内部网络资源,也可以让内部网络中的服务在外部网络上运行. 一.内网穿透的定义 众所周知,得益于 NAT(Networ ...

最新文章

  1. 今晚8点开播 | 微信高级研究员解析深度学习在NLP中的发展和应用
  2. HTML的标签描述19
  3. 3 账套升级u8_用友U8条码管理的应用对仓库有什么好处?
  4. C语言入门题-是不是太胖了 (10分)
  5. ubuntu切换中文输入法
  6. 计算机扬天m400c联想,【联想扬天M参数】联想扬天M系列台式电脑参数-ZOL中关村在线...
  7. struts2第一个程序 Helloworld
  8. inDesign教程,如何共享inDesign文件?
  9. java c 网络_编程中Java与C/C++,Internet区别
  10. ftp连接服务器连接不上,xshell可以连接上
  11. 计算机上机考试的系统,计算机上机考试系统
  12. 破解intelliJ idea 2017
  13. pb 打开文件,写入文件
  14. 汉诺塔游戏程序可以通过“递归”来实现?但你未必清楚其根本原因。
  15. 优麒麟搜狗输入法简繁切换
  16. 数字乡村建设浅谈(一):可行性、难点、思考
  17. Redis数据库(入门)
  18. PTA 一帮一 (in Python)
  19. win7 任务栏 通知区域
  20. kali wifi破解(多种方式)

热门文章

  1. 【内网安全】基础知识:工作组、域和权限分配
  2. 中国大学排名是怎样的?
  3. debug——生成log
  4. linux密码记录木马,注意 “QQ大盗”木马注入 QQ 进程记录QQ账号与密码
  5. svn忽略不需要同步的文件夹_配置管理-SVN使用指南 - wuli潇潇
  6. 斐讯路由器怎么设置虚拟服务器,斐讯无线路由器设置教程图解
  7. elementui el-tab添加badge,以及实时更新标记值
  8. 电脑硬件基础知识科普
  9. Most of the disks failed
  10. 华为云git clone代码