SgtPepper

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

  •  
  •   SgtPepper · Dec 20, 2020 · 5634 views
    This topic created in 2063 days ago, the information mentioned may be changed or developed.
    前景提要:
    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 replies    2020-12-20 19:06:19 +08:00
    SgtPepper
        1
    SgtPepper  
    OP
       Dec 20, 2020
    配置

    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  
       Dec 20, 2020   ❤️ 1
    这不是坑,这是相对基础的网络知识...

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

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

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

    最后的方案,不还就是等于路由器端口映射?
    no1xsyzy
        14
    no1xsyzy  
       Dec 20, 2020
    我多费了口舌。
    总结一下,你希望电脑会读心术。
    SgtPepper
        15
    SgtPepper  
    OP
       Dec 20, 2020 via Android
    @no1xsyzy 没错,就是端口映射 谢谢你多费口舌告诉我
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   973 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 19:19 · PVG 03:19 · LAX 12:19 · JFK 15:19
    ♥ Do have faith in what you're doing.