V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
SgtPepper
V2EX  ›  宽带症候群

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

  •  
  •   SgtPepper · 2020-12-20 00:31:44 +08:00 · 4947 次点击
    这是一个创建于 1461 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前景提要:
    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 然后就可以了!
    15 条回复    2020-12-20 19:06:19 +08:00
    SgtPepper
        1
    SgtPepper  
    OP
       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
        2
    stille  
       2020-12-20 01:04:34 +08:00   ❤️ 1
    这不是坑,这是相对基础的网络知识...

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

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

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

    最后的方案,不还就是等于路由器端口映射?
    no1xsyzy
        14
    no1xsyzy  
       2020-12-20 18:47:28 +08:00
    我多费了口舌。
    总结一下,你希望电脑会读心术。
    SgtPepper
        15
    SgtPepper  
    OP
       2020-12-20 19:06:19 +08:00 via Android
    @no1xsyzy 没错,就是端口映射 谢谢你多费口舌告诉我
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5328 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 07:36 · PVG 15:36 · LAX 23:36 · JFK 02:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.