有没有什么开源自建的 WebVPN?

2023-10-05 13:55:29 +08:00
 mikewang

这个词或许是国内常用,在 Google 搜到的都是中文网页,并且都是公司学校的入口。不知道正式的名字叫什么。
很早的时候有 Glype ,缺点是没有登录认证,现在也停止维护了。

总之,不想直接将 NAS 的服务暴露在公网,想要加一层保护,并且临时使用的时候不需要客户端。

9105 次点击
所在节点    NAS
50 条回复
vvhy
2023-10-06 16:27:49 +08:00
这个可以参考一下 https://github.com/EtherDream/jsproxy ,不过也不完美
patrickyoung
2023-10-07 00:23:01 +08:00
@ysc3839 @adoal #19
我大概知道你们在说什么了。访问准入+Web 云应用。

基础架构都需要打一个插件到用户的浏览器,实现的方式不同,本地有客户端,这个客户端一般是 openvpn 二开的 ssl vpn ,如果没有客户端的纯 web 应用,就是 ws 代理,然后里面的操作终端是 guacamole 二开的。

核心的原理就是这个,具体实现的各家有差异。
friparia
2023-10-07 09:36:00 +08:00
方案原理大概是前端劫持了浏览器 js 的相关 api ,在涉及到所有和 URL 相关的地方做自动化替换

实际上和 https://github.com/EtherDream/jsproxy 差不多,但是是服务器端的
Kinnice
2023-10-07 10:32:04 +08:00
要不换个思路,敲门模式,野路子 webvpn ,无需反代
0. 随便糊个后端,部署在你需要被 webvpn 访问的机器上,使用 iptables/ufw ,除了管理端口,其他端口的包全部 drop
1. 糊一个公开的 web 段提供 auth ,auth 成功后把当前/24 的 ip 段加到你的 [需要被访问的 iptables accept 列表中]
2. 如果 n 分钟没有新连接、手动断开,就删除这个 accept 规则


more: 切换 ip 后,web 如果还在通过 websocket/轮询,更新新的 ip
john5
2023-10-07 14:55:02 +08:00
发现一个你说的这玩意 https://github.com/Hideipnetwork/hideipnetwork-web/tree/dev
试了下 除了套 cf 盾的其他都好使
yg503
2023-10-10 14:42:24 +08:00
https://github.com/NginxProxyManager/nginx-proxy-manager
https://github.com/k8scat/lua-resty-feishu-auth

我们的需求是把公司内的一些 web 服务暴露到公网,想通过钉钉控制只有企业内的人访问,基于这个开源的 lua 适配了钉钉 API ,搭配 https://github.com/liftoff/GateOne 也能实现 shell 功能。
DIO
2024-07-31 12:54:22 +08:00
请问 op 现在在用什么好的方案吗
mikewang
2024-07-31 18:32:26 +08:00
@DIO 我没有在使用类似方案了,目前仍是 wg 组网
MFWT
2024-08-01 19:55:53 +08:00
我也在考虑类似的玩意,最大的痛点其实是前端链接的改写,因为浏览器不知道你这个是代理,所以光做后端反代(包括楼上说到传递变量给 nginx 的 proxy_pass )没有用,对于页面中的外链(不同域名)和带主机的链接,浏览器在前端就发走了,根本不会发往你的代理服务器

在后端收到内容之后提前嗅探并改写数据流中的链接是个方法,但是覆盖面不够(比如前端动态生成资源地址的完全没辙),性能消耗也大。比较通用的方法是前端尽可能用 js 改写掉所有有可能发起请求的函数(比如 XMLHTTPRequest ,fetch ,扫描并嗅探所有 html 标签的 src/href 属性值),但是我不确定浏览器允不允许这么干,或者说有些请求会不会覆盖到?
MFWT
2024-08-01 20:33:19 +08:00
另外就是,学校或者企业用 webVPN 比较多的原因是,这种位于内网的网站很多都是自己部署且仅面对内网的(比如内部 OA ,学校在线图书馆),很少存在外站链接,所以实现起来比较简单,也是最早应用起来的

此外就是,这种部门信息化比较早,『适配 IE6.0 』这个笑话大概也就是起源于此。IE 浏览器最大的杀手锏其实是 ActiveX 控件,这玩意近似理解就是前端可以很方便执行原生二进制文件,可玩空间就高很多,说是说 clientless ,但实际上只是自动下载部署了个很小体积的客户端(在华为那边这个就是 Web Link 模式的 SSL VPN )。可惜现在 IE 已经作古,ActiveX 也被放弃,现代浏览器呢,又越来越强调沙盒化,这种玩法也就没落了

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

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

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

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

© 2021 V2EX