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

求助,如何使用 Frp 做到 Sakura Frp 那样的网页认证?

  •  
  •   Linkia · 232 天前 · 2278 次点击
    这是一个创建于 232 天前的主题,其中的信息可能已经有所发展或是发生改变。

    RT ,我日常需要在各种计算机上远程访问我的电脑。

    家中局域网内有软路由,安装了 Sakura Frp 做转发,但免费节点高峰期体验非常差,且本人有多个服务器的基础上不想去花每年 120 元去买 Sakura Frp 的会员。

    但自己尝试使用我自己的 Frps 添加 RDP 映射的时候发现了一些问题,Frp 项目无法像 Sakura Frp 那样有网页访问验证功能,即先通过浏览器访问隧道,输入密码后给 IP 一定时间的白名单。

    如果我自己直接将 RDP 映射到公网肯定会被爆破+各种挂马,不知道各位有没有什么能使 Frp 快速便捷的验证端口访问问题。

    注:

    1. 暂不考虑除 RDP 之外的远程方式,在其他电脑上没有比 RDP 更方便且不用安装软件的方法了。
    2. Frp 的 stcp 也不考虑,连接前需要安装软件。
    3. 不考虑 WireGuard 、ZeroTier 等,原因同上,RDP 前需安装软件。
    20 条回复    2024-05-10 20:47:37 +08:00
    cat
        1
    cat  
       232 天前   ❤️ 1
    好像有点意思 🤔 可以摸鱼做一个
    StuPYX
        2
    StuPYX  
       232 天前   ❤️ 2
    Linkia
        3
    Linkia  
    OP
       232 天前 via Android
    @cat 欢迎大佬写一个!
    Linkia
        4
    Linkia  
    OP
       232 天前 via Android
    @StuPYX 感谢,但这个项目停止维护了,看看还有没有更好的实现方法,如果没有的话考虑部署一下这个项目~
    jpyl0423
        5
    jpyl0423  
       232 天前   ❤️ 1
    可以看下这个项目 https://github.com/snail007/goproxy
    Linkia
        6
    Linkia  
    OP
       232 天前 via Android
    @jpyl0423 看起来要复杂许多,稍后研究研究,感谢!
    lovelylain
        7
    lovelylain  
       232 天前 via Android
    考虑下 frp + mqtt + nodered + 企业微信,需要的时候通过企业微信应用菜单开启 frpc
    boboliu
        8
    boboliu  
       232 天前
    不必如此复杂,这个功能是纯客户端的。

    如果我没记错的话,相关用法的兼容性被刻意保留下来了。
    你直接用 sakura frp 的 frpc 丢上你的配置文件,然后加上 `auth_pass` 就行。
    boboliu
        9
    boboliu  
       232 天前
    @boboliu 哦我记错了,下个版本恢复一下(
    1423
        10
    1423  
       232 天前
    这种应用层创新还挺有意思的
    也可以用 port nock 之类的技术替代实现, 比如一些 web-based port nock
    最后当然也可以用管理 iptables 的 web 面板来实现..
    totoro625
        11
    totoro625  
       232 天前
    自己的 frps 上安装了 ufw ,默认是 deny
    用的命令是:ufw allow from 当前的 IP

    包装成一个 https 获取 ip ,传递给 ufw 开启权限,应该是可行的
    Linkia
        12
    Linkia  
    OP
       232 天前
    @boboliu #8 啊?还能这么操作?我研究研究😗
    coldle
        13
    coldle  
       231 天前
    同需求,也是最后收拢到临时加白这个功能上了😂这功能确实简单好用
    loveqianool
        14
    loveqianool  
       231 天前 via Android
    https://v2ex.com/t/1020251
    这个能替代吗?
    guanzhangzhang
        15
    guanzhangzhang  
       231 天前
    用 Headscale 点对点隧道吧,frp 这种映射到公网被黑
    Linkia
        16
    Linkia  
    OP
       231 天前
    @guanzhangzhang 有说明暂不考虑需要装软件才能远程的隧道方法,那样我还不如用 ToDesk 之类的远控工具了😂
    Linkia
        17
    Linkia  
    OP
       231 天前
    @boboliu #8 这个方法我测试了一下,不行 :(
    不知道是我配置有问题还是如何

    karl@Karl-Laptop:~/frp/natfrp$ ./frpc_linux_amd64 -c ./frpc.toml


    ```

    [common]
    server_addr = ****
    server_port = ****
    token = ****

    [test]
    type = tcp
    local_ip = 127.0.0.1
    local_port = 80
    remote_port = 8010
    auth_pass = testpassword

    ```
    Linkia
        18
    Linkia  
    OP
       231 天前
    @StuPYX 很可惜这个版本里不包含我所述的功能 :(
    Pastech
        19
    Pastech  
       230 天前
    做过一个类似的 frp 2fa 认证 不过是服务器实现的
    思路大概是 frp 先反代到 localhost 的一个端口 nginx 里面初始化一个 shared_dict 然后在某个 location 下面放一个 content_by_lua_file 通过 http 请求往 shared_dict 中写白名单 IP 然后在默认的 location 下面用 access_by_lua_file 识别 ip 是否在白名单内 不在的话重定向到认证页面 在的话就继续反向代理
    目前用下来感觉良好
    coldle
        20
    coldle  
       201 天前
    @coldle #13 分享下自己最终用的方案以供后来人参考:在 frps 服务器上部署 script-server ,通过 shell 脚本 + iptables + ipset 实现 ip 白名单机制,定时清空白名单实现临时加白

    这套方案的爽点还蛮多的:
    1. 有账号机制,如果有多人使用的需求,可以只把 ip 加白操作放在一个账号里分享给别人;
    2. script-server 长期在后台运行,所以 frps 可以随用随开;
    3. ipset 支持文件读入读出,可以实现 "部分永久白名单+部分临时白名单" 的操作;
    4. 白名单不仅对 frps 生效,如果有其他需要暴露给自己用的服务也可以受益;
    5. script-server 可以从配置上完全关闭管理员账户,也就是说 script-server 可以只暴露比较安全的操作,哪怕 script-server 账号被黑了也不会有太大的影响

    缺点的话就是太依赖 script-server 或者类似的 web 式脚本调用,如果应用有漏洞的话大概率相关服务器一锅端()
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2504 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 16:00 · PVG 00:00 · LAX 08:00 · JFK 11:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.