需求:我在 frps 启用了subdomain_host,并且将 *.example.com 解析到我的云服务器(假设 5.6.7.8 )。这样一来,任何人只要有我的云服务器 IP 、frps 端口以及 token ,都能通过自定义的二级域名(如 test1.example.com )将本地暴露在公网。我现在需要在 frps 那里设置域名和二级域名白名单,只有白名单里的域名和二级域名才能使用我的反代服务。
我用 cloudflare 作为 DNS 管理并且开启了代理(橙色的云朵),因此,我所有的二级域名自带 https ,并且可以正常访问所有内网 web 服务。我刚才试了用 nginx 来创建域名白名单,但是无法正常访问内网 web 服务。我需要不影响 cloudflare 免费 ssl 使用,同时能在 frps 那里启用白名单。
FRPS 和 FRPC 配置如下:
FRPS
# frps.ini
[common]
bind_port = 7000
vhost_http_port = 80
subdomain_host = example.com
token = test123
FRPC
[common]
server_addr = 5.6.7.8
server_port = 7000
authentication_method = token
token = test123
[web1]
type = http
local_ip = 127.0.0.1
local_port = 8080
subdomain = web1
custom_domains = customer.com
authentication_method = token
token = test123
在上面这个配置里面,假设某个不认识的人,知道了我的服务器 IP 5.6.7.8 、端口 7000 以及 token test123 ,他就能免费用我的反代服务。我想限制只有我授权的域名和二级域名才能用我的反代服务。
有解决访问的老哥,请加我微信报价,我的预算是 100RMB
1
des 2023-08-18 11:49:57 +08:00
所以为什么不保密 token ,让别人知道呢?
|
3
bing1178 2023-08-18 11:57:51 +08:00
前面加个 nginx 呢? 有电报吗
|
4
des 2023-08-18 11:59:45 +08:00
|
5
jllove 2023-08-18 12:03:05 +08:00 via iPhone
@bing1178 试过加 nginx ,访问不了,*.example.com 的解析使用 Cloudflare 的免费 https ,不知道是不是这个原因。我没用电报
|
8
yaott2020 2023-08-18 12:05:38 +08:00 via Android 1
@sudoy frps 可以设置多 token ,有插件实现,如果会 go 的话可以自己写,不难,我自己就写了一个
|
9
bing1178 2023-08-18 12:06:57 +08:00
cloudflare 回源协议是 https 还是 http ?
不过 nginx 这都支持。nginx 这只通过允许的域名。 |
10
yinmin 2023-08-18 13:44:20 +08:00 via iPhone 1
|
11
mcone 2023-08-18 13:47:57 +08:00 1
怎么感觉有点精神分类了,中间那个号也是楼主吗?
个人感觉这种 token 如果分发对象不可信(可能会散播),token 鉴权的意义其实就没有了…… |
12
sailei 2023-08-18 14:15:31 +08:00
cloudflare 代理的 ip 应该是动态的吧
|
13
virualv 2023-08-18 18:04:03 +08:00 via iPhone 1
你是只要使用 http 和 https 反代嘛
|
14
ysc3839 2023-08-18 19:10:06 +08:00 via Android 2
怀疑是 X-Y Problem https://coolshell.cn/articles/10804.html
建议说原始需求 我个人推测,你需要让别人可以借用你的服务器进行 http/https 的内网穿透,但是要限制别人能用的域名? 这种需求个人建议用 WireGuard+nginx 反代,不同客户端用不同的密钥,客户端只需要暴露未加密的 http 服务,https 加密由服务器上的 nginx 来做,可以配合通配域名证书。这种方案客户端密钥泄漏了可以取消授权,同时客户端和服务器之间通信是确保安全的,frp 的加密功能安全性未知。 |
15
ysc3839 2023-08-18 19:18:21 +08:00 via Android 1
@ysc3839 上述这种方案,假如你添加了某人 (假设是 A) 的 Key-A 的公钥,这个 Key-A 的私钥泄漏之后,别人使用时会出现 A 的客户端和别人的客户端“打架”的情况,实际上很难正常通信。
WireGuard 的逻辑是,收到包后更新对端 IP ,如果有包要发到对端,就会发到最后更新的 IP ,如果有两个客户端用相同的 Key ,且同时向服务端发包,那对端 IP 就会在这两个客户端之间反复横跳,服务端发回的包也是一部分发到一个客户端,一部分发到另一个,因此很难正常通信。 |
16
sudoy OP |
18
sudoy OP @mcone
“怎么感觉有点精神分类了,中间那个号也是楼主吗?“ 哈哈那个也是我的号,一个办公室登录,一个手机和家里登录。 ”个人感觉这种 token 如果分发对象不可信(可能会散播),token 鉴权的意义其实就没有了……” 是的,token 只是其中一道保护,所以我需要域名白名单这另外一道保护 |
19
sudoy OP @sailei
“cloudflare 代理的 ip 应该是动态的吧” 这个没有关系,我启用 cloudflare 代理也正常使用,问题在于我加了一道 nginx 就出错。现在问题解决了,一个老哥帮我配置了 nginx 就解决了 |
21
sudoy OP @ysc3839 感谢老哥写这么专业的回复,我这个其实没有那么复杂,每个客户端分配一个唯一的 id ,一个 id 绑定一个域名或者子域名。而且我只启用 http 服务,所以没有域名他即便有我的反代信息也没啥用。
|
24
yinmin 2023-08-19 14:38:25 +08:00 1
@sudoy #23 仍然可以使用你的服务器做中转 https://gofrp.org/docs/examples/stcp/
|