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

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

  •  1
     
  •   dLvsYgJ8fiP8TGYU · 181 天前 · 3148 次点击
    这是一个创建于 181 天前的主题,其中的信息可能已经有所发展或是发生改变。

    基本情况

    • 宽带没有公网 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,将相应的端口穿透到云服务器上,再由客户端通过公网连接到云服务器的特定端口。这种方式是否可行?有没有安全性或合规性问题?

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

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

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

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

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

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

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

    如果想折中下,家里 nas 上建 openvpn 服务,然后用 frp 把 openvpn 服务穿透出去,所有设备直接连家里的 nas 上的 openvpn
    flexbug
        22
    flexbug  
       181 天前 via Android
    我用的樱花 frp ,可以给线路设置密码
    gps949
        23
    gps949  
       181 天前
    问就是 tailscale
    bianzhifu
        24
    bianzhifu  
       181 天前
    tailscale 有条件自建国内 derp
    hronro
        25
    hronro  
       181 天前
    @xuanloe #6
    搭建 DERP 是不是必须要备案?我有台没备案的腾讯轻量云,之前尝试搭建 DERP ,结果发现腾讯把所有 HTTP(S) 协议都封了,然后就没搭建成功。
    ayaseruri
        26
    ayaseruri  
       181 天前
    @hronro 应该是你的 http(s) 端口在防火墙中没有开放,我这里非标准端口完全没问题
    taobibi
        27
    taobibi  
       181 天前
    蒲公英盒子 如何
    walkxspace
        28
    walkxspace  
       181 天前
    目前我的方案是 IPv6 + DDNS-GO + 备过案的域名,在外可能会遇到没有 IPv6 的情况需要切换到流量之外,其它都蛮好的。
    hronro
        29
    hronro  
       181 天前
    @ayaseruri #26 你确定?你试过没备案的服务器搭建 DERP 吗?
    xuanloe
        30
    xuanloe  
       181 天前   ❤️ 1
    @hronro
    应该是你的域名没备案被腾讯云拦截了?
    DERP 也可以设置是 IPv4 的,不一定要域名 `HostName` 和 `IPv4`,只设置 `IPv4`
    FlyPuff
        31
    FlyPuff  
       181 天前 via Android   ❤️ 1
    zerotier 油管的 10 分钟视频就可以配置清楚,蛮简单的,而且 pavadan 和 openwrt 路由器能直接配置启用
    WildCat
        32
    WildCat  
       181 天前
    ZE3kr
        33
    ZE3kr  
       181 天前 via iPhone
    1. IPv6
    2. 打电话给运营商,说需要公网 IP
    totoro625
        34
    totoro625  
       181 天前
    备案域名+腾讯云+frp 把 NAS 上的端口映射到云服务器上
    开放了 443 的 web 管理和 SSH
    高位端口 SSH 基本每月一次被爆破
    但是设置了 ip:443 不显示任何网页,只有域名访问才行
    配置通配符证书+一个奇葩的入口域名,基本扫不到你的面板入口的
    hronro
        35
    hronro  
       181 天前
    @xuanloe #30 谢谢,明天我试试
    mezi04
        36
    mezi04  
       180 天前   ❤️ 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  
       180 天前
    公网 ip 能跟运营商申请的吧, 我今天才电话申请了
    heretreeli
        38
    heretreeli  
       180 天前
    个人觉得你想要的可能是 n2n ,https://github.com/ntop/n2n ,n2n 连接之后可以直通免掉中间服务器的流量。安卓有客户端
    mygoare
        39
    mygoare  
       180 天前
    zerotier +1
    wwhc
        40
    wwhc  
       180 天前
    ssh+openvpn
    anaf
        41
    anaf  
       180 天前
    ZeroTier +1
    iosx
        42
    iosx  
       180 天前 via iPhone
    推荐 ddnsto ,带微信验证,4M 带宽
    YAFEIML
        43
    YAFEIML  
       180 天前
    成本最低效果最好的是 IPV6 ,不计成本的话就简单了,大宽带云+frp 就阔以了。
    shineit
        44
    shineit  
       180 天前
    首选 P2P ,ZeroTier +1
    bigdude
        45
    bigdude  
       180 天前
    ipv4 没有公网,ipv6 必然有啊,首推 ipv6
    justin2018
        46
    justin2018  
       180 天前
    Tailscale · Best **N Service for Secure Networks
    https://tailscale.com/
    Latin
        47
    Latin  
       180 天前
    Tailscale ZeroTier +2
    leartang
        48
    leartang  
       180 天前
    ipv6
    newmlp
        49
    newmlp  
       180 天前
    ddns+vpn
    zealic
        50
    zealic  
       180 天前
    WireGuard + ZeroTier
    这两个目前都支持 ROS 了,直接路由器上配置,非常方便。
    hronro
        51
    hronro  
       180 天前
    @xuanloe #30
    我看了下 Tailscale 的文档( https://tailscale.com/kb/1118/custom-derp-servers ),没发现可以直接写 IPv4 啊?

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

    1. 稳定性还好,运营商封端口大多是封 http 流量,ss 是 tcp 流量,至少到我宽带到期,没有遇到过端口被封的情况。
    2. 主动探测跟破解这个没关注过,而且也无需担心,ss 本身就是加密流量,只要你不主动暴露自己的加密方式跟密码,也不有什么安全问题。
    spirit1431007
        56
    spirit1431007  
       178 天前 via Android
    n2n
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2932 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 13:49 · PVG 21:49 · LAX 06:49 · JFK 09:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.