2021 年底,无公网 IP 情况下,从外面(穿透)访问家中 NAS 的最佳姿势是什么?

2021-11-25 10:09:03 +08:00
 dLvsYgJ8fiP8TGYU

基本情况

使用需求

用过的方法

已经尝试过,在 NAS 和云服务器使用穿透软件,把 NAS 上的端口映射到云服务器上,以实现从外网访问家中局域网内资源。例如,访问云服务器 1.2.3.4:12345 ,即等效于访问家中局域网 192.168.0.10:5001

这样的穿透方式既可以实现用浏览器从外面访问内网的需求,也比较符合 NAS 各种移动端套件 App 的配置方式,即在相应 App 内登录时,输入 域名:端口号 即可实现访问。在弄好域名、DNS 、SSL 证书后,网络穿透对用户完全无感,就如同访问一个正常网页一样(只是需要自定义非标端口号,但也是一次性配置),且不需要在移动端安装任何软件(例如网络 Proxy 工具)

虽然这种穿透方式对于客户端十分友好,但任何知道 域名:端口号 的人都可以访问管理页面。

被恶意攻击

将 NAS 管理页面暴露在公网无疑是不明智的,高位端口也只是自我安慰,全球有多少 bot 在疯狂遍历每一个 v4 地址:端口

被打过几次,都在枚举 admin 账户的密码,还好早就禁用 admin 账户,关键账户启用 2FA ,并给每个用户分配自己的用户名,16 位随机密码,且只授权他们需要用到的资源。做这些只是为了万一某个账户被攻破时缩小攻击面,毕竟不是每个人都会用 2FA 。祈祷 NAS 大厂写的登陆界面没有可以搞 xss 的地方吧?

被云服务商干扰 HTTPS 连接

近日发现,某名称以 第一个字母 开头的云服务商,疑似会阻断向其云服务器以 域名:端口号 发出的 HTTPS 请求,包括 10000+高位非标端口(域名未在该服务商备案,也不打算为了这个去备案)。但以 IP:端口号 发出的请求不受影响。已确认本地 DNS 解析结果无误,推测是在入站时根据 SNI 判断?

这个现象导致以 IP:端口号 连接时 SSL 证书报错,域名不匹配。尽管可以检查证书的 SHA 指纹、域名、签发者后手动信任,但依然很麻烦,且不清楚是否存在安全隐患(例如中间人是否有可能伪造一个拥有相同指纹的证书?)

解决方案?

了解过其他穿透方案,例如 /PN 、ZeroTier 等,这些(似乎?)都需要在客户端安装一个软件。有没有用过这些穿透方式的大佬来评价一下,这些方式稳定性如何,在手机上使用体验怎样?

关于 /PN

在这种流量穿透应用场景中, [便利] 和 [安全] 真的不可兼得吗?

5207 次点击
所在节点    问与答
57 条回复
hopingtop
2021-11-25 10:23:44 +08:00
frp 是你上面描述的用过的方案吗?
其实你大可不必担心域名和端口泄露问题。
生成一个随机的 X 位字符串,当二级域名不就行了吗?是不是可以当密码的思路用?
如果你这样还担心泄露,域名和端口,还担心你的 NAS 破解验证。 你就当我什么都没说吧
wmwmajie
2021-11-25 10:32:56 +08:00
说一个我的方案吧。
和你一样用的 某名称以 第一个字母 开头的云服务商,也是 frp 内网穿透到家里,通过 ip+端口访问。
唯一存在的问题就是 别人扫 ip+端口的事,但是这个是有解决方法的。
既然你用的云服务商,那他们都有安全组,你只要禁止所有 ip ,然后只给你经常用的 ip 或者 ip 段加上授权就可以了,这样基本上可以忽略被扫的问题,虽然 ip 可能经常换但 ip 短一般还是不会变的。

