简介
支持 TCP、UDP、Websocket、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
如某些服务需要将内网的http服务暴露在外网;如测试时需要将本机的服务开放给外部应用的回调;ssh远程、或图形化界面远程某个局域网的计算机。
必须的工具:1台有公网IP的机器,如某台阿里云服务器,最好有配泛域名。
原理:
1. 首先启动frpc,frpc启动后会向frps注册。
2. 客户端请求frps,也就是用户请求去访问frps。
3. frps告知frpc有新请求,需要建立连接。也就是 公网服务器 告知 内网服务器,需要建立连接。
4. frps收到frpc的请求,建立新的连接,也就是 公网服务器 接收到了 内网服务器 的请求,建立了新的连接。
5. frps把frpc和用户请求的流量互相转发,将frps服务器当成流量中转站,也就是 公网服务器 将 用户请求 的流量转发给 内网服务器,把 内网服务器 的流量转发给 用户。
优缺点
优点:
- 开源、免费。
- 不限制速度、不限制流量、穿透的域名可自定义。主要取决于服务器端的带宽。
- 端口复用,多个服务通过同一个服务端端口暴露。多个客户端搭建流程复杂度较低。
缺点:
- 连接量过大后,可能会掉线。(社区反馈,暂无优化方案)
- 连接速度取决于公网服务器带宽,如果服务器带宽小,那么速度也不太乐观。
安装
项目地址
https://github.com/fatedier/frp
下载地址
https://github.com/fatedier/frp/releases
官方文档 https://gofrp.org/docs/
下载
wget https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
解压后
文件说明: 只需要关注以下几个配置文件
frps.ini: 服务端配置文件
frps: 服务端软件
frpc.ini: 客户端配置文件
frpc: 客户端软件
配置和使用
服务端
- frps.ini
#实际使用中,记得把注释去掉
[common] #必须配置
bind_port = 7000 #frp服务端与客户端通讯的接口,默认7000
vhost_http_port = 4080 #服务端对外暴露的http端口,通过这个端口将内网服务暴露给外网。如:123.45.145.100:4080
vhost_https_port = 443 #服务端对外暴露的https端口,通过这个端口将内网服务暴露给外网,可以改
token = tokenword #可选配置,建议配置,用于身份校验
# 以下皆为可选配置
# 配置控制台
dashboard_port = 7500
dashboard_user = admin # dashboard 用户名密码,默认都为 admin
dashboard_pwd = admin
# 允许frpc配置绑定的端口
allow_ports = 2000-3000,3001,3003,4000-50000
max_clients= 10
...
- 启动命令
# 后台启动
nohup ./frps -c ./frps.ini &
启动成功后日志如下:
客户端
- frpc.ini
1、http穿透服务
#在需要被暴露服务的机器配置如下内容
[common] #必须配置
server_addr = xx.xx.xx.xx # 上面的公网服务器ip
server_port = 7000 # frp server 绑定的端口,和上面服务端端口相同
[web] #不能重名,保证唯一
type = http #http服务
custom_domains = abc.test.com.cn #自定义配置的域名,泛域名
local_ip = 172.16.10.18 #内网IP/本机IP
local_port = 12911 # 本地对外暴露服务的端口
[web1] #多个http服务
type = http
local_port = 8080
local_ip = 172.16.10.18 #内网IP/本机IP
custom_domains = bbc.test.com.cn
ps.如果域名已在相关的网站配置泛域名解析,配置为 * ,表示二级域名
test1.test.com.cn ,test2.test.com.cn 等都能解析到对应的公网服务器ip,那么就可以一个服务端配置多个客户端,否则就只能一个服务端对应一个客户端。
2、SSH 访问内网机器
#在需要被暴露服务的机器配置如下内容
[common] server_addr = xx.xx.xx.xx # 上面的公网服务器ip
server_port = 7000 # frp server 绑定的端口,和上面服务端端口相同
[ssh] #ssh连接 SSH连接可以直接在本地配置
type = tcp # tcp服务
local_ip = 127.0.0.1 #本地 IP
local_port = 22 #用于 ssh 的端口号,默认 22
remote_port = 6003 # 映射的服务端端口,访问该端口时默认转发到客户端的 22 端口,不同的客户端设置不同的端口号
- 启动命令
# 后台启动
nohup ./frpc -c ./frpc.ini & >> logs.out
启动成功日志如下:
- 访问方式
1、http服务
这时候通过custom_domains:vhost_http_port就能访问内网的服务了
如 abc.test.com.cn:4080 就能访问到处于内网的服务
2、SSH服务
ssh 用户名@服务端ip -p 端口号
# ssh -p 6003 username@x.x.x.x (将 x.x.x.x 替换成公网服务器 IP 地 址)
远程centos桌面
整体体验:只试用了一台机器,还是比较流畅的,但是毕竟是开源的。所以安全性相关的内容需要自己去做。
基础环境安装
1.安装 epel库
yum install -y epel-release
2.安装xrdp 并启动xrdp
yum install -y xrdp systemctl start xrdp.service systemctl enable xrdp.service
3.安装tigervnc-server
yum install -y tigervnc-server
4.为用户root设置vnc密码, 也可以其他用户设置,此用户进行图像化连接时需要额外输入密码
vncpasswd root
5.配置或关闭SELinux(查了下这是linux的文件安全策略,不建议关掉。暂时没遇到啥问题)
查看SELinux状态命令:/usr/sbin/sestatus -v
临时关闭SELinux(设置SELinux 成为permissive模式)命令:setenforce 0
6.开启远程的防火墙端口
firewall-cmd --permanent --zone=public --add-port=3389/tcp
firewall-cmd --reload
Frp客户端
- frpc.ini
#在需要被暴露服务的机器配置如下内容
[common] server_addr = xx.xx.xx.xx # 上面的公网服务器ip
server_port = 7000 # frp server 绑定的端口,和上面服务端端口相同
[vnc] #保证命名唯一
type = tcp # tcp服务,由于windows图形化的RDP底层协议依然是TCP,所以这里直接就用tcp就好了
local_ip = 127.0.0.1 #本地 IP
local_port = 3389 #用于 图像化远程 的端口号
remote_port = 6003 # 映射的服务端端口,访问该端口时默认转发到客户端的 3389 端口,不同的客户端设置不同的端口号
- 启动命令
# 后台启动
nohup ./frpc -c ./frpc.ini & >> logs.out
访问方式
win R 运行 mstsc
输入公网服务器代理的IP 端口。就能正常访问图形化的linux界面了。
安全地暴露内网服务
对于某些服务来说如果直接暴露于公网上将会存在安全隐患。
使用 stcp(secret tcp) 类型的代理可以避免让任何人都能访问到要穿透的服务,但是访问者也需要运行另外一个 frpc 客户端。
1. 在需要暴露到内网的机器上部署 frpc,且配置如下:
[common]
server_addr = xx.xx.xx.xx
server_port = 7000
[ssh-stcp-172.16.22.15]
type = stcp
# 只有 sk 一致的用户才能访问到此服务
sk = skpassword
local_ip = 127.0.0.1
local_port = 3389
2. 在想要访问内网服务的机器上也部署 frpc,且配置如下:
[common]
server_addr = xx.xx.xx.xx
server_port = 7000
[ssh-stcp-get-172.16.22.15]
type = stcp
# stcp 的访问者
role = visitor
# 要访问的 stcp 代理的名字
server_name = ssh-stcp-172.16.22.15
sk = skpassword
# 绑定本地端口用于访问 SSH 服务
bind_addr = 127.0.0.1
bind_port = 6003
内容出处:,
声明:本网站所收集的部分公开资料来源于互联网,转载的目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。如果您发现网站上有侵犯您的知识产权的作品,请与我们取得联系,我们会及时修改或删除。文章链接:http://www.yixao.com/soft/30139.html
相关推荐
-
阿里云盘Mac客户端(附mac/win版)v2.1.9正式版
阿里云盘 Mac客户端作为最近在网盘市场掀起一阵全新风潮的热门软件,其面对用户提供高达6TB的超大云盘储存容量和可达到10Mb/s的超高下载传输速度,都尽显了这款软件的强大性能与优…
-
微软Visual Studio 2022第二个预览版发布:搭载新图标,实时预览功能增强
大约一个月前,微软发布了 Visual Studio 2022 的第一个预览版。这是第一个专为 64 位 PC 构建的 IDE 版本,因此第一个版本专注于查找和修复问题,新功能并不…
-
鲁班H5 1.10.3发布,支持Echarts柱状图、饼图等
简介 鲁班H5是基于Vue2.0开发的,通过拖拽的形式,生成页面的工具,类似易企秀、百度 H5 的一个可视化搭建系统。 更新内容 本次更新支持了 Echarts 柱状图、折线图、饼…
-
Lobster开发工具之LobsterIDE
上文介绍的工作台中也可以编写代码,但是体验不好,因为写代码是一个精细活,必须得有一个趁手的代码编辑器,微软的Visual Studio宇宙第一IDE,而VS Code从VS剥离出最…
-
火狐浏览器Firefox v55.0.2正式版更新下载
火狐浏览器Mozilla firefox已更新v55.0.2正式版,Firefox 55支持WebVR功能,是当前可达性最高的VR兼容浏览器。v55版默认启用WebVR API,意…
-
U盘启动制作工具 Rufus
Rufus 是一个开源免费的快速制作 U 盘启动盘和格式化 USB 的实用工具,它可以快速把 ISO 格式的系统镜像文件快速制作成可引导的 USB 启动安装盘,类似于Ultrais…
-
剪映windows电脑专业版升级了!最新版本号0.7.1
前几天发布了 剪映windows电脑专业版软件,刚刚获取了剪映windows最新的v0.7.1 版本: 剪映windows最新的v0.7.1 版本 新版本解决了不少软件的BUG,还…
-
七大免费开源网络监控工具推荐
在房地产市场,真正一锤定音的是地段,但在网络和服务器管理领域,可视性才是一切。如果你不了解自家的网络和服务器每天都在“密谋”着什么,早晚都得碰上大灾难。 幸运的是,市场上有大量工具…
-
基于Ant Design Vue的Vue3.0框架
Makeit-Admin-Pro,是基于 Vue 3.0 Vite 开发的一套适合中后台管理项目的集成框架,依赖于阿里的 Ant Design Vue 2.x 版本,内置了登录页面…
-
开源在线绘图工具,界面美观,功能丰富,总有一款适合你
俗话说,一图胜千言,一张小小的图片可以替代大段的文字说明,更可以形象直观地描述业务流程、展示算法…,下面给大家带来几款我最近收藏的开源在线绘图工具。 Ant Desig…