frp内网穿透安装及配置

news/2025/1/22 23:27:39/文章来源:https://www.cnblogs.com/nenhall/p/18686946

frp内网穿透安装及配置

下载安装包

frp-release

本次的演示环境为:

服务端:Alibaba Cloud Linux

客户端:Windows 11 x86_64

配置

服务端 frps.toml

# frps.toml
bindAddr = "0.0.0.0"  # 服务端绑定的 IP 地址,0.0.0.0 表示监听所有网络接口
bindPort = 7000       # 服务端监听的 TCP 端口,客户端通过此端口连接
kcpBindPort = 7000    # 服务端监听的 KCP 端口,用于加速连接
vhostHTTPPort = 8080  # 服务端监听的 HTTP 端口,用于支持虚拟主机功能
subdomainHost = "baizesz.com"  # 虚拟主机的域名后缀,客户端可以通过子域名访问服务
userConnTimeout = 60  # 用户连接超时时间(单位:秒),客户端在指定时间内未完成连接则会被断开auth.method = "token"  # 鉴权方法,此处使用 token 方式进行身份验证
auth.token = "123456"  # 鉴权 token,客户端需要使用此 token 才能连接到服务端webServer.addr = "0.0.0.0"  # Web 服务器的绑定地址,0.0.0.0 表示监听所有网络接口
webServer.port = 7500       # Web 服务器的监听端口,用于访问 Web 管理界面
webServer.user = "admin"    # Web 管理界面的用户名
webServer.password = "12UnTBTKENTYTBuL"  # Web 管理界面的密码#log.to="./frps.log"  # 日志输出路径,注释掉表示不启用文件日志输出
log.level = "trace"   # 日志级别,trace 表示记录所有日志信息,包括调试信息
log.maxDays = 3       # 日志文件保留的最大天数#allowPorts = [  # 允许客户端使用的端口范围,注释掉表示不限制端口
#    { start = 6000, end = 7000 },
#]

客户端 frpc.toml

serverAddr = "120.24.191.53"  # 服务端的 IP 地址,客户端连接的目标地址
serverPort = 7000             # 服务端的监听端口,客户端通过此端口连接服务端
loginFailExit = true          # 登录失败时是否退出客户端,true 表示登录失败则退出#log.to = "./frpc.log"        # 日志输出路径,注释掉表示不启用文件日志输出
log.level = "trace"           # 日志级别,trace 表示记录所有日志信息,包括调试信息
log.maxDays = 3               # 日志文件保留的最大天数auth.method = "token"         # 鉴权方法,此处使用 token 方式进行身份验证
auth.token = "9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b"  # 鉴权 token,客户端需要使用此 token 才能连接到服务端transport.dialServerTimeout = 60  # 连接服务端的超时时间(单位:秒)webServer.addr = "127.0.0.1"  # Web 服务器的绑定地址,仅监听本地访问
webServer.port = 7400          # Web 服务器的监听端口,用于访问 Web 管理界面
webServer.user = "admin"       # Web 管理界面的用户名
webServer.password = "admin"   # Web 管理界面的密码# 定义代理服务,用于将本地服务暴露到公网
[[proxies]]
name = "django"               # 代理服务的名称
type = "http"                 # 代理类型,此处为 HTTP 代理
localIP = "127.0.0.1"         # 本地服务的 IP 地址
localPort = 8000              # 本地服务的端口
subdomain = "api"             # 子域名,通过 <subdomain>.<subdomainHost> 访问服务[[proxies]]
name = "webui"                # 另一个代理服务的名称
type = "http"                 # 代理类型,此处为 HTTP 代理
localIP = "127.0.0.1"         # 本地服务的 IP 地址
localPort = 7860              # 本地服务的端口
subdomain = "webui"           # 子域名,通过 <subdomain>.<subdomainHost> 访问服务

防火墙设置

云服务器端口授权

在阿里云服务器控制台 >> 安全组 >> 入方向 >> 添加对应的规则 》协议类型 tcp, 端口填上上面frps.toml配置文件中所有的商品号,源选择所有IPv4(0.0.0.0/0)

系统防火墙设置

若在云服务器端口授权后,使用下面命令无法连通,则需要设置云服务系统的防火墙端口放行

测试端口连通性:

# 改成云服务器的 ip 以及端口号
telnet 120.24.191.53 8080
# 或者用下面这个命令
Test-NetConnection -ComputerName 120.24.191.53 -Port 7500

如果能连通,则不需要设置,否则按下面命令在服务器端进行设置

