frp是什么
frp(fast reverse proxy)是一款高性能的反向代理应用,专注于内网穿透。它支持多种协议,包括 TCP、UDP、KCP、HTTP、HTTPS 等,并且具备 P2P 通信功能。使用 frp,您可以安全、便捷地将内网服务暴露到公网,通过拥有公网 IP 的节点进行中转。
内网穿透使用场景
- 远程桌面或者是访问内网服务
个人觉得这个需求应该是最强烈的,有时需要远程桌面连接公司自己的电脑处理问题或者自己家里连着宽带的电脑,没有 frp 以前只能找类似花生壳提供的解决方案。
2. webhook 接收
接收类似 Github 或者第三方提供 Webhook 的场景。
3. 反向代理
有些国外 vps 被 gfw 墙了不能 ssh 连接,也可以通过frp 进行访问
工作原理
frp 主要由两个组件组成:客户端(frpc) 和 服务端(frps)。通常情况下,服务端部署在具有公网 IP 地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。
由于内网服务缺乏公网 IP 地址或者某些原因用户不能直接访问,用户通过访问服务端的 frps,frp 负责根据请求的端口或其他信息将请求路由到相应的内网机器,从而实现通信。实际流量会变成 client->frps->frpc
frps server 检查 selinux 和防火墙
frps server上的centos 需要检查 selinux 和防火墙iptables 或者 firewalld
注:在国内公有云上如果使用域名,请确认域名有备案,要不然还是建议使用 ip 连接,要不然会有意想不到的连接错误。
frps server的配置文件是frps.toml,frpc client的配置文件是frpc.toml,下面配置frps.toml
# 可以参考官方配置frps_full_example.toml,里面有详细配置说明
# https://github.com/fatedier/frp/blob/405969085fb6b5c8058c88ca250e930ba6092153/conf/frps_full_example.toml
#frps监听端口
bindPort = 17000 #这个端口建议不要用默认的,一般修改看自己心情和好记录的数字
# 配置 frp dashboard
webServer.addr = "0.0.0.0" # 外网访问要设置成0.0.0.0,内网访问要127.0.0.1
webServer.port = 7500 #设置服务器查看端口
webServer.user = "admin" # 设置服务器查看密码
webServer.password = "*******" #自己的登录密码
# 配置 token 认证,frpc 客户端也需指定一样的token
auth.method = "token" #防止不三不四的人恶意链接
auth.token = "abc123jki" #密码过滤
# 只允许frpc绑定指定ports.
allowPorts = [
{ start = 60000, end = 60500 }
]
设置服务器端的开机的开机自动启动项目
使用 systemd 来管理 frps 服务,并设置开机自启,创建frps.service文件
vim /etc/systemd/system/frps.service
---------------------------------------------------------我的设置参考
#frps监听端口
bindPort = 3998
vhostHTTPPort = 8080
# vhostHTTPPort = 3997
# 默认为 127.0.0.1,如果需要公网访问,需要修改为 0.0.0.0。配置 frp dashboard
webServer.addr = “0.0.0.0”
webServer.port = 7500
# dashboard 用户名密码,可选,默认为空
webServer.user = “********”
webServer.password = “**************”
# 配置 token 认证,frpc 客户端也需指定一样的token
auth.method = “token”
auth.token = “**********”
--------------------------------------------------------- /etc/systemd/system,路径地址
写入frps.service内容如下:
[Unit]
Description=FRP Server
After=network.target
[Service]
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart=/usr/local/frp_0.57.0_linux_amd64/frps -c /usr/local/frp_0.57.0_linux_amd64/frps.toml
Type=simple
[Install]
WantedBy=multi-user.target
-------------------------------------------我的设置参考
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /etc/frp/frps -c /etc/frp/frps.toml
[Install]
WantedBy = multi-user.target
------------------------------------------------------
# 设置frps开机启动
systemctl enable frps
# 启动frps
systemctl start frps
# 查看frps服务状态
systemctl status frps
frpc安装============本地内网机器安装
frpc client的配置文件是frpc.toml,编辑frpc.toml
# 可以参考官方配置frpc_full_example.toml,里面有详细配置说明
# https://github.com/fatedier/frp/blob/405969085fb6b5c8058c88ca250e930ba6092153/conf/frpc_full_example.toml
# 填写你的frps server的ip 和 port
serverAddr = "1.1.1.1"
serverPort = 17000
# 配置 token 认证,frpc 客户端需指定frps一样的token
auth.method = "token"
auth.token = "abc123jki"
# 在 frp 中,一个代理对应一个需要公开访问的内网服务。
# 一个客户端可以同时配置多个代理,以满足不同的需求。
# 下面配置的是将 win10 远程桌面暴露到 frps_ip 60002端口上
[[proxies]]
name = "windows remote desktop"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 60002
---------------------------------自己测试文件参考
serverAddr = “*********”
serverPort = *******
auth.method = “token”
auth.token = “*******”
#remotePort = ****
# [[proxies]]
# name = “test-tcp”
# type = “tcp”
# localIP = “127.0.0.1”
# localPort = 22
# remotePort = 8080
# [[proxies]]
# name = “web”
# type = “http”
# localPort = 80
# customDomains = [“ymx.wuhanguolu.com”]
# [[proxies]]
# name = “web2”
# type = “http”
# localPort = 80
# # remotePort = 8080
# customDomains = [“ymx.168hot.cn”]
[[proxies]]
name = “web”
type = “http”
localIP = “192.168.9.101”
localPort = 8080
# vhostHTTPPort = 3997
customDomains = [“nw.wuhanfamen.com”]
# locations = [“/www/wwwroot/ymx.168hot.cn/”]
[[proxies]]
name = “web-ceshi”
type = “http”
localIP = “192.168.9.101”
localPort = 8080
customDomains = [“ceshi.wuhanfamen.com”]
[[proxies]]
name = “web-shangcheng-a”
type = “http”
localIP = “192.168.9.101”
localPort = 8080
customDomains = [“a.wuhanfamen.com”]
[[proxies]]
name = “web-weibeianceshi-wwuhantuoguncn”
type = “http”
localIP = “192.168.9.101”
localPort = 8080
customDomains = [“w.wuhantuogun.cn”]
————————-frpc service [位置:/etc/systemd/system/frpc.service]
[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
User=root
Restart=on-failure
RestartSec=5s
ExecStart=/frp/frpc -c /frp/frpc.toml
ExecReload=/frp/frpc -c /frp/frpc.toml
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
---------------------------
1 条回复
https://gitee.com/yimiaoOpen/nodcloud?spm=a2c6h.12873639.article-detail.8.50401365UTWadq#https://gitee.com/link?target=http%3A%2F%2Fv6.yimiaonet.com%2F