FRP内网穿透搭建教程(frps 内网穿透)
haoteby 2025-05-10 22:00 11 浏览
一、FRP内网穿透工具
1、FRP简介:
frp 是一个开源项目, 采用 C/S 模式,将服务端部署在具有公网 IP 的机器上,客户端部署在内网或防火墙内的机器上,通过访问暴露在服务器上的端口,
反向代理到处于内网的服务。 在此基础上,frp 支持 TCP, UDP, HTTP, HTTPS 等多种协议,提供了加密、压缩,身份认证,代理限速,负载均衡等众多能力。
协议类型 | 描述 |
tcp | 单纯的TCP端口映射,服务端会根据不同的端口路由到不同的内网服务。 |
udp | 单纯的UDP端口映射,服务端会根据不同的端口路由到不同的内网服务。 |
http | 访问HTTP应用。 |
https | 访问HTTPS应用。 |
stcp | 安全的TCP内网代理,需要在被访问者和访问者的机器上都部署frpc,不需要在服务端暴露端口。 |
sudp | 安全的UDP内网代理,需要在被访问者和访问者的机器上都部署frpc,不需要在服务端暴露端口。 |
xtcp | 点对点内网穿透代理,功能同 stcp,但是流量不需要经过服务器中转。 |
tcpmux | 支持服务端TCP端口的多路复用,通过同一个端口访问不同的内网服务。 |
2、FRP配置:
注:从本地外网机器获取到的公网ip无法使用,需购买云服务器,如购买阿里云、腾讯云服务器,将服务端部署到云服务器上,客户端部署到可以访问内外网的跳板机上;
2.1 服务器端配置frps.ini:(需要安装在外网机器上)
1、下载安装包
https://github.com/fatedier/frp/releases/tag/v0.37.1
2、解压安装包、并拷贝frps.exe 、frps.ini拷贝指定目录,windows下如C盘: C:\frp\ (方法windows、Linux版本都适用)
3、配置服务端frps.ini :(windows、Linux版本都适用)
[common]
bind_port = 7000 #frps服务端的端口
token = cjjs@88888888 #客户端连接服务端的密码
max_pool_count=20 #最大连接数
dashboard_port = 7500 #控制面板的服务端口,用于web页面查看所有客户端连接信息与状态
dashboard_user = admin #控制面板登录账户
dashboard_pwd = admin #控制面板登录密码
vhost_http_port = 80 #设置http端口
vhost_https_port = 443 #设置https端口
[可选]
log_level = debug #设置日志显示级别{debug, info, warn, error)
log_max_days = 5 #设置日志最大天数
privilege_mode = true #设置特权模式是否开启,开通后web,ssh等使用都可以直接在客户端设置
privilege_token = admin #设置特权模式token值
subdomain_host = abc.cn #设置动态二级域名
注:frps.ini文件可以使用默认配置直接启动就行,当然最好加个token,加强安全验证。
4、启动服务端:
(1)将文件frps.exe 、frps.ini拷贝至任意目录(C:\frps);
(2)启动frps服务: frps.exe -c frps.ini
2.2 客户端配置frpc.ini:(需要安装在可以同时访问内网外网的跳板机上)
1、将解压安装包中的frpc.exe 、frpc.ini拷贝指定目录;(windows、Linux版本都适用)
2、配置客户端frpc.ini :(windows、Linux版本都适用)
[common]
server_addr = 81.70.5.18 #frps服务端的公网IP(腾讯云服务器公网ip)
server_port = 7000 #frps服务端的端口
token = yydds@88888888 #连接frp服务端的密码
[ssh] #配置ssh服务
type=tcp
local_ip=10.199.108.11 #内网服务器ip
local_port=22 #内网服务器端口
remote_port=30000 #表示在 frps服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口,即22号端口
use_encryption=true #可选,表示是否加密
use_compression=false #可选,表示是否压缩
[RDP] #配置远程桌面
type=tcp
local_ip=10.41.71.128 #内网服务器ip
local_port=3389 #内网服务器端口
remote_port=30001 #表示在 frps服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口,即3389号端口
[http_proxyx]
type = tcp #通信数据类型
remote_port = 1080 #在frp服务端开设代理服务的端口
plugin = socks5 #通过插件开设socks5代理服务
#plugin_user = abc123 #通过插件设置连接代理的用户名
#plugin_passwd = abc123 #通过插件设置连接代理的密码
#user_compression=true
3、启动客户端:
frpc.exe -c frpc.ini
2.3 web配置
1、公网服务器,配置服务端frps.ini
[common]
bind_port = 7000 #frps服务端的端口
token = yydds@88888888 #客户端连接服务端的密码
vhost_http_port = 80 #http端口
vhost_https_port = 443 #https端口
2、内网跳板机,配置客户端frpc.ini
[common]
server_addr = 81.70.5.18 #frps服务端的公网IP(腾讯云服务器公网ip)
server_port = 7000 #frps服务端的端口
token = yydds@88888888 #连接frp服务端的密码
[web_http]
type = http
local_ip = 10.199.108.10 #内网服务器ip
local_port = 80 #内网网站使用的端口
remote_port = 30002 #表示在 frps服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口,即80号端口
[web_https]
type = http
local_ip = 10.199.108.10 #内网服务器ip
local_port = 443 #内网网站使用的端口
remote_port = 30003 #表示在 frps服务端监听的端口,访问此端口的流量将会被转发到本地服务对应的端口,即443号端口
4、重新启动frp服务:
1)重启frps: ./frps.exe -c frps.ini
2)重启frpc: ./frpc.exe -c frpc.ini
2.4 STCP配置
背景: frp的tcp模式相当于设备直接向公网暴露了一个tcp端口;任何设备都可以尝试连接这个端口,会有很大的安全风险;而stcp协议就是为解决这个安全问题;
限制特定设备能够使用这个端口。
1、公网服务器,配置服务端frps.ini
[common]
bind_port = 7000 #frps服务端的端口
token = yydds@88888888 #客户端连接服务端的密码
2、内网跳板机,配置客户端frpc.ini
[common]
server_addr = 81.70.5.18 #frps服务端的公网IP(腾讯云服务器公网ip)
server_port = 7000 #frps服务端的端口
token = cjjs@88888888
[rdp]
type = stcp
sk = abcdefg #只有sk一致的用户才能访问到此服务
local_ip = 127.0.0.1
local_port = 3389 #远程桌面的本地端口地址
3、本地电脑,配置客户端frpc.ini
[common]
server_addr = 81.70.5.18 #frps服务端的公网IP(腾讯云服务器公网ip)
server_port = 7000 #frps服务端的端口
token = cjjs@88888888
[rdp_visitor]
type = stcp
role = visitor #stcp的访问者
server_name = rdp #要访问stcp的代理名字
sk = abcdefg #只有sk一致的用户才能访问到此服务
bind_addr = 127.0.0.1 #绑定本地ip、端口,用于访问远程桌面服务
bind_port = 6000
4、在本地电脑打开远程桌面服务,输入127.0.0.1:6000,即可访问内网跳板机上的远程服务。
2.5 XTCP配置
XTCP 的配置方式和STCP很类似;但是会采用P2P的方式进行打洞穿透,如果成功,后续的流量将不会经过frps,而是直接通信,不再受到frps所在服务器的带宽限制。
1、公网服务器,配置服务端frps.ini
[common]
bind_port = 7000 #frps服务端的端口
token = cjjs@88888888 #客户端连接服务端的密码
2、内网跳板机,配置客户端frpc.ini
[common]
server_addr = 81.70.5.18 #frps服务端的公网IP(腾讯云服务器公网ip)
server_port = 7000 #frps服务端的端口
token = cjjs@88888888
[rdp]
type = xtcp
sk = abcdefg #只有sk一致的用户才能访问到此服务
local_ip = 127.0.0.1
local_port = 3389 #远程桌面的本地端口地址
3、本地电脑,配置客户端frpc.ini
[common]
server_addr = 81.70.5.18 #frps服务端的公网IP(腾讯云服务器公网ip)
server_port = 7000 #frps服务端的端口
token = cjjs@88888888
[rdp_visitor]
type = xtcp
role = visitor #stcp的访问者
server_name = rdp #要访问stcp的代理名字
sk = abcdefg #只有sk一致的用户才能访问到此服务
bind_addr = 127.0.0.1 #绑定本地ip、端口,用于访问远程桌面服务
bind_port = 6000
4、在本地电脑打开远程桌面服务,输入127.0.0.1:6000,即可访问内网跳板机上的远程服务。
3、各服务访问方式
(1)SSH访问方式:
ssh root@81.70.5.18 -p 30000 (mobaxterm 登录方式,30000为客户端映射的端口,81.70.5.18 为腾讯云服务器ip。)
(2)RDP(远程桌面)访问方式:
win系统下打开远程桌面:输入81.70.5.18 :30001 #30001为客户端映射的端口,181.70.5.16 为腾讯云服务器ip。
(3)Web访问方式:
打开浏览器,输入 81.70.5.18 :30003 #30003为vhost_https_port映射的端口,即客户端配置的远程端口;
4、frp加入开机启动服务
1、frps加入开机启动服务
tar -zxvf frp.tar.gz -C ./
mkdir /etc/frp
cp frp_0.37.1_linux_386/frps /usr/bin/frps
cp frp_0.37.1_linux_386/frps.ini /etc/frp/frps.ini
cp frp_0.37.1_linux_386/systemd/frps.service /usr/lib/systemd/system/frps.service
systemctl status frps.service
systemctl start frps.service
2、frpc加入开机启动服务
tar -zxvf frp.tar.gz -C ./
mkdir /etc/frp
cp frp_0.37.1_linux_386/frpc /usr/bin/frpc
cp frp_0.37.1_linux_386/frpc.ini /etc/frp/frpc.ini
cp frp_0.37.1_linux_386/systemd/frpc.service /usr/lib/systemd/system/frpc.service
systemctl status frpc.service
systemctl start frpc.service
相关推荐
- 网站seo该怎么优化
-
一、网站定位在建设一个网站之前,我们首先要做的就是一个网站清晰的定位,会带来转化率相对较高的客户群体,我们建站的目的就是为了营销,只有集中来做某一件事,才会更好的展现我们的网站。在做SEO优化的同时...
- 3个小技巧教你如何做好SEO优化
-
想半路出家做SEO?可是,怎么才做的好呢?关于SEO专业技术弄懂搜索引擎原理,咱们做搜索引擎排名的首先就是要了解搜索引擎的工作原理,对SEO优化有更深入了解之后再来做SEO,你就能从搜索引擎的视点...
- SEO指令分享:filetype指令
-
filetype用于搜索特定的文件格式。百度和谷歌都支持filetype指令。比如搜索filetype:pdf今日头条返回的就是包含今日头条这个关键词的所有pdf文件,如下图:百度只支持:pdf...
- 网站seo优化技巧大全
-
SEO在搜索引擎中对检索结果进行排序,看谁最初是在用户的第一眼中看到的。实际上,这些排名都是通过引擎的内部算法来实现的。例如,百度算法很有名。那么,对百度SEO的优化有哪些小技巧?下面小编就会说下针对...
- 小技巧#10 某些高级的搜索技巧
-
由于某些原因,我的实验场所仅限百度。1.关键词+空格严格说来这个不能算高级,但关键词之间打空格的办法确实好用。我习惯用右手大拇指外侧敲击空格键,这个习惯在打英文报告时尤其频繁。2.site:(请不要忽...
- MYSQL数据库权限与安全
-
权限与安全数据库的权限和数据库的安全是息息相关的,不当的权限设置可能会导致各种各样的安全隐患,操作系统的某些设置也会对MySQL的安全造成影响。1、权限系统的工作原理...
- WPF样式
-
UniformGrid容器<UniformGridColumns="3"Rows="3"><Button/>...
- MySQL学到什么程度?才有可以在简历上写精通
-
前言如今互联网行业用的最多就是MySQL,然而对于高级Web面试者,尤其对于寻找30k下工作的求职者,很多MySQL相关知识点基本都会涉及,如果面试中,你的相关知识答的模糊和不切要点,基...
- jquery的事件名称和命名空间的方法
-
我们先看一些代码:当然,我们也可以用bind进行事件绑定。我们看到上面的代码,我们可以在事件后面,以点号,加我们的名字,就是事件命名空间。所谓事件命名空间,就是事件类型后面以点语法附加一个别名,以便引...
- c#,委托与事件,发布订阅模型,观察者模式
-
什么是事件?事件(Event)基本上说是一个用户操作,如按键、点击、鼠标移动等等,或者是一些提示信息,如系统生成的通知。应用程序需要在事件发生时响应事件。通过委托使用事件事件在类中声明且生成,且通过...
- 前端分享-原生Popover已经支持
-
传统网页弹窗开发需要自己处理z-index层级冲突、编写点击外部关闭的逻辑、管理多个弹窗的堆叠顺序。核心优势对比:...
- Axure 8.0 综合帖——新增细节内容
-
一、钢笔工具与PS或者AI中的钢笔工具一样的用法。同样有手柄和锚点,如果终点和起点没有接合在一起,只要双击鼠标左键即可完成绘画。画出来的是矢量图,可以理解为新的元件。不建议通过这个工具来画ICON图等...
- PostgreSQL技术内幕28:触发器实现原理
-
0.简介在PostgreSQL(简称PG)数据库中,触发器(Trigger)能够在特定的数据库数据变化事件(如插入、更新、删除等)或数据库事件(DDL)发生时自动执行预定义的操作。触发器的实现原理涉及...
- UWP开发入门(十七)--判断设备类型及响应VirtualKey
-
蜀黍我做的工作跟IM软件有关,UWP同时会跑在电脑和手机上。电脑和手机的使用习惯不尽一致,通常我倾向于根据窗口尺寸来进行布局的变化,但是特定的操作习惯是依赖于设备类型,而不是屏幕尺寸的,比如聊天窗口的...