前言:
为啥要研究这玩意呢?
肯定是因为穷,即由于搬砖的需要;
需求场景如下
我们做本地化之后,服务本地化是无法通过连接查看机器的服务状态,这样给我们维护带来极大的不方便;有没有一种方式可以,实现内网穿透,可以维护机器并且维护多台呢?
首先我们的知道传统的企业访问路径是咋样的呢?
公司内网->网络设备(运营商)->互联网
家庭内网->小区内网->运营商->互联网
如何能精准的一对一连接呢?是否又可以通过一个公网地址可以连接公司和家里的内网机器呢?
带着这样的疑虑,我们进行内网穿透的工具进行一些调研和尝试:
其中有frp和holer,nat123等
使用frp内网穿透工具可以解决这个问题。
frp官方文档:https://github.com/fatedier/frp/blob/master/README_zh.md
frp官方下载页面:https://github.com/fatedier/frp/releases
既然官网都那么直白,我改写点啥呢?
............
............
我们就用docker玩一下吧
我们要清楚,内网穿透逻辑即
源A需要穿透访问B,直接访问直接是被墙掉的;那么我们可以如此
引入第三者,据说好的第三者会那这个连接会更加稳定的
PS:第三者需要公网IP属性,就是出去大家(互联网)都是知道
举个例子吧:第三者就是公交车,源A和目标B是乘客;他们建立连接需要是在公交车站(配置端口)才能建立连接;建立连接才可以上车,上车了才能更好交流,想干啥就干啥
已经很直白了,废话不多说了,第一次会失败,不要紧;失败这时候真的是他妈的苟
docker安装需要我说了吧,看这里连接http://t.csdn.cn/1NtSc
今天我们就简单配置一下frp服务吧:
根据我描述的思路和逻辑,这里关键点是哪个第三者,就是那辆公交车
我这里用鹅厂的云主机:
我已经偷偷从docker.io看到了frp的镜像,不知道怎么看下面:
既然搞就最新的,都是新的比老的安全,不然安全部门老是催我去更新这个,更新那个(Funksafe)
鉴于工作性质安全保密,就用如下截图作为模拟场景
源A:Araoms下的用户
目标B:Internet 公司下的服务器
直连(直男失败)肯定不行,已经确定使用公交车来给她们眉目传情咯
暂时就用鹅厂的云主机:公网地址xxxx,就是公交车的车牌
核心公交车需要配置如下:
配置文件frps.in
[common]
bind_port = 7000
# 启用面板
dashboard_port = 7500
# 面板登录名和密码
dashboard_user = admin
dashboard_pwd = xxxxxx
# 使用http代理并使用8888端口进行穿透
vhost_http_port = 8888
# 使用https代理并使用9999端口进行穿透
vhost_https_port = 9999
# 日志路径
log_file = ./frps.log
# 日志级别
log_level = info
# 日志最大保存天数
log_max_days = 2
# 认证超时时间
authentication_timeout = 900
# 认证token,客户端需要和此对应
token=123123123
# 最大连接数
max_pool_count = 5
max_ports_per_client = 0
NAME=frps
IMAGE=snowdreamtech/frps:latest #这里版本48
docker stop $NAME
docker rm $NAME
docker run --restart=on-failure:3 --network host -v /home/docker/frp/frps.ini:/etc/frp/frps.ini -d --name $NAME $IMAGE
目标B配置如下:(client),下次给它打个镜像
源A连接:
命令连接成功:
成功展示:
PS:配置文件的ssh,可以修改客户端名字哦;一个客户端一个名字,已经亲测
源A和目标B的爱情故事,需要第三者介入,从此它们就过上了没羞没臊的生活咯!
分享到此,掌声响起......