反向代理和内网穿透
Posted 哎妈呀Bug
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了反向代理和内网穿透相关的知识,希望对你有一定的参考价值。
概念
反向代理看上去看深奥,其实不然,只是因为汉语言文化的差异导致它看上去深奥。一般反派感觉都比较厉害和神秘。
要理解反向代理,我们就不得不说一下正向代理。
正向代理 (Forward Proxy)
所谓正向代理,就是大家通常说的代理。打个通俗的比方,你想跟你舅舅借钱,但不好开口(或者你舅妈会设法阻拦),就跟你妈说。这时母亲大人就是个正向代理。此时代理本质就是个桥的作用,这个桥让你能和桥对面的人交换信息。
正向代理是多对一的概念,例如你姐,你妹你可以通过你妈去跟舅舅借钱,但舅舅只有一个舅舅。舅舅有可能并不知道到底是谁真正在借钱,只知道钱给了你妈。
反向代理 (Reserve Proxy)
反向代理隐藏了真实的服务端,有可能有N个客服对应N个号码,但你只需要记一个10086,它会平衡客服之间的压力给你安排合适的人。
反向代理是一对多的概念,刚好和正向代理反过来了。
正向代理代理的对象是客户端
反向代理代理的对象是服务端
反向代理还有一个场景就是内网穿透,因为服务对象是在内网里,你需要通过代理才能访问到。
内网穿透
从外网是没办法直接访问到内网的资源的,因为内网是一个局域网不在一个网段,而且还有防火墙在。
这时候你弄个反向代理就可以解决这个问题:
内网服务器访问代理服务器
握手,建立通道
外网用户访问代理,代理通过通道和内网通信
举一个具体例子,TeamViewer的服务端(外网)就是个反向代理,它需要和TeamViewer客户端(内网)一直保持通信,建立一个通道(TeamViewer ID)。当远程连接这台机器时,你需要登录到TeamViewer服务器,然后通过代理通道(TeamViewer ID)和远程机器连接。
一些反向代理服务
远程连接内网机器的桌面服务是最常见的需求,有时候我们希望做的是自己的机器上跑一些服务能够从外网访问,比如demo,博客,甚至私有云等等。
TeamViewer和向日葵大家可能都知道,我说一些不一样的。
frp
开源界最流行的反向代理之一,frp全称FaskReverseProxy,它的目标是做最快速可靠的反向代理,用GO语言实现,在Github上正在快速迭代中。安装和配置都非常简单,只需要几个命令就可以完成。frp支持的客户端非常丰富,树莓派,路由器,安卓手机等等,可玩性很高。
FRP还可以轻松代理TCP,HTTPS,SSH等等协议,你需要有一台具有公网IP的机器,最好加一个域名。
ngrok
曾经是开源界反向代理软件的老大,到2.0以后选择闭源,最后开源的版本2016年后就没有再更新,止于1.7。基于C语言实现,配置略复杂,不过据说灵活性和稳定性超好。
ngrok也可以代理常见的各种协议,自己搭建只能用早期的开源版本。或者选择商业公司提供的收费服务,国内外可以搜到很多提供NGROK服务的网站,可不可靠不太敢说,但真的很多。
这里列举一些知乎推荐过的,你也可以通过ngrok这个关键字搜索到很多。
natapp.cn
小米球
Sunny-Ngrok
echosite
dog-tunnel
翻译过来就是狗洞吧,国人做的,基于GO语言开发,在GitHub上活跃度还不错,有1k+的星星,有兴趣可以试一下。
serveo.net
无需注册,无需配置,只需要 ssh 就行,没有客户端,支持多端口映射,支持自定义子域名,只要一行代码。
ssh-R80:localhost:3000http://serveo.net
我试了一下,临时用一下真的很棒!
写在最后
内网服务本来就是比较敏感的,所以从数据安全的角度看我觉得还是自己搭建代理服务更可靠。用不靠谱的服务有很大风险,还有可能很坑,非常坑。
比如nat123和花生壳,一步一步诱导你付费,协议,端口,流量,速度,域名每个细节都要收费,还不一次说清楚,你付完钱才知道后面还要付钱的,别问我怎么知道的。
更多讨论,你也可以去看知乎:https://www.zhihu.com/question/49629610/
以上是关于反向代理和内网穿透的主要内容,如果未能解决你的问题,请参考以下文章