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

252 天前
 Linkia

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

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

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

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

注:

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

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

包装成一个 https 获取 ip ,传递给 ufw 开启权限,应该是可行的
Linkia
252 天前
@boboliu #8 啊?还能这么操作?我研究研究😗
coldle
252 天前
同需求,也是最后收拢到临时加白这个功能上了😂这功能确实简单好用
loveqianool
251 天前
https://v2ex.com/t/1020251
这个能替代吗?
guanzhangzhang
251 天前
用 Headscale 点对点隧道吧,frp 这种映射到公网被黑
Linkia
251 天前
@guanzhangzhang 有说明暂不考虑需要装软件才能远程的隧道方法,那样我还不如用 ToDesk 之类的远控工具了😂
Linkia
251 天前
@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
251 天前
@StuPYX 很可惜这个版本里不包含我所述的功能 :(
Pastech
250 天前
做过一个类似的 frp 2fa 认证 不过是服务器实现的
思路大概是 frp 先反代到 localhost 的一个端口 nginx 里面初始化一个 shared_dict 然后在某个 location 下面放一个 content_by_lua_file 通过 http 请求往 shared_dict 中写白名单 IP 然后在默认的 location 下面用 access_by_lua_file 识别 ip 是否在白名单内 不在的话重定向到认证页面 在的话就继续反向代理
目前用下来感觉良好
coldle
221 天前
@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 式脚本调用,如果应用有漏洞的话大概率相关服务器一锅端()

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

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

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

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

© 2021 V2EX