付费咨询 frps 设置

264 天前
 sudoy

需求:我在 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

1165 次点击
所在节点    问与答
26 条回复
des
264 天前
所以为什么不保密 token ,让别人知道呢?
sudoy
264 天前
@des token 是发给很多学生使用的,为了避免学生将 token 泄露给别人,才想到限制域名
bing1178
264 天前
前面加个 nginx 呢? 有电报吗
des
264 天前
jllove
264 天前
@bing1178 试过加 nginx ,访问不了,*.example.com 的解析使用 Cloudflare 的免费 https ,不知道是不是这个原因。我没用电报
jllove
264 天前
@des 这个昨天研究过,不会弄
des
264 天前
@jllove 用 nginx 应该是最简单的,应该是你没配置对
yaott2020
264 天前
@sudoy frps 可以设置多 token ,有插件实现,如果会 go 的话可以自己写,不难,我自己就写了一个
bing1178
264 天前
cloudflare 回源协议是 https 还是 http ?
不过 nginx 这都支持。nginx 这只通过允许的域名。
yinmin
264 天前
配置有 1 处 bug ,frpc.ini 去掉 custom_domains = customer.com

另外,nginx 的配置没贴出来,nginx 也有可能有问题。
mcone
264 天前
怎么感觉有点精神分类了,中间那个号也是楼主吗?

个人感觉这种 token 如果分发对象不可信(可能会散播),token 鉴权的意义其实就没有了……
sailei
264 天前
cloudflare 代理的 ip 应该是动态的吧
virualv
264 天前
你是只要使用 http 和 https 反代嘛
ysc3839
264 天前
怀疑是 X-Y Problem https://coolshell.cn/articles/10804.html
建议说原始需求

我个人推测,你需要让别人可以借用你的服务器进行 http/https 的内网穿透,但是要限制别人能用的域名?
这种需求个人建议用 WireGuard+nginx 反代,不同客户端用不同的密钥,客户端只需要暴露未加密的 http 服务,https 加密由服务器上的 nginx 来做,可以配合通配域名证书。这种方案客户端密钥泄漏了可以取消授权,同时客户端和服务器之间通信是确保安全的,frp 的加密功能安全性未知。
ysc3839
264 天前
@ysc3839 上述这种方案,假如你添加了某人 (假设是 A) 的 Key-A 的公钥,这个 Key-A 的私钥泄漏之后,别人使用时会出现 A 的客户端和别人的客户端“打架”的情况,实际上很难正常通信。
WireGuard 的逻辑是,收到包后更新对端 IP ,如果有包要发到对端,就会发到最后更新的 IP ,如果有两个客户端用相同的 Key ,且同时向服务端发包,那对端 IP 就会在这两个客户端之间反复横跳,服务端发回的包也是一部分发到一个客户端,一部分发到另一个,因此很难正常通信。
sudoy
263 天前
@bing1178

“cloudflare 回源协议是 https 还是 http ?
不过 nginx 这都支持。nginx 这只通过允许的域名。”

是 https 的,已经搞定了
sudoy
263 天前
@yinmin 确实是 nginx 的问题,已经搞定了,谢谢回复🙏
sudoy
263 天前
@mcone

“怎么感觉有点精神分类了,中间那个号也是楼主吗?“

哈哈那个也是我的号,一个办公室登录,一个手机和家里登录。

”个人感觉这种 token 如果分发对象不可信(可能会散播),token 鉴权的意义其实就没有了……”
是的,token 只是其中一道保护,所以我需要域名白名单这另外一道保护
sudoy
263 天前
@sailei
“cloudflare 代理的 ip 应该是动态的吧”
这个没有关系,我启用 cloudflare 代理也正常使用,问题在于我加了一道 nginx 就出错。现在问题解决了,一个老哥帮我配置了 nginx 就解决了
sudoy
263 天前
@virualv
“你是只要使用 http 和 https 反代嘛”
是的,我只要这两个,ssh 啥的都不用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/966380

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX