V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
dLvsYgJ8fiP8TGYU
V2EX  ›  问与答

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

  •  1
     
  •   dLvsYgJ8fiP8TGYU · 2021-11-25 10:09:03 +08:00 · 5795 次点击
    这是一个创建于 1095 天前的主题,其中的信息可能已经有所发展或是发生改变。

    基本情况

    • 宽带没有公网 IP
    • 可用一台有公网 IP 的云服务器中转

    使用需求

    • 实现至少 1-2 MB/s 的速率,能够跑满宽带上行则更好(约 8-10 MB/s ),瞬发需求,非长期占用带宽(云服务器流量也是要钱的,能省则省)
      • 群晖 QuickConnect 使用体验不佳,经常连不上,速率慢,排除该方案
    • 迫于没有公网 IP ,需要穿透服务客户端能够定期向服务端心跳保活,以防 ISP 切换出口 IP 后无法连接
    • 避免在客户端(主要是手机)进行频繁或难度大的配置。如不可避免,尽可能以十分简单的方式(一键式)、或一次配置即保用很久的方式

    用过的方法

    已经尝试过,在 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

    • 在宽带没有公网 IP 的情况下,是否依然可以用一台云服务器做中转,来建立从外面连接回家中的/PN 隧道?
    • 对于这种应用场景,常见的/PN 协议是什么?具体需要用什么软件来实现? Open /PN 是否适合这种场景?
    • 协议特征是否会被 ISP 或云服务商针对 QoS ?
    • 个人全程在境内使用,不涉及跨境流量,是否有合规风险?
    • 此外,假如在 NAS 上建立某种 Proxy 服务端,例如 SOCKS5-TLS,将相应的端口穿透到云服务器上,再由客户端通过公网连接到云服务器的特定端口。这种方式是否可行?有没有安全性或合规性问题?

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

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

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

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

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

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

    家里设备通过 openvpn 连上公共服务器,其他设备也同样连同一台服务器的 openvon ,这样就行了

    如果想折中下,家里 nas 上建 openvpn 服务,然后用 frp 把 openvpn 服务穿透出去,所有设备直接连家里的 nas 上的 openvpn
    flexbug
        22
    flexbug  
       2021-11-25 14:13:46 +08:00 via Android
    我用的樱花 frp ,可以给线路设置密码
    gps949
        23
    gps949  
       2021-11-25 14:30:36 +08:00
    问就是 tailscale
    bianzhifu
        24
    bianzhifu  
       2021-11-25 16:13:45 +08:00
    tailscale 有条件自建国内 derp
    hronro
        25
    hronro  
       2021-11-25 16:48:19 +08:00
    @xuanloe #6
    搭建 DERP 是不是必须要备案?我有台没备案的腾讯轻量云,之前尝试搭建 DERP ,结果发现腾讯把所有 HTTP(S) 协议都封了,然后就没搭建成功。
    ayaseruri
        26
    ayaseruri  
       2021-11-25 19:19:47 +08:00
    @hronro 应该是你的 http(s) 端口在防火墙中没有开放,我这里非标准端口完全没问题
    taobibi
        27
    taobibi  
       2021-11-25 19:24:25 +08:00
    蒲公英盒子 如何
    walkxspace
        28
    walkxspace  
       2021-11-25 19:26:05 +08:00
    目前我的方案是 IPv6 + DDNS-GO + 备过案的域名,在外可能会遇到没有 IPv6 的情况需要切换到流量之外,其它都蛮好的。
    hronro
        29
    hronro  
       2021-11-25 19:33:45 +08:00
    @ayaseruri #26 你确定?你试过没备案的服务器搭建 DERP 吗?
    xuanloe
        30
    xuanloe  
       2021-11-25 20:14:57 +08:00   ❤️ 1
    @hronro
    应该是你的域名没备案被腾讯云拦截了?
    DERP 也可以设置是 IPv4 的,不一定要域名 `HostName` 和 `IPv4`,只设置 `IPv4`
    FlyPuff
        31
    FlyPuff  
       2021-11-25 20:22:54 +08:00 via Android   ❤️ 1
    zerotier 油管的 10 分钟视频就可以配置清楚,蛮简单的,而且 pavadan 和 openwrt 路由器能直接配置启用
    WildCat
        32
    WildCat  
       2021-11-25 20:31:38 +08:00
    ZE3kr
        33
    ZE3kr  
       2021-11-25 20:55:18 +08:00 via iPhone
    1. IPv6
    2. 打电话给运营商,说需要公网 IP
    totoro625
        34
    totoro625  
       2021-11-25 20:55:59 +08:00
    备案域名+腾讯云+frp 把 NAS 上的端口映射到云服务器上
    开放了 443 的 web 管理和 SSH
    高位端口 SSH 基本每月一次被爆破
    但是设置了 ip:443 不显示任何网页,只有域名访问才行
    配置通配符证书+一个奇葩的入口域名,基本扫不到你的面板入口的
    hronro
        35
    hronro  
       2021-11-25 21:17:24 +08:00
    @xuanloe #30 谢谢,明天我试试
    mezi04
        36
    mezi04  
       2021-11-25 22:05:12 +08:00   ❤️ 2
    之前写了篇关于通过 ss 回家的文章,楼主可以做参考: https://cyber2020.medium.com/%E5%9B%9E%E5%AE%B6%E7%9A%84%E8%AF%B1%E6%83%91-%E6%AF%94vpn%E6%9B%B4%E4%BC%98%E9%9B%85%E7%9A%84%E5%9B%9E%E5%AE%B6%E6%96%B9%E5%BC%8F-371a769887c0

    没有公网 ip 用 vps+frp 也可以达到类似效果,最终可以实现在外网使用家里的 ip 访问家里的 nas
    palxie
        37
    palxie  
       2021-11-25 22:39:22 +08:00
    公网 ip 能跟运营商申请的吧, 我今天才电话申请了
    heretreeli
        38
    heretreeli  
       2021-11-25 23:21:35 +08:00
    个人觉得你想要的可能是 n2n ,https://github.com/ntop/n2n ,n2n 连接之后可以直通免掉中间服务器的流量。安卓有客户端
    mygoare
        39
    mygoare  
       2021-11-25 23:25:16 +08:00
    zerotier +1
    wwhc
        40
    wwhc  
       2021-11-26 00:29:36 +08:00
    ssh+openvpn
    anaf
        41
    anaf  
       2021-11-26 04:39:10 +08:00
    ZeroTier +1
    iosx
        42
    iosx  
       2021-11-26 08:18:23 +08:00 via iPhone
    推荐 ddnsto ,带微信验证,4M 带宽
    YAFEIML
        43
    YAFEIML  
       2021-11-26 08:27:20 +08:00
    成本最低效果最好的是 IPV6 ,不计成本的话就简单了,大宽带云+frp 就阔以了。
    shineit
        44
    shineit  
       2021-11-26 08:59:45 +08:00
    首选 P2P ,ZeroTier +1
    bigdude
        45
    bigdude  
       2021-11-26 09:13:53 +08:00
    ipv4 没有公网,ipv6 必然有啊,首推 ipv6
    justin2018
        46
    justin2018  
       2021-11-26 09:22:29 +08:00
    Tailscale · Best **N Service for Secure Networks
    https://tailscale.com/
    Latin
        47
    Latin  
       2021-11-26 09:32:54 +08:00
    Tailscale ZeroTier +2
    leartang
        48
    leartang  
       2021-11-26 09:33:08 +08:00
    ipv6
    newmlp
        49
    newmlp  
       2021-11-26 09:53:47 +08:00
    ddns+vpn
    zealic
        50
    zealic  
       2021-11-26 10:53:36 +08:00
    WireGuard + ZeroTier
    这两个目前都支持 ROS 了,直接路由器上配置,非常方便。
    hronro
        51
    hronro  
       2021-11-26 11:42:27 +08:00
    @xuanloe #30
    我看了下 Tailscale 的文档( https://tailscale.com/kb/1118/custom-derp-servers ),没发现可以直接写 IPv4 啊?

    而且 DERP 似乎是需要 SSL 证书的,这个是和域名绑定的吧?
    hcwhan
        52
    hcwhan  
       2021-11-26 13:52:25 +08:00
    ZeroTier +1
    xxb
        53
    xxb  
       2021-11-27 08:39:14 +08:00 via iPhone
    tailscale
    dLvsYgJ8fiP8TGYU
        54
    dLvsYgJ8fiP8TGYU  
    OP
       2021-11-27 17:01:55 +08:00
    @mezi04 您好,看到您的文章是去年年底写的,想了解一下近一年您使用$$进行穿透的稳定性如何,有没有遇到过被 ISP 阻断 /限速,或遭到主动探测,日志里有很多陌生 IP 尝试爆破密码等情况?感谢!
    mezi04
        55
    mezi04  
       2021-11-27 17:58:21 +08:00
    @dLvsYgJ8fiP8TGYU #54

    1. 稳定性还好,运营商封端口大多是封 http 流量,ss 是 tcp 流量,至少到我宽带到期,没有遇到过端口被封的情况。
    2. 主动探测跟破解这个没关注过,而且也无需担心,ss 本身就是加密流量,只要你不主动暴露自己的加密方式跟密码,也不有什么安全问题。
    spirit1431007
        56
    spirit1431007  
       2021-11-28 09:57:04 +08:00 via Android
    n2n
    o00o
        57
    o00o  
       2022-08-11 10:31:35 +08:00
    @hopingtop 随机二级域名不是最终不是还是要指向 frp 服务器 IP 的吗?
    最终还是服务器 ip:端口号----->客户端,只要把服务器端口号扫一遍就全完蛋。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5097 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 01:22 · PVG 09:22 · LAX 17:22 · JFK 20:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.