你们自建 NAS 或群晖这种的,有什么稳定且安全的外部访问方式吗

我刚刚也折腾了一下这个事情,现在有5种方案并行,按折腾顺序是

1、端口映射方案
自己的域名cname到群晖的ddns域名,这种需要在路由器上做端口映射,因为是直连,有时候会更快一点,缺点是由时家里IP变了,ddns更新不及时。这种有封端口风险,之前我用8443映射443端口,过一阵子就不通了。

2、CF Zero Trust方案
打通了几种常用服务,主要是http,需要在nas上运行个docker容器即可。不怕被封端口,不过速度有点慢。装都装了,就开着了。

3、自建http代理
使用群晖自带的proxy station创建了一个http代理,创建一个users组的用户作为鉴权凭证。自带防火墙,可以限制成只允许访问到内网。

4、自建Socks5代理
使用docker运行了serjs/go-socks5-proxy,创建一个socks5代理,可以鉴权但不能限制访问域。相比于http代理,之所以有这个点的需求,是担心某些软件如果有安全风险,自己家里的ip被当跳板/肉鸡而不自知。

5、自建WireGuard
使用docker运行了 linuxserver/wireguard,使用wg协议,这是很多人使用的、广泛的方案。

为什么要自建http/socks5代理

方案3、4应该有更广泛的支持,一般不需要额外安装客户端即可使用,在某些场景下有用且体验不错,例如chrome浏览器上用自动切换,把家里的内网IP段指定到走http或socks5代理。

http和socks5使用起来差不多,搞2个一是为了灾备,二是可能某些软件不支持某种代理。例如安卓上的v2rayNG支持socks不支持http;Win11上的Docker Desktop支持http不支持socks5,等等。

方案5有些人用专门的客户端连接到内网,这种什么流量都要回家绕一圈的方式我不喜欢(WG如何用路由表分流我不知道我没研究),所以我把方案3、4、5都放到了clash里,这样可以通过clash的规则来决定流量分发,基本上可以实现无感且畅通,在外如在家。

尚不明确的地方

http和socks5代理不知道怎么搞成加密代理,也不知道会不会有安全风险,例如wifi层的中间人抓包?坐等大佬科普

为什么不用frp/zerotier/tailscale

实话说,我就没深入去研究,就目前使用场景而言,我不希望安装额外的客户端来实现,所以对这3个都要额外客户端支持的方案都不再继续研究。

如果不是clash支持wireguard,我对wireguard这种也需要安装额外客户端的方案也是不优先考虑的。

如果把几个不同区的云服务器打通,我会再从这3个方案中选择

这么多字的认真回复,值不值得一颗右下角的小心心?

13 个赞