OpenWRT下实现Frp内网穿透端口复用(群晖)

Linux, 折腾 2020/07/03

使用Frpc做内网穿透,实现外网能问群晖,但是有个问题:

群晖默认的WEB管理端口是5000,而Photo Station的端口又是80,怎么实现仅用一个域名+80的端口,同时能访问到NAS和Photo Station?

比如FRPC的 HTTP服务穿透端口80,添加自定义域名 nas.bugxia.com80 端口指向 NAS的 5000 端口

这样的话

NAS能通过 http://nas.bugxia.com 正常访问,但是却跳转不到 http://nas.bugxia.com/photo

方法

仔细研读frpc的文档,才发现原来有个叫 URL 路由 的功能

https://github.com/fatedier/frp/blob/master/README_zh.md#url-路由

frp 支持根据请求的 URL 路径路由转发到不同的后端服务。

通过配置文件中的 locations 字段指定一个或多个 proxy 能够匹配的 URL 前缀(目前仅支持最大前缀匹配,之后会考虑正则匹配)。例如指定 locations = /news,则所有 URL 以 /news 开头的请求都会被转发到这个服务。

使用

这里以OpenWRT(https://gitee.com/louislau/luci-app-frpc)为例

分别添加两个一样的配置,内网主机端口分别为 500080 ,对应群晖的WEB端和Photo Station

修改5000的配置,打开URL 路由开关,修改值为 locations=/

再修改80的配置,打开URL 路由开关,修改值为 locations=/photo

保存即可生效

上述操作即可实现仅用一个域名+80的端口,同时能访问到NAS和Photo Station。

BUG

我安装的这版luci-app-frpc,存在一个bug,就是页面上URL路由设置好后,无法保存。

尝试手动修复,分析半天,发现页面参数名后多了个空格,导致无法保存设置

打开 /usr/lib/lua/luci/model/cbi/frp/config.lua,删掉这个空格,保存刷新页面即可

本文标签:


5 条评论

  • 阿牛哥哥 评论于 回复

    大佬为啥用虚拟机装openwrt,而不是用docker呢

    • Bug侠 评论于 回复

      @阿牛哥哥
      因为用习惯了PVE,备份、修改配置什么的很顺手了 :笑哭:

  • wu wuu 评论于 回复

    大佬,请问我设置了url路由不能正常打开,而不设置url路由反而能正常打开是缺少了什么?

  • xinlon 评论于 回复

    请教:如何在OpenWRT的frp中配置端口范围转发,比如我要转发udp:10000-10100端口到内网主机,我始终无法添加,报错“一些项目的值无效,无法保存”

    • Bug侠 评论于 回复

      @xinlon
      这是个bug,如果要修改frpc的端口是范围的话,可以直接修改配置文件/etc/config/frp里的内容

    评论(本站已开启评论回复邮件通知功能,请如实填写邮箱以便及时收到回复)