

frp主要由两个组件组成:客户端(frpc) 和 服务端(frps)。通常情况下,服务端部署在具有公网 IP 地址的机器上,而客户端部署在需要穿透的内网服务所在的机器上。
由于内网服务缺乏公网 IP 地址,因此无法直接被非局域网内的用户访问。用户通过访问服务端的 frps,frp 负责根据请求的端口或其他信息将请求路由到相应的内网机器,从而实现通信。
在 frp 中,一个代理对应一个需要公开访问的内网服务。一个客户端可以同时配置多个代理,以满足不同的需求。
frp 支持多种代理类型,以适应不同的使用场景。以下是一些常见的代理类型:
每种代理类型适用于不同的使用情境,您可以根据需求选择合适的代理类型来配置 frp。
根据之前的文章 WebDAV+frp内网穿透工具实现像访问本地硬盘一样访问远程NAS
公网服务器上面安装frps服务端
[common]
bind_address = 0.0.0.0
bind_port = FRPS的监听端口
authentication_method = token
authenticate_heartbeats = false
authenticate_new_work_conns = false
token = FRPS服务TOKEN
log_file = /usr/local/frp/logs/frps.log
log_level = info
log_max_days = 30
家中内网服务器安装frpc
[common]
server_addr = 云服务器公网IP
server_port = FRPS的监听端口
authentication_method = token
authenticate_heartbeats = false
token = FRPS服务TOKEN
log_file = /usr/local/frp/logs/frpc.log
log_level = info
log_max_days = 30
[918_synologyds220_http]
type = tcp
local_ip = 192.168.31.200
local_port = 5000
remote_port = 5000
这样可以从公网IP访问家里的NAS

但是带来这样一个问题,由于通过frp内网穿透NAS完全暴露公网 ,NAS上面看到公网访问过来的IP都是本机IP 192.168.31.200
如果有暴力破解攻击,然后NAS又开启了自动封锁,这时就会出现问题,封锁了192.168.31.200这个IP导致正常从公网访问的其他用户无法正常登录了

通过内网穿透外部访问NAS的看到的IP要为真实的源公网IP frpc 中type为tcp类型这种方式就不可行
找到frp的官方文档中这篇实践示例找到的解决方案
https://gofrp.org/zh-cn/docs/examples/vhost-http/
HTTP 类型的代理非常适合将内网的 Web 服务通过自定义域名提供给外部用户。 相比于 TCP 类型代理,HTTP 代理不仅可以复用端口,还提供了基于 HTTP 协议的许多功能 简单配置 HTTP 类型的代理,您可以让用户通过自定义域名访问内网的 Web 服务
指定 HTTP 请求的监听端口为 5000
cat /usr/local/frp/frps.ini
[common]
bind_address = 0.0.0.0
bind_port = 8111
vhost_http_port = 5000
authentication_method = token
authenticate_heartbeats = false
authenticate_new_work_conns = false
token = XXXXXXXXXX
log_file = /usr/local/frp/logs/frps.log
log_level = info
log_max_days = 30
重新启动frps服务

[common]
`server_addr = 47.1XX.9X.2X7
server_port = 8111
authentication_method = token
authenticate_heartbeats = false
authenticate_new_work_conns = false
token = XXXXXXXXXX
log_file = /usr/local/frp/logs/frpc.log
log_level = info
log_max_days = 30
[Synology_DSM5000_domain]
type = http
local_ip = 192.168.31.200
local_port = 5000
custom_domains = 47.1XX.9X.2X7`

然后重新启动frpc服务
这时再从公网访问NAS这时看到连接过来的用户IP就是公网真实源IP

custom_domains这里当然你可以用域名,前提你做了ICP备案,域名解析指到FRPS服务器的公网IP,否则你懂的
本文分享自 WalkingCloud 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!