# 查看所有允许的端口
sudo firewall-cmd --list-all
# 添加一个7400端口
sudo firewall-cmd --add-port=7400/tcp --permanent
# 刷新防火墙配置
sudo firewall-cmd --reload

启动

服务端

cd xxx/frps_path/ # 进入 frps 的目录
./frps -c ./frps.toml # 用frps.toml 文件配置启动 frps

启动成功就可以看到下信息(根据你映射的端口不一样,信息会有差别)

# ./frps -c ./frps.toml
2025-01-22 21:22:37.390 [I] [frps/root.go:105] frps uses config file: ./frps.toml
2025-01-22 21:22:37.646 [I] [server/service.go:237] frps tcp listen on 0.0.0.0:7000
2025-01-22 21:22:37.646 [I] [server/service.go:246] frps kcp listen on udp 0.0.0.0:7000
2025-01-22 21:22:37.646 [I] [server/service.go:305] http service listen on 0.0.0.0:8080
2025-01-22 21:22:37.646 [I] [frps/root.go:114] frps started successfully
2025-01-22 21:22:37.646 [I] [server/service.go:351] dashboard listen on 0.0.0.0:7500

客户端

cd xxx/frpc_path/ # 进入 frps 的目录
./frpc -c ./frpc.toml # 用frps.toml 文件配置启动 frps

启动成功就可以看到下信息(根据你映射的端口不一样,信息会有差别)

# .\frpc.exe -c .\frpc.toml
2025-01-22 21:25:30.085 [I] [sub/root.go:142] start frpc service for config file [.\frpc.toml]
2025-01-22 21:25:30.089 [I] [client/service.go:295] try to connect to server...
2025-01-22 21:25:30.089 [I] [client/service.go:174] admin server listen on 127.0.0.1:7400
2025-01-22 21:25:30.121 [I] [client/service.go:287] [9adf4570a2ac6630] login to server success, get run id [9adf4570a2ac6630]
2025-01-22 21:25:30.121 [I] [proxy/proxy_manager.go:173] [9adf4570a2ac6630] proxy added: [django webui]
2025-01-22 21:25:30.121 [T] [proxy/proxy_wrapper.go:200] [9adf4570a2ac6630] [webui] change status from [new] to [wait start]
2025-01-22 21:25:30.121 [T] [proxy/proxy_wrapper.go:200] [9adf4570a2ac6630] [django] change status from [new] to [wait start]
2025-01-22 21:25:30.131 [I] [client/control.go:168] [9adf4570a2ac6630] [webui] start proxy success
2025-01-22 21:25:30.131 [I] [client/control.go:168] [9adf4570a2ac6630] [django] start proxy success

查看连接状态

刚才已经配置了 frp 的web 服务,打开下页链接就可以查看连接状态

http://120.24.191.53:7500

验证连接

在网页中打开刚才我拉映射的两个 http 端口

  • http://127.0.0.1:7860/

  • http://127.0.0.1:8000/api/v1/auth

没有配出的话是能正常访问的,更多属性配置查看官网,另外配置文件的写法,其实有两种,下面以 webServer 举例:

写法一:

webServer.addr = "127.0.0.1"   # Web 服务器的绑定地址,仅监听本地访问
webServer.port = 7400          # Web 服务器的监听端口,用于访问 Web 管理界面
webServer.user = "admin"       # Web 管理界面的用户名
webServer.password = "admin"   # Web 管理界面的密码

写法二:

[webServer]
addr = "127.0.0.1"   # Web 服务器的绑定地址,仅监听本地访问
port = 7400          # Web 服务器的监听端口,用于访问 Web 管理界面
user = "admin"       # Web 管理界面的用户名
password = "admin"   # Web 管理界面的密码

上面两种写法是等价的,但是如果两种写法混合使用的话,不建议这样做,因为从[]开始它会一直找往下,直到到下一组[],不然它都会认为是当前组的,例如:

[webServer]
addr = "127.0.0.1"   # Web 服务器的绑定地址,仅监听本地访问
port = 7400          # Web 服务器的监听端口,用于访问 Web 管理界面
user = "admin"       # Web 管理界面的用户名
password = "admin"   # Web 管理界面的密码
auth.token = "9944b09199c62bcf9418ad846dd0e4bbdfc6ee4b" # 这里就会报错,它会被认为是webServer的子配置

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/873475.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat 高并发之道原理拆解与性能调优

上帝视角拆解 Tomcat 架构设计,在了解整个组件设计思路之后。我们需要下凡深入了解每个组件的细节实现。从远到近,架构给人以宏观思维,细节展现饱满的美。 上回👉详情点我【Tomcat】Tomcat 架构原理解析到架构设计借鉴 站在上帝视角给大家拆解了 Tomcat 架构设计,分析 To…

