frp 开启 https 踩了几个坑...

2020-12-20 00:31:44 +08:00
 SgtPepper
前景提要:
https://www.v2ex.com/t/735783
https://www.v2ex.com/t/736883

我群晖里有多个 web 服务,webdav 、transmission 、bitwardenrs 且都开了 https 。
然后今天配置 frpc.ini 中这几个服务的 custom_domains 时配了同一个域名,运行程序一直提示 router config conflict ;导致只有 frpc 中排序第一的 webdav 能用。frp 似乎没法同时给多个 web 服务配同一个域名?(路由器端口映射+ddns 都比这强 我靠)

然后尝试用 subdomain 的方式,先在 dnspod 的解析里加*解析,然后配置加上:
frps.ini subdomain_host = mydomain.com
frpc.ini suibdomain = webdav
结果 transmission 用 https://webdav.mydomain.com:端口登上去提示 SSL 证书错误,因为我的申请的证书是 mydomain.com 的而不是 webdav.mydomain.com 。上 Joplin 发现一样的问题,都卡在证书这关...

搞了我一晚上都快崩溃了...

后来鬼使神差我把 frps.ini 里面的 vhost_https_port = 443 删了,frpc.ni 的 type = https 改成 type = tcp
再加了 remote_port 然后就可以了!
4920 次点击
所在节点    宽带症候群
15 条回复
SgtPepper
2020-12-20 00:43:00 +08:00
配置

frps.ini
[common]
bind_port = 7000
token = xxxx
dashboard_port = 7001
dashboard_user = xxxx
dashboard_pwd = xxxx

frpc.ini
[common]
server_addr = xxx.xxx.xxx.xxx #vps ip
server_port = 7000
token = xxxx #要跟 frps 的 token 一致

[WebDAV]
type = tcp
local_ip = xxx.xxx.xxx.xxx #nas ip
local_port = 5888 #nas 本机端口
remote_port = 61000 #本机端口映射给外网访问的端口,需在 vps 防火墙中放行

[Transmission]
type = tcp
local_ip = xxx.xxx.xxx.xxx
local_port = 5889 #群晖反代端口(群晖的 transmission 是 http,我用群晖的反代实现 https )
remote_port = 61001

[Bitwardenrs]
type = tcp
local_ip = xxx.xxx.xxx.xxx
local_port = 7889
remote_port = 61002
stille
2020-12-20 01:04:34 +08:00
这不是坑,这是相对基础的网络知识...

既然设置了 custom_domain 或者 subdomain 给 frps 的 http 协议..那么你怎么可能一个域名访问多个服务呢..你用 webdav 的域名请求,frps 肯定是直接给你指向 webdav 的端口.

除非都用 tcp 协议,frps 不认域名,只认端口.任何域名只要指向 IP 就行了..实际上就是 IP:端口的访问请求.
SgtPepper
2020-12-20 01:30:13 +08:00
@stille 我按照网上多个 frp 的教程就没人说有多个 web 服务用的话 tcp,我也没注意哈哈 ORZ
dangyuluo
2020-12-20 02:08:44 +08:00
你应该了解下域名是在协议里的第几层生效,并且在第几层里作为载荷的。
imdong
2020-12-20 09:39:32 +08:00
自己的完整域名,可以自己做证书,子域名最好就只映射 http,服务器再用 nginx 套一层加证书。
cpstar
2020-12-20 10:02:50 +08:00
这,感觉不是坑,而是知识范围不足导致自己掐死了自己
cpstar
2020-12-20 10:06:12 +08:00
证书的问题,必然是有问题的,mydomain.com 的又不是*.mydomain.com 的通用证书,必然不匹配。所以还是考虑你导向的 443,到了谁头上吧。
frp 原则上是一个三层的东西,但也可以做七层的东西,搞好配置,没有那么多问题,仔细看看配置说明文档。
SgtPepper
2020-12-20 10:16:32 +08:00
@cpstar 补了下相关知识,我这种情况貌似用泛域名证书就可以了吧?
SgtPepper
2020-12-20 10:20:25 +08:00
@imdong 如果证书是在 dnspod 上申请的且分配给群晖中的应用了,那么是不是不需要 nginx 了?
其实我用 dnspod 的证书只是因为 joplin 安卓端不支持自签发证书
yuhaaitao
2020-12-20 13:08:15 +08:00
看着好复杂
SgtPepper
2020-12-20 13:53:59 +08:00
md 腾讯云轻量云香港好垃圾,刚才有一阵大概 30 多分钟吧疯狂丢包
客服说轻量云还没发换 ip,然我买大陆的服务器 凸
cpstar
2020-12-20 18:32:11 +08:00
@SgtPepper 8# 不考虑费用问题,那泛域名绝对没问题
no1xsyzy
2020-12-20 18:45:57 +08:00
废话,你同一个域名在同一个端口上,谁能知道你想要访问哪个服务?
你浏览器里打了个 https://mydomain.com ,FRP 也不知道你是想访问 WebDAV 还是 Transmission 啊?
端口映射还从同一个端口在请求时按需映射到三个不同的端口上?

你再申请一个 webdav.mydomain.com 的证书不就行了?

最后的方案,不还就是等于路由器端口映射?
no1xsyzy
2020-12-20 18:47:28 +08:00
我多费了口舌。
总结一下,你希望电脑会读心术。
SgtPepper
2020-12-20 19:06:19 +08:00
@no1xsyzy 没错,就是端口映射 谢谢你多费口舌告诉我

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

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

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

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

© 2021 V2EX