关于你说到服务商域名被屏问题,如果你不备案,我建议你最好还是用 ip 或者本地 dns 映射域名方便使用,个人随便把域名连到国内 ip 还不备案,确实不符合目前某些地区要求。感觉也没必要。
fengci
2021-11-25 10:33:08 +08:00
ZeroTier ,tailscale 能跑满宽带,手机网络情况下 tailscale 更稳定。
wmwmajie
2021-11-25 10:36:26 +08:00
不过有一个问题也是一直困扰着我,ip 弄 https 总是不太方便,目前直接用的 http 连接,但又感觉 http 的时候如果 dns 被劫持密码容易漏,不知道有没有彦祖们有啥好的方案。
yuyu2140
2021-11-25 10:39:48 +08:00
目前还有公网 IP ,还算稳,每天设置的群晖 0 点关机,9 点开机,安全性好很多,既然想用的方便,肯定还是暴露端口舒服些
xuanloe
2021-11-25 10:44:36 +08:00
我现在的方案是 tailscale ,用了前段时间活动搞的三年的腾讯轻量云搭了 DERP ,然后保险搞了 frp 做兜底。
zerotier 稳定性不如 tailscale
memorybox
2021-11-25 11:01:36 +08:00
折腾过很多,我觉得最灵活的还是 zerotier, tailscale 这样的虚拟局域网,装个客户端虽然觉得多了个东西,但长期来看其实比自己折腾一堆配置来的简单;

zerotier 这样的服务麻烦的地方就是国内不能直连的时候速度慢,需要自建 moon ,需要一台 VPS ,而各类云的 1M1C1G 的小 VPS 问题就是带宽太小;

前一段时间站里有老哥发了个类似的服务,把 VPS 自建中转 这一块做成服务了,我自己用了下感觉他家的软件比较简陋,但是组网是没问题的,也挺稳定,可以试试:

https://v2ex.com/t/796362
clf
2021-11-25 11:04:41 +08:00
zerotier 最方便。(国内目前没有遇到网络不佳的情况)
hisune
2021-11-25 11:11:02 +08:00
zerotier ,在 openwrt 上启用,整个内网都是通的,不要太方便。相比之下 frp 这种还要每个端口做映射,太麻烦
abcbuzhiming
2021-11-25 11:21:03 +08:00
不要用域名,国内所有云服务商的服务,域名都是要被拦截检测的,没备案的域名一律要你去备案,用 ip 则不管
devswork
2021-11-25 11:23:40 +08:00
推荐 nps 。我的情况和你是一模一样的,nps 在公网服务器( nps 服务端)就可以配置映射哪些公网 port 到内网 port ,无需链接到内网配置,而且还带管理界面,能打开网页就能配置,很方便。服务端可以使用 nginx + certbot + crontab 计划任务来自动获取网站的 https SSL 证书。
https://github.com/ehang-io/nps
siguretto
2021-11-25 11:25:21 +08:00
推荐 frp 的 stcp 模式。以前试过很多方案,暴露 web 端口被封,暴露 ssh 端口被扫(太频繁了日志打满),最后选的 stcp 模式。但是需要在电脑或手机也启动 frp 客户端,直接访问本机地址的绑定端口就行,自用还好,多人使用就不考虑了。
Ayahuasec
2021-11-25 11:30:20 +08:00
frp 有一个 stcp 模式可以预防你提到的安全问题,配合内嵌的 tls 并打开加密一定程度上缓解运营商的干扰。
我之前用 zerotier 在电信网络总是不太稳,现在在用 tinc ,开 tcp only 模式、开压缩、开加密,x86 上还好,树莓派上 CPU 占用稍微大了一点,不过国内互传文件还是能跑满 20Mbps 的上传,而且用了一年多了非常稳定。唯一的缺点大概是初次访问建立连接会慢一点,我的解决方法是开一个 ServerStatus 探针持续通过内网发送数据给服务器将 tinc 连接保持住就好了。
Tink
2021-11-25 11:51:53 +08:00
zerotier
joesonw
2021-11-25 12:05:58 +08:00
wiredguard, openvpn 虽然要装客户端. 弄好后还是蛮方便的, 还安全.
lurui45
2021-11-25 12:46:11 +08:00
没人提 ipv6 ?
tigerstudent
2021-11-25 13:14:39 +08:00
目前我也是用 frp 的 stcp 模式,配置使用也相对简单。
SenLief
2021-11-25 13:36:31 +08:00
目前最好的还是 ipv6 ,路由器端反代,或者 haproxy sni 分流。
jfdnet
2021-11-25 13:45:08 +08:00
我觉得 NAS 管理界面没必要暴露到外网,你把你用的服务打通不就完了。谁整天去管理 NAS 的。
shyrock
2021-11-25 14:05:01 +08:00
@SenLief #18 这个有详细教程吗?

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

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

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

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

© 2021 V2EX