Vue3 —— 安装及配置环境

Vue3的安装、配置(✿◕‿◕✿)Vue官网:https://vuejs.org/配置环境终端:Linux和Mac上可以用自带的终端。Windows上推荐用powershell或者cmd。Git Bash有些指令不兼容。安装Node.js:安装地址:https://nodejs.org/en/安装@vue/cli:执行:npm i -g @vue/cli如果执行后面的操作…

二. Redis 超详细的安装教程((七步)一步一步指导,步步附有截屏操作步骤)

二. Redis 超详细的安装教程((七步)一步一步指导,步步附有截屏操作步骤) @目录二. Redis 超详细的安装教程((七步)一步一步指导,步步附有截屏操作步骤)1. Redis 详细安装教程2. Redis 后台基本启动 & 详细的基本使用3. Redis 服务器的关闭和启动的注意事项4. 如何修改 Re…

数据分库分表和迁移方案

在我们业务快速发展的过程中,数据量必然也会迎来突飞猛涨。那么当我们的数据量百倍、千倍、万倍、亿倍增长后,原有的单表性能就不能满足我们日常的查询和写入了,此时数据架构就不得不进行拆分,比如单表拆分成10张表、100张表、单个月分多张表等等。下面我们针对具体案例分析…

Power BI 连接GaussDB提取数据方法

Power BI本身没有直接的链接器来获取GaussDB,目前连接GaussDB的方法有2个: ODBC, JDBC,这两种方式在云端都要通过设置网关,pbi云端通过网关链接到虚拟机或者某台电脑上,电脑安装个人网关(组织网关没有成功,不知道为什么,知道原因的希望能留言),下面说下两种连接方式: …

2025-1-20-盒子模型-弹性盒子模型

重新学一下巩固,之前发的看不了,本来还想着直接看呢 盒子模型 width,height是宽高,padding是内边距,如果里边有文本的话一般是贴着左上方,但是有内边距就不会,类似下边的演示图;border是内外之间边框,就是给宽高之外加一层;margin是外边距,可以理解为是你构造的边框…

【Ubuntu】安装OpenSSH启用远程连接

【Ubuntu】安装OpenSSH启用远程连接 零、安装软件 使用如下代码安装OpenSSH服务端: sudo apt install openssh-server壹、启动服务 使用如下代码启动OpenSSH服务端: sudo systemctl start ssh贰、配置SSH(可跳过) 配置文件 OpenSSH的配置文件所在位置:/etc/ssh/sshd_confi…

CTF-web第二步!

菜狗杯web的传说之下。打开F12,发现有个Game=new Underophidian(gameCanvas)表明有个Game变量存储着数据。在控制台输入Game获取,根据题意,修改分数,然后玩一下就可以得到flag了。

【CodeForces训练记录】Codeforces Round 1000 (Div. 2)

训练情况赛后反思 C题猜了个假结论WA4,每次选择度最多的删掉,在连续三个度都是最大的情况下,删中间的会寄 A题 有点前缀和的感觉,\([1,l]\) 互质个数为 \(l\),\([1,r]\) 互质个数为 \(r\),所以区间 \([l,r]\) 的个数就是 \(r-l\),特判一下 \(l=1,r=1\) 的情况答案是 \(1\…

GUIClip在IMGUI中的作用

目录简介IMGUIGUIClipPush Pop Count局部坐标StyleDraw中Rect点的位置鼠标位置绝对坐标ScrollOffset对局部坐标的影响局部坐标和绝对坐标的相互转化裁剪参考链接 简介 Unity中的IMGUI是一个独立于ugui的UI系统。IMGUI是事件(消息)驱动的UI系统,主要用于编写开发工具。 Unity官…

ceph-安装

【os】 ubuntu1804 【文心上找到的】 【步骤】一、环境准备‌配置节点名称‌:配置集群各节点的hostname,确保互相可以通过hostname来解析节点IP,不需要通过DNS。 ‌时间同步‌:确保所有节点的时间同步,以避免时间不一致导致的问题。 ‌关闭防火墙和SELinux‌:为了简化安装…

开源项目芋道源码解析 [开篇]

文章首发于我的博客:https://blog.liuzijian.com/post/source-code-about-ruoyi-vue-pro.html 1.引言 芋道(又名yudao,ruoyi-vue-pro)是一个基于spring-boot框架的单体Java后端开源项目,拥有基于RBAC模型的组织架构管理、CRM、ERP、商城、代码生成、AI等多个功能模块。封装了…