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

我马上也要面对这个问题了
因为我打算电信转联通,这意味着失去使用多年的公网IP

就是把网上的 ddns 脚本改一下,不修改 A 记录,修改 txt,把动态外网端口放到 txt 中记录,外网连接时用 nslookup -type=txt 查一下

把 txt 记录当成备忘录了是吧 :joy:

zerotier

家里电信自带公网ipv4 哟西
如果你是移动用户,那么恭喜你v6也是公网。你一样可以公网访问

我刚刚也折腾了一下这个事情,现在有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个方案中选择

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

10 个赞

是滴,这样纯用natmap开公网端口就行了 :grin:

如果你有公网ip。那么就是端口映射+ddns(做好设置,还是很稳定,即便ip变了,恢复访问,也就1.2分钟)。访问最快的,并能实现所有功能(我认为这很重要)。不然我觉得没太大必要把nas暴露公网。安全手段,有很多,比如nas本身的:双重认证、自动封锁。。如果你使用相对固定ip访问nas,你可以路由器开白名单访问nas。

没有使用反代, 因为不会暴露端口在外网, 只暴露了一个 SS 的端口, 不拨 ss, 没法链接后续的各种端口

不要相信 NAS 的 web 服务 :rofl:

我们学校网口给的都是公网ip,wifi和lan 都是,所以就裸着用,但是连接真丝滑

如果不想自购vps,那可以考虑用cf tunnel,只不过晚上速度有点慢。最大的好处是,无需额外服务器,全免费
如果自购vps,则最好的是打洞。frp简单,但是frp吃服务器带宽。

我也不想再多装客户端,请问你的用CF Zero Trust方案开启小黄云吗?
还有个,客户端使用群晖driver的话,还是要装软件

TCP走服务器流量吗?

会走,所以跳板服务器最好流量至少1t,不然容易不够用。我之前500g一个月不够用

CF方案是被CF托管的,DNS那里表现为一个CNAME(开了小黄云)

请问下什么是打洞?

ipv6
zerotier打洞

我直接windows的smb当nas使用

阿里云 68 买 10 年 6 位数字.xyz 域名,有公网 ip 用 ddnsgo,没有公网 ip 用cloudflare tunnel