V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
测试工具
SmokePing
IPv6 访问测试
zjsegzhf
V2EX  ›  宽带症候群

[求助][zerotier]zerotier 很卡,基本处于不太可用状态。

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

    最近房东换了个新网,没有公网 IP 了,之前是在路由器开了个 OpenVpn Server ,公司电脑作为 client 连过去。 家里路由器下有台服务器,装了些服务,本来公司电脑 vpn 连过来用着很方便。 同事服务器上开了 samba ,vpn 连过来,samba 作为网络驱动器挂在 windows 下用着很方便,速度也不错。 现在问题来了。

    没有公网 IP 后,我用过 frp 。 我腾讯云有机子,frp 可以用,速度也不错,但是只限于我开的那些服务,而且每个服务都要映射一遍,很麻烦。所以开始搜能不能没有公网 IP 的情况下,搭建局域网 vpn 。

    找到两个方案。

    • zerotier
    • openvpn

    zerotier

    我用了,我在我家里服务器上装了 zerotier ,路由器有 zerotier 插件也装了,公司电脑也装了 zerotier 。 现在有两个问题。

    • 很卡。节点接互 ping 经常丢包,时延也在 400-800ms 。samba 的服务器上装了 zerotier ,能作为网络驱动器打开但是很卡,打开个目录卡个几秒钟,考个文件过去卡住没什么反应,基本不可用。
    • 公司能 ping 通路由器,同时路由器上做了端口转发到内网服务端口,但是访问路由器开出来的端口无法访问服务。(这样的思路不行么?) 不知道怎么解决,卡的问题是不是能通过在腾讯云搭建 moon 节点解决?

    openvpn

    我还没有试,思路是在腾讯云或者其他有公网 IP 的机子上装个 openvpn server ,将路由器和公司电脑作为 client 接入。路由器开端口映射,公司电脑是不是就能通过路由器的局域网 ip 和开出来的端口进行访问? 然后在 samba 服务器作为 client 接入,公司电脑也就能访问 samba 目录了。(不知道行不行?)

    网络小白,大哥们求赐教。

    55 条回复    2022-08-05 20:04:54 +08:00
    billytom
        1
    billytom  
       40 天前 via iPhone
    1.先把 zt 各节点 ipv6 彻底禁掉
    2.开一个腾讯 hk 轻量云,做 moon 服务器(当然你要先测试下舒服,你要内地就没办法了)
    weichengwu
        2
    weichengwu  
       40 天前 via iPhone
    有服务器可以试试 nps ,简单易用,也挺稳的
    zjsegzhf
        3
    zjsegzhf  
    OP
       40 天前
    多谢回复

    @billytom
    - zt 节点的 ipv6 怎么禁用? IPv6 Auto-Assign 里都是没有勾选的。
    一定要 hk 的服务器吗? 内地的服务器不可以么
    还有就是为什么能 ping 通路由器的局域网 ip ,但是无法访问路由器端口映射的服务呢?

    @weichengwu
    我去看一下。 我主要是想能够把路由器接进去,不用我每台虚拟机都设置一遍。
    WordTian
        4
    WordTian  
       40 天前
    卡的原因主要就是国内对 UDP 的 qos 策略,openvpn 默认配置也一样的问题,当然 openvpn 可以改成 tcp 连接的
    zjsegzhf
        5
    zjsegzhf  
    OP
       40 天前
    #### 更新:
    关于 zerotier ,我现在笔记本连着路由器,装了 zerotier ,ping 路由器的 zt 的局域网 ip ,延迟都在 1ms 2ms ,但是我还是访问不了路由器端口映射的服务。
    我直接访问路由器网关 IP 加映射端口,也无法访问服务。

    是不能这么用吗? 还是说路由器防火墙啥的导致的
    luxiang1204
        6
    luxiang1204  
       40 天前 via Android
    @zjsegzhf 可以设置一下 zerotier 的路由。
    Marionic0723
        7
    Marionic0723  
       40 天前 via Android
    路由表改一下,比如 192.168.1.0 via 203.0.113.1 ,前者是你路由器所在的局域网地址,后者是路由器在 zerotier 中的 IP 。
    Greenm
        8
    Greenm  
       40 天前 via iPhone
    换成 tailscale
    zjsegzhf
        9
    zjsegzhf  
    OP
       40 天前
    @luxiang1204 @Marionic0723
    两位说的路由是在 zt 中加吗? 我看到 zt 中有个管理路由的地方。
    我在 zt 中加了路由,192.168.50.1/24 via 192.168.196.220, 192.168.50.1 是我路由器的局域网地址,后者是 zt 中的地址。 操作加入后,显示路由编程了 192.168.50.0/24 via 192.168.196.220 。
    我试着访问 http://192.168.196.220:30180 ,30180 是我路由器开的端口转发,但是访问不通。
    我在另一台装了 zt ,且能 ping 通 192.168.196.220 的服务器上,用 nc -vz 192.168.196.220 30180 和 curl https://192.168.196.220:30180 , 都显示 connection refused 。
    luxiang1204
        10
    luxiang1204  
       40 天前 via Android
    @zjsegzhf 192.168.50.0/24 via 192.168.196.220 试试呢
    luxiang1204
        11
    luxiang1204  
       40 天前
    @zjsegzhf 添加路由之后直接通过你路由器下的服务器 ip 访问。例如:192.168.50.x
    zjsegzhf
        12
    zjsegzhf  
    OP
       40 天前
    @luxiang1204 我在 zt 中添加 192.168.50.0/24 via 192.168.196.220 , 添加后他还是显示 192.168.50.0/24 via 192.168.196.220 。

    我添加 192.168.50.1/24 via 192.168.196.220 , 添加后也显示 192.168.50.1/24 via 192.168.196.220

    然后我添加了 192.168.50.1/32 via 192.168.196.220 , 添加后显示 192.168.50.1/32 via 192.168.196.220 , 可是我通过 http://192.168.196.220:30180 还是访问不了服务,nc 和 curl 还是显示 connection refused 。
    zjsegzhf
        13
    zjsegzhf  
    OP
       40 天前
    @luxiang1204 我理解你的意思了,通过 zt 组网,再加上路由,然后直接访问服务器的局域网 ip 。
    我现在设备连到外网,挂着 zt ,但是 ping 不通路由器 zt 的地址,昨天还偶尔能通,今天直接通不了了。。 也 ping 不通局域网的服务器 ip 。。
    luxiang1204
        14
    luxiang1204  
       40 天前
    自建 moon 试试呢。会好很多的
    tonghuashuai
        15
    tonghuashuai  
       40 天前 via iPhone   ❤️ 1
    试试 tailscale
    Marionic0723
        16
    Marionic0723  
       40 天前
    管理员权限 cmd 执行 zerotier-cli peers 查看和 LEAF 节点的连接状态,第五个是 Direct 则为直接连接,否则为 ZT 的服务器中继。
    3fae7fec67 - LEAF -1 RELAY
    f4a2188588 1.8.9 LEAF -1 DIRECT 44 3026 240e:324:**/16384

    至于路由表的问题,需要在路由器里打开自动允许 NAT 的功能,Openwrt 在 LUCI 上可以开启,也可以改配置文件,加一行 option nat '1' 。
    比如我在手机连接 ZT 内网( 203.0.113.120 ),远程桌面家里的电脑( 192.168.43.10 ,203.0.113.10 ),如果我发起连接的目标地址是 192 的,那么电脑端看到的 IP 来自 203.0.113.2 (路由器的 ZT 地址);如果是 203 的,则的男生看到的是手机的 ZT 地址(...120 )。
    路由表添加的是 192.168.43.0/24 via 203.0.113.2 .

    不过这种连接性很差,UDP 丢包太严重,我现在把两地路由器装上 Softether VPN ,加一个三层交换机组网,有点绕不过来,最后翻官网文档还是看明白了。
    Marionic0723
        17
    Marionic0723  
       40 天前
    @Marionic0723 破输入法又打错了,的男生->DNS 。

    Softether VPN 组网很不错,TCP 的,不卡。不过路由跟踪偶尔发现 IP 乱跳,在主服务器( 192.168.43.0/24 )上创建虚拟三层交换机,把所有的虚拟 HUB 接口添加进去,IP 设置所在接口所在内网的地址(如 main 为 192.168.43.254 ,sub 为 192.168.35.254 ),再通过网桥接到路由器 LAN 上。需要组网的地方(子 LAN ,192.168.35.0/24 )通过级联连接到主网络的 HUB 上,然后也桥接到 LAN 。即可通过三层交换,而且没有 NAT.

    192.168.43.10 访问 35.2 ,路由跟踪显示经过 43.1 (路由器)、43.254 (三层交换机)、35.254 、35.2.偶尔会少一跳不过不受影响。
    dingdangnao
        18
    dingdangnao  
       40 天前
    试试自建 moon 呢?
    zjsegzhf
        19
    zjsegzhf  
    OP
       40 天前
    @Marionic0723 我用腾讯国内主机作为 moon ,然后把路由器和我笔记本都加入了这个 moon 。

    用 list peers 看了下还是 LEAF 。 但是在笔记本外网 ping 路由器的 zt 地址时,基本在 100ms-200ms 之间。

    我有一个疑问是,我不设置路由表,我直接在笔记本外网访问路由器的 zt ip+路由器端口映射出来的 port ,为什么访问不了服务呢?
    zjsegzhf
        20
    zjsegzhf  
    OP
       40 天前
    @luxiang1204 @dingdangnao
    我用腾讯云主机作为 moon , 把路由器和外网笔记本加进去了。但是通过 list peers 看还是 LEAF 。 不过笔记本 ping 路由器在 100ms 到 200ms 之间了,比之前不通好太多了。

    但是现在我还是无法在外网笔记本访问路由器下面的服务器上的服务。我在路由器加了端口映射,出来的端口是 30180 ,我在外网笔记本访问路由器 zt 地址加 30180 无法通。
    CKR
        21
    CKR  
       40 天前 via Android
    zerotier 没公网 v4 的话感觉很不稳定。
    之前尝试过将两个宽带组网,两边都是一样的配置没有公网 v4 的一边连通性极差只有偶尔能连上,有公网那边就很流畅。
    最后受不了就用 socat 做了个 ipv6 的端口转发,先通过代理连过去再访问内网的服务,或者直接映射局域网内的端口也行。
    zjsegzhf
        22
    zjsegzhf  
    OP
       40 天前
    @luxiang1204 @dingdangnao @Marionic0723
    我登到了路由器后台上,用 netstat -an | grep 30180 看了下,路由器并没有监听这个端口。。 但是我在路由器界面是做了端口转发的,外部端口 30180 到内部 30180 。。。
    lazyyz
        23
    lazyyz  
       40 天前
    OP 既然已经在服务器上安装了 zerotier ,那为什么要在路由器上安装 zerotier ,再转发一遍?笔记本通过 zerotier 直接访问服务器不就好了么?
    时延高看一下是不是 moon 没有生效导致没有直连
    zjsegzhf
        24
    zjsegzhf  
    OP
       40 天前
    @lazyyz 因为我路由器下有多个服务器,我并不想在每个服务器上都去装一遍 zerotier , 我最终的目标是只在路由器上装 zerotier ,能在外网访问路由器下的所有设备。 现在在其中一台服务器上装 zerotier 只是为了测试
    luxiang1204
        25
    luxiang1204  
       40 天前
    @zjsegzhf 试试这个呢`zerotier-cli orbit $MOON_ID $MOON_ID`,$MOON_ID 是你自建的 moon 节点 id 。https://docs.zerotier.com/zerotier/moons/
    zjsegzhf
        26
    zjsegzhf  
    OP
       40 天前
    @luxiang1204 嗯,我是参照这个文档加的 moon , 在我路由器和外网笔记本都加了这个 moon ,ID 我看文档应该是之前创建 moon 节点的时候 zerotier-idtool genmoon moon.json 生成出来的 id , 加了后我在外网笔记本和路由器 listpeers 都能看到那个 moon 节点是 moon , 只是外网笔记本和路由器依然还是 LEAF 。
    不过这个延迟现在倒不是重点了, 因为延迟现在在 100-200ms ,主要是还是没法访问路由器上端口映射的服务。。
    Marionic0723
        27
    Marionic0723  
       40 天前
    @zjsegzhf 你路由器系统是 Openwrt 吗? Openwrt 默认会把 ZT 的网络视为局域网,不需要设置端口转发就可以直接使用,监听的地方要输入 0.0.0.0 而不是 127.0.0.1 。
    如果有 bug 可以把 zerotier 的设备,比如我的叫"ztwdji3dfc"桥接到局域网接口上,不过这样同一 ZT 网络的设备如果开了 DHCP 就会收到路由器下发的 IP 地址了。
    zjsegzhf
        28
    zjsegzhf  
    OP
       40 天前
    @Marionic0723 不是的,我的是华硕的 AC66U 刷了梅林。
    “Openwrt 默认会把 ZT 的网络视为局域网,不需要设置端口转发就可以直接使用,监听的地方要输入 0.0.0.0 而不是 127.0.0.1 。” 你的意思是直接访问服务的局域网 IP+端口,只要服务监听的是 0.0.0.0 , 但是这得在 zt 上先配好路由对吧?
    Marionic0723
        29
    Marionic0723  
       40 天前
    @zjsegzhf はい,是的。如果两方都有加入网络的 zerotier ,路由这一步都可以省略了。
    梅林的 ZT 貌似本身就有 bug ,我之前在斐讯 K3 上刷的梅林,开 ZT 没两天就掉线了,再开启就说获取不到 IP 地址,然后强制关闭。你可以先在虚拟机跑一个 openwrt ,装上 zt 研究下。
    zjsegzhf
        30
    zjsegzhf  
    OP
       40 天前
    @Marionic0723 多谢, 我远程到我老家的电脑,在上面装了个 zt 加进来,在 zt 上加了路由,是可以访问我的服务的。

    我外网笔记本检测 NAT 是 Symmetric , 老家电脑是 Port-Restricted Cone , 不知道有没有影响。
    在老家电脑 ping 我路由器底下的服务器的局域网 ip (服务器并没有装 zt ,在 zt 上配了路由),延迟在 20ms 以内。在我外网笔记本 ping ,直接不通。。
    chouxiang99
        31
    chouxiang99  
       40 天前 via iPhone
    考虑一下自建 moon 服务器 我建之前 400ms 延迟 弄了 moon 延迟 40
    zjsegzhf
        32
    zjsegzhf  
    OP
       40 天前
    @Marionic0723 再次更新。 没做啥操作,过了会再在外网笔记本 ping 路由器底下的服务器的局域网 ip ,通了,延迟在 200ms 左右,访问服务也通了,起码能用了。。 我再研究研究看怎么提高下速度。
    zjsegzhf
        33
    zjsegzhf  
    OP
       40 天前
    @chouxiang99 我描述下我建 moon 的过程,看看是不是我建 moon 有问题。
    我参照 https://docs.zerotier.com/zerotier/moons/这个文档建的。
    我在国内腾讯云主机先安装 zt ,并加入 network 。然后参照文档生成 moon.json ,修改 stableEndpoints 里加上我的腾讯云主机公网 IP 和端口, 并通过 zerotier-idtool genmoon moon.json 生成.moon 文件并放入 moons.d 目录下,并修改了目录和文件的属主为 zerotier-one ,然后重启 zerotier-one 服务。

    然后在外网笔记本和家里电脑和路由器通过 zerotier-cli orbit 加入 moon 节点,然后 list peers 能看腾讯云主机节点类型是 moon ,然后我用 zerotier-cli peers 命令查看,第 5 列<link>下都是 DIRECT , 这代表已经是 p2p 了吗?
    7RTDKSAK
        34
    7RTDKSAK  
       40 天前
    家里开 openvpn 服务端,然后 frp 把端口暴露到 vps 上?
    Laitinlok
        35
    Laitinlok  
       40 天前 via Android
    @7RTDKSAK 不行 samba 沒有加密的
    pendulum
        36
    pendulum  
       40 天前
    还是用 openvpn 吧,挺方便的,如果 IP 是境外的就不要用 UDP ,容易丢包
    yuantianwei
        37
    yuantianwei  
       40 天前
    国内还是考虑自建 planet 吧,moon 不行,planet 完美解决。
    nexply1920
        38
    nexply1920  
       40 天前
    推荐 headscale 自建 Tailscale 服务器
    基于 WireGuard
    BeautifulSoap
        39
    BeautifulSoap  
       40 天前 via Android
    @Laitinlok 但 openvpn 是加密的,安全性没任何问题
    BeautifulSoap
        40
    BeautifulSoap  
       40 天前 via Android
    看了上面内容,zerotier 这么折腾的吗?

    如果 lz 不想折腾,那就把家里的 openvpn 通过 frp 暴露出去,只要连上 openpvn 就能访问家里内网

    或者 tailscale 了解下?简单无脑异地组网开箱即用。你既然有云服务器可以自建个 derp 节点改善延迟。并且 tailscale 还支持 router ,可以在任何一台运行了 tailscale 的机子上使用内网 ip 直接访问
    idblife
        41
    idblife  
       40 天前 via iPhone
    换 tailscale 试试
    Marionic0723
        42
    Marionic0723  
       40 天前
    @zjsegzhf NAT3 和 NAT4 相连,必须全程走公网服务器转发,ZT 国内不自建就走外国的,延迟四五百都正常。就算同一局域网互联,第一次 Ping 延迟也会高,第二次以后才正常。
    Dragonphy
        43
    Dragonphy  
       40 天前
    zerotier 装个 moon 节点就行了
    anyele
        44
    anyele  
       39 天前
    目前在用 Tailscale , 也不是每次打洞都成功, 将就用了
    zjsegzhf
        45
    zjsegzhf  
    OP
       39 天前
    @7RTDKSAK @pendulum @BeautifulSoap
    多谢,之前只想到在云主机装 openvpn ,家里和公司作为 client 接过去,没想到还能通过 frp 把家里的 server 端口暴露出去。我待会试试。

    @nexply1920 @idblife
    没了解过 tailscale ,我去看一下。
    zbcwilliam
        46
    zbcwilliam  
       39 天前
    n2n ,部署比较简单。supernode 可以建在国内 vps 上。
    chouxiang99
        47
    chouxiang99  
       39 天前
    @zjsegzhf
    &t=604s 你仔细按照这个视频操作试试 我当时按这个视频来的 没有任何问题
    pota
        48
    pota  
       39 天前
    我是在上海腾讯自建 moon 节点,目前链接家里机子 ping 也就 30 不到
    sorapsyga
        49
    sorapsyga  
       38 天前
    我目前用的 headscale 跟 zerotier ,不知道是不是固件的问题,我 zerotier 插件防火墙那些都配置好了,但是内网穿透各种失败,但是客户端之间通讯打游戏一点问题都没有,就是路由器上的服务连不上。tailscale 客户端连上后各种畅通无阻……但是因为 headscale 没有 WEB UI 配置,所以我现在是公司电脑两个客户端都装了,家里的 openwrt 路由器也 2 个都装了。
    ZT 跟 headscale 都是部署在同一个腾讯云轻量服务器,挺好使的。ZT 我搭了个 PLANET ,但是用起来没感觉跟 MOON 节点有啥区别,tailscale 的话就只用来访问路由器,也没太大感觉,反正这两个东西我 PING 的时候都是 4ms 延迟,也不丢包,还搭了个 TEAMSPEAK 跟基友吹水,还是挺好的。可能是因为大广东的电信不做 Qos 了?
    zjsegzhf
        50
    zjsegzhf  
    OP
       38 天前
    再次更新,tailscale 我看了但是没有尝试。

    现在还是用的 openvpn ,用 frp 把端口映射到了腾讯云机子上。
    能用,就是挺卡的,访问服务页面加载得好几秒,跟之前公网 IP ddns 没法比,不过勉强能用了。
    我把 openvpn 改成了 tcp ,感觉上好像好那么一点。ping 大概在 70ms 左右。
    kennir
        51
    kennir  
       38 天前
    zerotier 和 tailscale 都有用过,感觉还是 zerotier 更稳定一些
    Wenpo
        52
    Wenpo  
       35 天前
    我的实际使用体验是:

    同运营商,即便是跨省都没问题。

    跨运营商,同城内没问题。

    同运营商同城内,基本上是 5ms 内

    UPNP 可用,NAT1 情况下哈

    除了 moon ,另外有个可能就是防火墙的问题
    zjsegzhf
        53
    zjsegzhf  
    OP
       32 天前
    @Wenpo 新宽带是 NAT4 我已经放弃挣扎了
    Aurorataro
        54
    Aurorataro  
       31 天前 via Android
    有 vps 可以自建 moon 中转 只不过每个客户端都要设置
    systemcall
        55
    systemcall  
       13 天前
    zerotier 早就支持 IPv6 了
    看一下双方是否有 IPv6 ,都有的话防火墙放行,就够了
    IPv4 ,没有公网,至少一边得是 FullCone ,不然走 planet 中转,卡死你
    有 moon 的话,记得要两边都加上 moon ,还有就是 Android 端得用修改版的才支持 moon ,iOS 似乎无解
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2789 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 10:53 · PVG 18:53 · LAX 03:53 · JFK 06:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.