实际工作和生活中,常常遇到以下问题:如何让任何地方都能访问自己家里的笔记本上的应用?如何让局域网的服务器可以被任何地方访问到?如何在异地远程处理公司服务问题;企业员工如何在异地访问公司内网财务/管理系统,可以随时上传下载文档等;对于没有公网 IP 的用户来说,远程管理或在wai网访问内网机器上的服务是一个问题,有很多类似的需求;个人开发者程序员,对微信公众号小程序也需要开发调试等,那么这些问题有什么解决方案呢?
同类型的问题有很多,但是也有简单解决的方法。大多部分用户无非是没有公网ip,也没有时间自己去搭建一款类似的软件,网上有很多开源的,测试后也很不尽人意。
了解的内网穿透工具
小蚂蚁
网云穿
闪库
小蚂蚁
小蚂蚁是之前用过的一款工具,是国内软件,自主开发的。支持所有基于TCP、UDP协议的应用及协议,包括HTTP、SSH、SMTP、GIT、MYSQL等,类似于国内的花生壳,有免费版和收费版本,wai网端口自定义分配,不可修改,免费的可以一直用,不过过段时间要激活。付费的可支持所有协议,且不限制流量的使用。
网云穿
也是测试过的一款国内自主研发软件,直接对外发布应用, 映射转发本地socket端口, wai网直接访问, 支持HTTPS协议以及SSL证书, 支持异常流量过滤.支持FTP、SVN、管家婆、金碟、ERP、视频监控等所有应用!均有免费版与付费版,自己测试即可。
软件截图:
请点击输入图片描述
闪库
这个也是软件他是可以私有部署在服务器,比较方便,免费版是个人测试远程桌面,基本够用了。带宽也比较高10mbps,隧道采用的是双向加密传输的,全协议支持 ,提供公网ip。
软件截图:
请点击输入图片描述
总体来说,这几款国内软件使用都有利有弊,日常个人开发调试,展示网站完全够用,如果用于正式发布,企业使用还是建议使用专业版和商业版,会更加稳定。带宽也能跟上!
这篇文章花了好几天,系统地梳理出了映射公网的几种方式。虽然是针对微信开发的外网服务器来寻找解决方案,但这个知识梳理可能会在其他地方也受益。平常我也有用TeamViewer,在搜集资料的过程中也知道了其大致工作原理。还有一些免费好用的反向代理软件,可能会在后
头派上用场。
一、映射公网的两种方式介绍
1 动态域名解析+端口映射(公网环境)
动态域名解析,俗称DDNS。目前提供这种服务的厂商还挺多,我目前知道有几家:
Oray花生壳
PubYun公云
No-IP
DynDNS
如果你对一个公网IP有权限,那就可以采用这种方式。你的路由器的WAN口就是宽带,那这种方式就适用。DDNS的作用就是将WAN口分配到IP与域名绑定在一起,访问这个域名,相当于就访问到了你的WAN口。于是你只要在路由器上做一个端口映射即可。
此种方式的局限性可能就是大部分运营商都屏蔽了80等常用端口,所以做微信开发要用到80端口的话这种方式就不大适合。
2 反向代理(内网环境)
如果你在一家公司上班,公司内部可能分了好几级的路由,就比如我,那第一种方式就走不通。写零java基础搞定微信Server_3:搭建微信
Server本地开发环境那晚弄到半夜就是这个原因。哦,我当然不是在加班。我在家里,房间用了一个二级路由,那晚真真是搞死宝宝了。
下面这两张图可以快速了解反向代理。
我们是采用本机与反向代理server组建网络(相当于一个虚拟局域网),访问反向代理server的数据都被转发到本机。
从 有简单一点的将内网映射到外网的工具吗? 这个帖子中收获良多。作者 沙渺 告诉我们:
实际上ngrok就是一种仅仅针对http单一用途的代理服务。ngrok的原理很可能并不是真正的内网穿透,而是真的老老实实的充当反向代理,承担所有实际发生的流量。
这方面的替代服务有localtunnel.me和pagekite等。
内网穿透的应用中,通讯双方必然首先对一个公网服务器主动发起连接。。。
各种相关的软件都是如此,例如TeamViewer、Oray向日葵乃至QQ远程协助等。就说这个ngrok,其实也是需要通讯双方连接ngrok中心服务器,甚至中心服务器的某些高级功能还提供付费计划对吧。
于是乎,我们映射公网的工具,除了ngrok之外,又多了 localtunnel.me 和 pagekite 。
二、反向代理的实现
1 自己创建反向代理服务
用这种方式,成本较高,需要三样东西:
服务器
代理服务端的监听转发程序
目的服务端(同时也是面向代理服务器的客户端)的主机转发程序
如果你有服务器,那自己写个转发工具应该是可以实现的。比较省力的方式是参考ngrok的源码。ngrok是应该浓墨重彩写一番,开源,自由,github上开源了V1.0版本
https://github.com/inconshreveable/ngrok/
一个在自己VPS搭建ngrok的实例, https://imququ.com/post/self-hosted-ngrokd.html
很多人和我一样,现阶段就想做一个微信开发,那自己花大精力去实现一个反向代理显然不值得。这时候就得从已有的软件中进行选择。运行稳定,成了最主要考虑的因素。
2 厂商服务
Ngrok比较出名,提供免费服务,但可惜容易被墙。那解决方式就是墙内也搞Ngrok。由于我所知有限,仅仅把目前知道的几家列出来。(这里我可能先入为主了,因为我把这些厂商粗暴地分为了Ngrok和非Ngrok,忽略了其他厂商们所做出的努力。)
Ngrok
免费,但会被墙。
Tunnel
昨晚测试,访问不了。
localtunnel
可用
pagekite
可用
新花生壳
开通内网映射,映射主机即可。目前免费版也要收取8块钱的费用就是了。
NAT123
功能同花生壳,但似乎是免费的。
我贪图省事,直接花钱认证了花生壳,后面四种就没再处理了。看到别人用localtunnel和pagekite有成功的,所以我就不搬了。
两种办法:1、在作为网关的电脑上装一个端口映射软件(可直接在网上免费下载,比如端口映射器(tcp mapping) v2.02)。给用来做web服务器的那台电脑设置一个内网固定IP ,比如192.168.0.188。然后在作为网关的那台电脑上打开端口映射软件,将外来指向固定IP 80端口的数据直接映 射到192.168.0.188上就可以了。2、如果有路由器,在路由器里面开启DMZ,IP地址就填内网要提供服务的主机IP。欢迎分享,转载请注明来源:夏雨云
评论列表(0条)