frp内网穿透安装及配置

frp内网穿透安装及配置

下载安装包#

frp-release

本次的演示环境为:

服务端:Alibaba Cloud Linux

客户端:Windows 11 x86_64

配置#

服务端 frps.toml#

Copy
# 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 = "admin" # Web 管理界面的密码 #log.to="./frps.log" # 日志输出路径,注释掉表示不启用文件日志输出 log.level = "trace" # 日志级别,trace 表示记录所有日志信息,包括调试信息 log.maxDays = 3 # 日志文件保留的最大天数 #allowPorts = [ # 允许客户端使用的端口范围,注释掉表示不限制端口 # { start = 6000, end = 7000 }, #]

客户端 frpc.toml#

Copy
serverAddr = "120.24.1.53" # 服务端的 IP 地址,客户端连接的目标地址 serverPort = 7000 # 服务端的监听端口,客户端通过此端口连接服务端 loginFailExit = true # 登录失败时是否退出客户端,true 表示登录失败则退出 #log.to = "./frpc.log" # 日志输出路径,注释掉表示不启用文件日志输出 log.level = "trace" # 日志级别,trace 表示记录所有日志信息,包括调试信息 log.maxDays = 3 # 日志文件保留的最大天数 auth.method = "token" # 鉴权方法,此处使用 token 方式进行身份验证 auth.token = "123456" # 鉴权 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> 访问服务

子域名映射#

就是设置公网DNS的解析,这里以阿里云的域名为例

操作路径:公网DNS解析 >> 权威域名解析 >> 解析设置 >> 添加记录

如果 frpc.toml 文件中配置了多个子域,则一个个依次添加

记录类型:A

主机记录:api.baizesz.com // 添加api这个子域

记录值:填写你服务器的ip地址

其它使用默认值就行

防火墙设置#

云服务器端口授权#

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

系统防火墙设置#

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

测试端口连通性:

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

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

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

启动#

服务端#

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

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

Copy
# ./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

客户端#

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

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

Copy
# .\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.1.53:7500

验证连接#

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

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

写法一:

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

写法二:

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

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

Copy
[webServer] addr = "127.0.0.1" # Web 服务器的绑定地址,仅监听本地访问 port = 7400 # Web 服务器的监听端口,用于访问 Web 管理界面 user = "admin" # Web 管理界面的用户名 password = "admin" # Web 管理界面的密码 auth.token = "123456" # 这里就会报错,它会被认为是webServer的子配置
posted @   热血文码士  阅读(262)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
CONTENTS

打赏

>>

欢迎打赏支持我 ^_^

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示