frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP、UDP、HTTP、HTTPS 等多种协议。可以将内网服务以安全、便捷的方式通过具有公网 IP 节点的中转暴露到公网。
frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。
内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。
用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。
./frps -c ./frps.ini 启动服务端,再通过 ./frpc -c ./frpc.ini 启动客户端。
1.应用下载
git下载地址:https://github.com/fatedier/frp/releases
版本对应
注意:
- 服务器端和内网机器端下载的版本要相同,否则可能会影响内网穿透
- 根据服务器系统选择合适的脚本
- 服务端部署,可以只保留服务端文件 frps**
- 客户端部署,可以只保留客户端文件 frpc**
2.外网服务端配置文件修改启动
2.1 服务端需要修改Frps.ini文件
[common] #内网穿透服务器端监听的IP地址,可以省略,默认为127.0.0.1 bind_addr = 0.0.0.0 #服务器端监听的端口,默认是7000,可自定义 bind_port = 7001 # 面板地址 #dashboard_addr = 0.0.0.0 #dashboard_port = 7500 # 面板用户名、密码 #dashboard_user = admin #dashboard_pwd = admin
2.2 启动命令 (需要切换到该目录下)
./frps -c frps.ini
2.3 启动日志
-rwxrwxrwx 1 root root 17182720 8月 2 15:29 frps -rwxrwxrwx 1 root root 26 8月 2 15:32 frps.ini [root@VM-16-7-centos frp]# ./frps -c frps.ini 2023/08/03 10:09:45 [I] [root.go:204] frps uses config file: frps.ini 2023/08/03 10:09:45 [I] [service.go:206] frps tcp listen on 0.0.0.0:7009 2023/08/03 10:09:45 [I] [root.go:213] frps started successfully
3.内网、本地服务端配置
3.1 需要修改Frpc.ini文件
[common] #外网-服务器端ip server_addr = xx.xx.xx.xx #外网-服务器端监听的端口(必须与Frps.ini中的配置一致) server_port = 7001 [ssh] #配置类型为http协议 type = tcp #内网机器的IP local_ip = 127.0.0.1 #内网需要监听的端口(本地 内网 所启服务端口) local_port = 9999 remote_port = 9999 use_encryption = true #if true, message will be compressed use_compression = true #配置多个协议的话 [web] type = http local_ip = 127.0.0.1 local_port = 9991 remote_port = 9991 # custom_domains是通过frp服务器端访问客户端的域名,必须输入完整的域名, #custom_domains = zhishi.com
3.2 启动命令
./frpc -c frpc.ini
3.3 启动日志
4.访问服务
1、启动服务端frps服务成功
2、启动内网本地客户frpc服务成功
3、启动需要映射本机服务成功
server_addr:local_port
访问成功,至此搭建成功!
5.身份认证 (需要的话)
目前 frpc 和 frps 之间支持两种身份验证方式,token 和 oidc,默认为 token。
通过 frpc.ini 和 frps.ini 的 [common] 段落中配置 authentication_method 来指定要使用的身份验证方式。
只有通过身份验证的客户端(frpc)才能成功连接 frps。
Token
基于 Token 的身份验证方式比较简单,需要在 frpc 和 frps 的 [common] 段落中配置上相同的 token 参数即可。
在请求头中加入即可
authentication_method = token
token = my_token
原文链接:https://blog.csdn.net/weixin_42666623/article/details/132065822