GoForum🌐 V2EX

公网暴露服务既安全又方便的方案似乎就是架个梯子

f1ynnv2 · 2026-02-06 14:52 · 0 次点赞 · 2 条回复

前两天发了个帖子,讲了目前因为一些服务暴露到公网的需求,一直在使用 https+basic auth 的方案 https://v2ex.com/t/1190381 ,有大佬介绍了 Next-Terminal ,顺便也了解了雷池的方案,以及参考这个帖子 https://v2ex.com/t/1190896 讨论的 authelia ,最后结合帖子回复中几位大佬提到了在家里架梯子、只暴露梯子端口、其它所有服务都使用梯子来代理,发现这个方案确实是技术难度最低、对用户体验影响最小、兼容性最强的方案。

这两天折腾了一下,完全迁移到了这个方案,下面简单说一下。

目前我需要在公网暴露的服务主要分两类:一是纯 web 类的,另外一种是类似 mtphoto 这种提供 app 但是依赖原生 http api 访问的。

对于前者,不管是我之前的 https + basic auth ,或者是 next-terminal, 雷池,authelia 其实都能解决安全性问题,体验也都差不多,无非就是多一层认证的步骤;但是对于第二类服务,据我所知目前 next-terminak ,authelia 应该都没有好的解决方案,反而搭 vpn 或者 tailscale 是体验和兼容性更好的方案。

不过现在发现搭 ss 的方式综合考虑下来最合适的。

我目前所有的服务都用 docker 部署在内网都有自己的端口号,使用 docker caddy 部署了 https 反代,绑定到一系列的域名比如 a.domain.com, b.domain.com 。

这些子域名在软路由上直接强制指定指向内网 caddy 的 ip 上,在 dns 服务商那边随便指定一个 ip 就行(得有一条记录不然 caddy 可能无法申请 ssl 证书)。这样在内网访问的时候即使是通过域名也是通过 caddy 直连 docker 各项服务上。

然后 docker 部署了 shadowsocks-rust ,ss-rust 的端口是唯一通过软路由暴露到公网的端口。 在手机/笔记本/外面电脑上的梯子客户端上,通过规则分流将.domian.com 的所有流量都走这个 ss-rust 的端口。这样在外网的时候,只有连上梯子才会路由这些子域名,ss-rust 收到请求后会解析到内网的 caddy https 服务。

这个方案有几个优势

  1. 内网和外网访问这些服务的时候,体验完全一致,不需要任何额外的密码输入和认证。唯一的区别就是在外网的时候需要连着梯子。
  2. 只在公网上暴露梯子的端口,其它所有服务都是走这个端口的加密流量,安全性应该是非常高的
  3. 完美解决 app 走自己的 api 导致无法过 authelia 认证的问题,只要连着梯子就可以使用 app

这套方案本质上和架设 vpn/tailscale 类似的,但是考虑到 v2 上各位的设备上肯定都有梯子客户端,再开个 vpn 总归有些多余,一个梯子客户端解决 fq 和内网服务完全的问题,我认为是相当完美的。

这个方案安全上唯一的弱点可能就是不要泄露自己 ss 的密码,不过改密码的成本很低,感觉问题也不大。

2 条回复
Xorpi · 2026-02-06 15:02
#1

小白有个疑问,对于这种情况,搭 ss/wg 或者其他协议有什么区别吗,感觉目的都是为了连回内网

f1ynnv2 · 2026-02-06 15:07
#2

@Xorpi 我的理解是各种梯子协议没区别,只是因为我之前搭过 ss ,一个 docker 直接搞定。 至于 wireguard ,tailscale, easytier 之类我认为本质其实也一样,都是搭一条加密隧道回去。区别就是是一个梯子客户端搞定还是要多个客户端

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: f1ynnv2
发布: 2026-02-06
点赞: 0
回复: 0