[{"data":1,"prerenderedAt":1163},["ShallowReactive",2],{"content:\u002Fposts\u002Fzerotier-private-planet-setup":3,"surround:\u002Fposts\u002Fzerotier-private-planet-setup":1152},{"id":4,"title":5,"body":6,"categories":1120,"date":1122,"description":1123,"draft":1124,"extension":1125,"image":1126,"meta":1127,"navigation":1129,"path":1130,"permalink":1126,"pinned":1124,"published":1126,"readingTime":1131,"recommend":1126,"references":1126,"seo":1136,"sitemap":1137,"stem":1138,"tags":1139,"type":1150,"updated":1122,"__hash__":1151},"content\u002Fposts\u002Fposts\u002Fzerotier-private-planet-setup.md","突破内网延迟：ZeroTier 私有 Planet 节点搭建全攻略",{"type":7,"value":8,"toc":1089},"minimark",[9,19,40,59,64,94,171,189,193,198,208,214,222,226,232,247,251,269,273,276,308,318,322,325,329,332,338,342,412,426,430,437,442,448,453,461,469,473,479,498,506,509,515,519,522,528,539,542,548,552,567,573,577,583,608,612,615,621,649,660,666,669,697,701,704,710,714,721,742,749,753,780,804,810,816,822,841,844,850,854,862,865,871,874,977,981,1074],[10,11,15],"alert",{"title":12,"type":13,"icon":14},"AI 迁移提示","info","tabler:robot",[16,17,18],"p",{},"本文由 AI 协助从旧站迁移，尚未完成逐篇人工审校；内容如有疏漏，将在复核后修订。",[16,20,21,22,26,27,34,35,39],{},"ZeroTier 官方的 Planet 根节点都在北美 \u002F 欧洲，国内客户端每次握手、心跳都要绕一圈海外——社区普遍反映延迟 150",[23,24,25],"del",{},"300 ms 起步。把 Planet 搬到自己的国内云服务器上，控制面延迟通常能降到 **20","50 ms** 区间，同时 ZeroTier 的控制数据不再经第三方。本文基于 ",[28,29,33],"a",{"href":30,"rel":31},"https:\u002F\u002Fgithub.com\u002Fxubiaolin\u002Fdocker-zerotier-planet",[32],"nofollow","xubiaolin\u002Fdocker-zerotier-planet"," 镜像，走一遍完整流程：",[36,37,38],"strong",{},"容器部署 → 提取 planet 文件 → 多平台客户端替换 → 验证延迟改善 → (可选) 局域网互访和 Moon","。",[10,41,43],{"title":42,"type":13},"延迟数据说明",[16,44,45,46,49,50,58],{},"上面的 150",[23,47,48],{},"300 ms \u002F 20","50 ms 是社区典型观察值，与你的客户端所在运营商、自建 Planet 所在地域、中间网络质量都有关。",[36,51,52,53,57],{},"务必在替换前后各 ",[54,55,56],"code",{"code":56},"ping"," 一次做自己的基线对比","（见第 5.3 节）。",[60,61,63],"h2",{"id":62},"_1-前置条件","1. 前置条件",[65,66,67,74,80,83],"ul",{},[68,69,70,73],"li",{},[36,71,72],{},"一台公网可访问的云服务器","（1H1G 即可，国内节点优先；带宽 1 Mbps 以上体验更好）",[68,75,76,79],{},[36,77,78],{},"Docker + Docker Compose"," 已安装",[68,81,82],{},"有公网 IPv4（IPv6 可选）",[68,84,85,86,89,90,93],{},"云厂商",[36,87,88],{},"安全组","和主机",[36,91,92],{},"防火墙","（ufw \u002F firewalld）放行下表端口：",[95,96,97,113],"table",{},[98,99,100],"thead",{},[101,102,103,107,110],"tr",{},[104,105,106],"th",{},"端口",[104,108,109],{},"协议",[104,111,112],{},"用途",[114,115,116,130,141,151,161],"tbody",{},[101,117,118,122,127],{},[119,120,121],"td",{},"9993",[119,123,124],{},[36,125,126],{},"UDP",[119,128,129],{},"ZeroTier 核心通信（P2P 握手、心跳、数据转发）",[101,131,132,135,138],{},[119,133,134],{},"9994",[119,136,137],{},"TCP",[119,139,140],{},"可选备用通道（UDP 被运营商封锁时 fallback）",[101,142,143,146,148],{},[119,144,145],{},"9995",[119,147,137],{},[119,149,150],{},"可选备用通道",[101,152,153,156,158],{},[119,154,155],{},"3443",[119,157,137],{},[119,159,160],{},"Planet 管理 Web UI",[101,162,163,166,168],{},[119,164,165],{},"3000",[119,167,137],{},[119,169,170],{},"内置文件服务器（方便直接下载 planet 文件）",[10,172,175],{"title":173,"type":174},"UDP 9993 必须通","warning",[16,176,177,178,180,181,184,185,188],{},"ZeroTier 主通道是 ",[36,179,126],{},"，很多云厂商默认安全组只放行 TCP。如果 9993\u002Fudp 没开，客户端 peers 列表里会看到 PLANET 行的 link 是 ",[36,182,183],{},"RELAY"," 而不是 ",[36,186,187],{},"DIRECT","，性能直接大打折扣。",[60,190,192],{"id":191},"_2-部署-planet-容器","2. 部署 Planet 容器",[194,195,197],"h3",{"id":196},"_21-创建目录并写-docker-composeyaml","2.1 创建目录并写 docker-compose.yaml",[199,200,206],"pre",{"className":201,"code":203,"language":204,"meta":205},[202],"language-bash","mkdir -p \u002Fdata\u002Fzerotier-planet\u002F{data,dist,ztncui,zerotier-one}\ncd \u002Fdata\u002Fzerotier-planet\n","bash","",[54,207,203],{"__ignoreMap":205},[16,209,210,213],{},[54,211,212],{"code":212},"docker-compose.yaml","：",[199,215,220],{"className":216,"code":218,"language":219,"meta":205},[217],"language-yaml","services:\n  zerotier-planet:\n    image: xubiaolin\u002Fzerotier-planet:latest\n    container_name: zerotier-planet\n    restart: unless-stopped\n    network_mode: host          # 推荐 host：ZeroTier 多端口 + NAT 穿透需求复杂\n    volumes:\n      - .\u002Fdata:\u002Fapp\u002Fdata\n      - .\u002Fdist:\u002Fapp\u002Fdist        # planet \u002F moon 等文件的生成目录\n      - .\u002Fztncui:\u002Fapp\u002Fztncui\n      - .\u002Fzerotier-one:\u002Fvar\u002Flib\u002Fzerotier-one\n    environment:\n      IP_ADDR4: \"你的公网IPv4\"   # 必填\n      IP_ADDR6: \"\"               # 有 IPv6 可填\n      ZT_PORT: 9993\n      API_PORT: 3443\n      FILE_SERVER_PORT: 3000\n","yaml",[54,221,218],{"__ignoreMap":205},[194,223,225],{"id":224},"_22-启动并查看日志","2.2 启动并查看日志",[199,227,230],{"className":228,"code":229,"language":204,"meta":205},[202],"docker compose up -d\ndocker compose logs -f zerotier-planet\n",[54,231,229],{"__ignoreMap":205},[16,233,234,235,238,239,242,243,246],{},"日志里看到 ",[54,236,237],{"code":237},"planet generated"," \u002F ",[54,240,241],{"code":241},"server started"," 等提示即部署成功。首次启动容器会生成你专属的 Planet 密钥和 ",[54,244,245],{"code":245},"planet"," 文件。",[194,248,250],{"id":249},"_23-首次登录管理-ui","2.3 首次登录管理 UI",[16,252,253,254,257,258,238,261,264,265,268],{},"浏览器打开 ",[54,255,256],{"code":256},"http:\u002F\u002F\u003C公网IP>:3443","，用 README 里给出的默认凭据登录（一般是 ",[54,259,260],{"code":260},"admin",[54,262,263],{"code":263},"password","，",[36,266,267],{},"请立即在 UI 中修改","）。管理 UI 提供网络创建、节点授权、IP 分配等图形化操作。",[60,270,272],{"id":271},"_3-创建一个-zerotier-网络","3. 创建一个 ZeroTier 网络",[16,274,275],{},"在管理 UI 中：",[277,278,279,288,298],"ol",{},[68,280,281,284,285],{},[36,282,283],{},"Add network"," → 填写网络名称 → ",[36,286,287],{},"Create",[68,289,290,291,294,295],{},"进入网络详情 → ",[36,292,293],{},"Easy setup"," → ",[36,296,297],{},"Generate network address",[68,299,300,301,304,305],{},"配置好 IPv4 分配段（默认的 ",[54,302,303],{"code":303},"10.x.x.x\u002F24"," 够用）→ ",[36,306,307],{},"Submit",[16,309,310,313,314,317],{},[36,311,312],{},"复制生成的 16 位网络 ID","，稍后客户端 ",[54,315,316],{"code":316},"zerotier-cli join"," 要用。",[60,319,321],{"id":320},"_4-替换客户端的-planet-文件","4. 替换客户端的 Planet 文件",[16,323,324],{},"只有替换了 planet 文件的客户端，才会连接到你的自建 Planet 而不是 ZeroTier 官方 Planet。",[194,326,328],{"id":327},"_41-从服务器获取-planet-文件","4.1 从服务器获取 planet 文件",[16,330,331],{},"两种方式任选：",[199,333,336],{"className":334,"code":335,"language":204,"meta":205},[202],"# 方式 A：docker cp 直接从容器内取出\ndocker cp zerotier-planet:\u002Fapp\u002Fdist\u002Fplanet .\u002Fplanet\n\n# 方式 B：通过容器内置的文件服务器下载（端口 3000）\ncurl -O http:\u002F\u002F\u003C你的公网IP>:3000\u002Fplanet\n",[54,337,335],{"__ignoreMap":205},[194,339,341],{"id":340},"_42-把-planet-放到各平台的正确位置","4.2 把 planet 放到各平台的正确位置",[95,343,344,354],{},[98,345,346],{},[101,347,348,351],{},[104,349,350],{},"平台",[104,352,353],{},"Planet 文件路径",[114,355,356,368,380,392,402],{},[101,357,358,363],{},[119,359,360],{},[36,361,362],{},"Linux",[119,364,365],{},[54,366,367],{"code":367},"\u002Fvar\u002Flib\u002Fzerotier-one\u002Fplanet",[101,369,370,375],{},[119,371,372],{},[36,373,374],{},"macOS",[119,376,377],{},[54,378,379],{"code":379},"\u002FLibrary\u002FApplication Support\u002FZeroTier\u002FOne\u002Fplanet",[101,381,382,387],{},[119,383,384],{},[36,385,386],{},"Windows",[119,388,389],{},[54,390,391],{"code":391},"C:\\ProgramData\\ZeroTier\\One\\planet",[101,393,394,399],{},[119,395,396],{},[36,397,398],{},"Android",[119,400,401],{},"⚠️ 受沙箱限制，官方 App 不开放修改 planet 路径",[101,403,404,409],{},[119,405,406],{},[36,407,408],{},"iOS",[119,410,411],{},"⚠️ 同上",[10,413,415,418],{"title":414,"type":174},"Android \u002F iOS 的限制",[16,416,417],{},"移动端的 ZeroTier 官方 App 不支持自定义 Planet，无法走自建 Planet 直连。如果手机端必须接入：",[65,419,420,423],{},[68,421,422],{},"在有 root \u002F 越狱的设备上通过文件管理器替换（折腾度高）",[68,424,425],{},"或者让手机通过已替换 planet 的路由器 \u002F NAS 作为 gateway 间接接入",[194,427,429],{"id":428},"_43-重启客户端-zerotier-服务","4.3 重启客户端 ZeroTier 服务",[16,431,432,433,436],{},"替换 planet 文件后，必须",[36,434,435],{},"重启 ZeroTier 服务","才会重新加载：",[16,438,439,213],{},[36,440,441],{},"Linux（systemd）",[199,443,446],{"className":444,"code":445,"language":204,"meta":205},[202],"sudo systemctl restart zerotier-one\n",[54,447,445],{"__ignoreMap":205},[16,449,450,213],{},[36,451,452],{},"Windows（PowerShell 管理员）",[199,454,459],{"className":455,"code":457,"language":458,"meta":205},[456],"language-powershell","Restart-Service \"ZeroTier One\"\n# 或在服务管理器 services.msc 里手动重启 \"ZeroTier One\"\n","powershell",[54,460,457],{"__ignoreMap":205},[16,462,463,465,466,39],{},[36,464,374],{},"：从菜单栏 ZeroTier 图标退出 App 再重新打开；或命令行 ",[54,467,468],{"code":468},"sudo launchctl unload\u002Fload com.zerotier.one.plist",[194,470,472],{"id":471},"_44-验证-planet-替换已生效","4.4 验证 Planet 替换已生效",[199,474,477],{"className":475,"code":476,"language":204,"meta":205},[202],"zerotier-cli peers\n",[54,478,476],{"__ignoreMap":205},[16,480,481,482,485,486,489,490,493,494,497],{},"输出里找 ",[36,483,484],{},"PLANET"," 那一行，",[54,487,488],{"code":488},"\u003Cpath>"," 列的 IP 应当是",[36,491,492],{},"你自建服务器的公网 IP","（不再是 ZeroTier 官方 IP 如 ",[54,495,496],{"code":496},"50.7.73.34"," 等）：",[199,499,504],{"className":500,"code":502,"language":503},[501],"language-text","\u003Cztaddr>   \u003Cver>  \u003Crole> \u003Clat> \u003Clink>   \u003ClastTX> \u003ClastRX> \u003Cpath>\n881b287f44 1.14.1 PLANET    20 DIRECT   459      449      \u003C你的公网IP>\u002F9994\n","text",[54,505,502],{"__ignoreMap":205},[16,507,508],{},"同时可以和替换前做延迟对比：",[199,510,513],{"className":511,"code":512,"language":204,"meta":205},[202],"# 替换前记录\nping -c 20 50.7.73.34   # ZeroTier 官方 Planet 之一\n\n# 替换后\nping -c 20 \u003C你的公网IP>\n",[54,514,512],{"__ignoreMap":205},[60,516,518],{"id":517},"_5-加入网络","5. 加入网络",[16,520,521],{},"在客户端上执行：",[199,523,526],{"className":524,"code":525,"language":204,"meta":205},[202],"zerotier-cli join \u003C你的网络ID>\n",[54,527,525],{"__ignoreMap":205},[16,529,530,531,534,535,538],{},"然后",[36,532,533],{},"回到管理 UI 把这个新节点 Authorize","（在 Members 列表里勾选），客户端就会拿到一个网络内 IP（如 ",[54,536,537],{"code":537},"10.147.17.x","）。",[16,540,541],{},"常用子命令：",[199,543,546],{"className":544,"code":545,"language":204,"meta":205},[202],"zerotier-cli info               # 查看本机节点 ID\nzerotier-cli listnetworks       # 查看已加入的网络\nzerotier-cli leave \u003C网络ID>     # 退出网络\nzerotier-cli peers              # 查看所有对端\n",[54,547,545],{"__ignoreMap":205},[60,549,551],{"id":550},"_6-可选-让-zerotier-客户端访问服务端所在的局域网","6. (可选) 让 ZeroTier 客户端访问服务端所在的局域网",[16,553,554,555,558,559,562,563,566],{},"这一节是",[36,556,557],{},"进阶场景","：你的自建 Planet 服务器本身也部署在某个家庭 \u002F 办公室局域网里（比如 ",[54,560,561],{"code":561},"192.168.1.0\u002F24","），希望外部 ZeroTier 客户端加入虚拟网络后，能",[36,564,565],{},"穿透访问这个局域网里的其他设备","（NAS、打印机、摄像头等）。",[16,568,569,570,39],{},"如果你只是把 Planet 服务器当作公网路由节点、不需要访问它所在的局域网，",[36,571,572],{},"跳过整个第 6 节",[194,574,576],{"id":575},"_61-开启并持久化-ip_forward","6.1 开启并持久化 ip_forward",[199,578,581],{"className":579,"code":580,"language":204,"meta":205},[202],"# 写入配置文件（持久化，重启后仍生效）\necho \"net.ipv4.ip_forward=1\" | sudo tee \u002Fetc\u002Fsysctl.d\u002F99-ip-forward.conf\n\n# 立即加载\nsudo sysctl --system\n",[54,582,580],{"__ignoreMap":205},[10,584,586],{"title":585,"type":174},"原始的 sysctl -w 不持久化",[16,587,588,591,592,595,596,599,600,603,604,607],{},[54,589,590],{"code":590},"sysctl -w net.ipv4.ip_forward=1"," 只影响",[36,593,594],{},"当前运行时","，重启丢失。必须写进 ",[54,597,598],{"code":598},"\u002Fetc\u002Fsysctl.conf"," 或 ",[54,601,602],{"code":602},"\u002Fetc\u002Fsysctl.d\u002F*.conf","，再用 ",[54,605,606],{"code":606},"sysctl --system"," 加载才算持久化。",[194,609,611],{"id":610},"_62-配置-iptables-nat-forward","6.2 配置 iptables NAT + FORWARD",[16,613,614],{},"先查出两个网卡名：",[199,616,619],{"className":617,"code":618,"language":204,"meta":205},[202],"ip a\n# 输出里找两张网卡：\n# - 物理网卡：通常是 eth0 \u002F enp0s3 \u002F ens33 \u002F ovs_eth0 等\n# - ZeroTier 虚拟网卡：以 zt 开头，如 ztre4xmo4y\n",[54,620,618],{"__ignoreMap":205},[10,622,624],{"title":623,"type":174},"不要直接抄 `ovs_eth0`",[16,625,626,627,630,631,644,645,648],{},"原笔记里 ",[54,628,629],{"code":629},"PHY_IF=ovs_eth0"," 是作者在 OpenVSwitch 环境（PVE \u002F OpenStack 等）下的网卡名。",[36,632,633,634,238,637,238,640,643],{},"绝大多数读者的物理网卡是 ",[54,635,636],{"code":636},"eth0",[54,638,639],{"code":639},"enp0s3",[54,641,642],{"code":642},"ens33"," 等","，直接抄会报错。务必用 ",[54,646,647],{"code":647},"ip a"," 看自己实际的网卡名。",[16,650,651,652,655,656,659],{},"替换 ",[54,653,654],{"code":654},"PHY_IF"," 和 ",[54,657,658],{"code":658},"ZT_IF"," 的值后执行：",[199,661,664],{"className":662,"code":663,"language":204,"meta":205},[202],"export PHY_IF=eth0           # ← 你的物理网卡\nexport ZT_IF=ztre4xmo4y      # ← 你的 ZeroTier 虚拟网卡\n\n# 出站 SNAT（ZeroTier 流量伪装成服务器的本地 IP 出去）\nsudo iptables -t nat -A POSTROUTING -o $PHY_IF -j MASQUERADE\n\n# 双向 FORWARD 放行\nsudo iptables -A FORWARD -i $PHY_IF -o $ZT_IF -m state --state RELATED,ESTABLISHED -j ACCEPT\nsudo iptables -A FORWARD -i $ZT_IF -o $PHY_IF -j ACCEPT\n",[54,665,663],{"__ignoreMap":205},[16,667,668],{},"三条规则的作用：",[65,670,671,677,687],{},[68,672,673,676],{},[36,674,675],{},"第 1 条 POSTROUTING MASQUERADE","：ZeroTier 客户端访问局域网设备时，源地址改写为服务器的物理网卡 IP，让局域网设备回包能回得来",[68,678,679,682,683,686],{},[36,680,681],{},"第 2 条 FORWARD","：允许局域网 → ZeroTier 方向的",[36,684,685],{},"回包","通过（只放行已建立的连接）",[68,688,689,692,693,696],{},[36,690,691],{},"第 3 条 FORWARD","：允许 ZeroTier → 局域网方向的",[36,694,695],{},"新建连接","通过",[194,698,700],{"id":699},"_63-持久化-iptables-规则","6.3 持久化 iptables 规则",[16,702,703],{},"默认 iptables 规则重启后丢失，必须显式保存：",[199,705,708],{"className":706,"code":707,"language":204,"meta":205},[202],"# Debian \u002F Ubuntu\nsudo apt install -y iptables-persistent\nsudo netfilter-persistent save\n\n# CentOS \u002F RHEL\nsudo iptables-save > \u002Fetc\u002Fsysconfig\u002Fiptables\n",[54,709,707],{"__ignoreMap":205},[194,711,713],{"id":712},"_64-管理-ui-配置子网路由","6.4 管理 UI 配置子网路由",[16,715,716,717,720],{},"在 Planet 管理 UI 中打开对应网络 → ",[36,718,719],{},"Managed Routes"," → 添加一条路由：",[65,722,723,732],{},[68,724,725,728,729,731],{},[36,726,727],{},"Destination","：你的局域网段（如 ",[54,730,561],{"code":561},"）",[68,733,734,737,738,741],{},[36,735,736],{},"Via","：服务器在 ZeroTier 网络里的 IP（",[54,739,740],{"code":740},"zerotier-cli listnetworks"," 里查）",[16,743,744,745,748],{},"配置后，ZeroTier 客户端就能直接 ping 到 ",[54,746,747],{"code":747},"192.168.1.x"," 的设备。",[60,750,752],{"id":751},"_7-可选-加入-moon-二级根节点","7. (可选) 加入 Moon 二级根节点",[10,754,756,763,777],{"title":755,"type":13},"先判断你到底需不需要 Moon",[16,757,758,759,762],{},"自建 Planet 之后，",[36,760,761],{},"大多数场景不再需要 Moon","。Moon 适合的情况：",[65,764,765,771],{},[68,766,767,770],{},[36,768,769],{},"多地域部署","：比如东部一个 Moon、西部一个 Moon，让客户端就近选择",[68,772,773,776],{},[36,774,775],{},"Planet 单点冗余","：Moon 做二级根节点，Planet 挂了还能继续发现对端",[16,778,779],{},"一般家庭 \u002F 小团队自建一个 Planet 节点就够了，直接跳过本节。",[16,781,782,783,786,787,790,791,39,794,39],{},"如果确实需要 Moon：容器里的 ",[54,784,785],{"code":785},"dist\u002F"," 目录下会生成一个 ",[54,788,789],{"code":789},".moon"," 文件，文件名类似 ",[54,792,793],{"code":793},"000000881b287f44.moon",[36,795,796,797,800,801],{},"文件名前缀 ",[54,798,799],{"code":799},"000000"," 是 ZeroTier 用作排序的零填充，真正的 Moon ID 是后面的 ",[54,802,803],{"code":803},"881b287f44",[16,805,806,807,809],{},"把 ",[54,808,789],{"code":789}," 文件分发到客户端后，执行：",[199,811,814],{"className":812,"code":813,"language":204,"meta":205},[202],"zerotier-cli orbit 881b287f44 881b287f44\n",[54,815,813],{"__ignoreMap":205},[16,817,818,821],{},[54,819,820],{"code":820},"orbit"," 命令有两个参数：",[65,823,824,831],{},[68,825,826,827,830],{},"第 1 个是 ",[36,828,829],{},"Moon ID","（告诉客户端要连哪个 Moon）",[68,832,833,834,837,838,731],{},"第 2 个是 ",[36,835,836],{},"Seed","（寻找 Moon 节点地址的种子，一般",[36,839,840],{},"填同一个 Moon ID 即可",[16,842,843],{},"管理命令：",[199,845,848],{"className":846,"code":847,"language":204,"meta":205},[202],"zerotier-cli listmoons              # 查看已加入的 moons\nzerotier-cli deorbit 881b287f44     # 脱离某个 moon\n",[54,849,847],{"__ignoreMap":205},[60,851,853],{"id":852},"_8-常用命令与输出解读","8. 常用命令与输出解读",[194,855,857,858,861],{"id":856},"_81-zerotier-cli-peers-输出","8.1 ",[54,859,860],{"code":860},"zerotier-cli peers"," 输出",[16,863,864],{},"典型输出（清理过的示例）：",[199,866,869],{"className":867,"code":868,"language":503},[501],"200 peers\n\u003Cztaddr>   \u003Cver>  \u003Crole> \u003Clat> \u003Clink>   \u003ClastTX> \u003ClastRX> \u003Cpath>\n23b6d4d552 1.16.1 LEAF       2 DIRECT   185      457      192.168.13.127\u002F9993\n4250e4b427 1.16.1 LEAF       9 DIRECT   8        9        49.76.149.157\u002F23936\n881b287f44 1.14.1 PLANET    20 DIRECT   459      449      106.15.204.189\u002F9994\n",[54,870,868],{"__ignoreMap":205},[16,872,873],{},"列含义：",[95,875,876,886],{},[98,877,878],{},[101,879,880,883],{},[104,881,882],{},"列",[104,884,885],{},"含义",[114,887,888,898,908,928,938,953,967],{},[101,889,890,895],{},[119,891,892],{},[54,893,894],{"code":894},"ztaddr",[119,896,897],{},"对端节点的 ZeroTier 地址（10 位 hex）",[101,899,900,905],{},[119,901,902],{},[54,903,904],{"code":904},"ver",[119,906,907],{},"对端 ZeroTier 版本",[101,909,910,915],{},[119,911,912],{},[54,913,914],{"code":914},"role",[119,916,917,920,921,923,924,927],{},[36,918,919],{},"LEAF"," 普通客户端 \u002F ",[36,922,484],{}," 根节点 \u002F ",[36,925,926],{},"MOON"," 二级根",[101,929,930,935],{},[119,931,932],{},[54,933,934],{"code":934},"lat",[119,936,937],{},"延迟（毫秒）",[101,939,940,945],{},[119,941,942],{},[54,943,944],{"code":944},"link",[119,946,947,949,950,952],{},[36,948,187],{}," 直连成功 \u002F ",[36,951,183],{}," 通过中继（性能差）",[101,954,955,964],{},[119,956,957,960,961],{},[54,958,959],{"code":959},"lastTX","\u002F",[54,962,963],{"code":963},"lastRX",[119,965,966],{},"最近发送 \u002F 接收字节数",[101,968,969,974],{},[119,970,971],{},[54,972,973],{"code":973},"path",[119,975,976],{},"当前使用的物理 IP:端口",[194,978,980],{"id":979},"_82-常见故障排查","8.2 常见故障排查",[95,982,983,996],{},[98,984,985],{},[101,986,987,990,993],{},[104,988,989],{},"现象",[104,991,992],{},"可能原因",[104,994,995],{},"对策",[114,997,998,1016,1031,1049,1063],{},[101,999,1000,1007,1010],{},[119,1001,1002,1003,1006],{},"替换 planet 后 ",[54,1004,1005],{"code":1005},"peers"," 里 PLANET 还是官方 IP",[119,1008,1009],{},"ZeroTier 服务没重启 \u002F planet 文件路径不对 \u002F 权限不对",[119,1011,1012,1013],{},"确认路径和权限，再 ",[54,1014,1015],{"code":1015},"systemctl restart zerotier-one",[101,1017,1018,1025,1028],{},[119,1019,1020,1021,1024],{},"PLANET 能看到但 ",[54,1022,1023],{"code":1023},"link: RELAY"," 不直连",[119,1026,1027],{},"9993\u002Fudp 被封或防火墙拦截",[119,1029,1030],{},"放行云安全组 + 主机防火墙的 9993\u002Fudp",[101,1032,1033,1040,1043],{},[119,1034,1035,1036,1039],{},"客户端 ",[54,1037,1038],{"code":1038},"join"," 后一直拿不到 IP",[119,1041,1042],{},"管理 UI 里节点未授权",[119,1044,1045,1046],{},"Members 列表里把该节点 ",[36,1047,1048],{},"Authorize",[101,1050,1051,1054,1060],{},[119,1052,1053],{},"访问不了局域网 192.168.x.x",[119,1055,1056,1059],{},[54,1057,1058],{"code":1058},"ip_forward"," 没开 \u002F iptables 规则没加 \u002F Managed Routes 没配",[119,1061,1062],{},"逐项检查第 6 节的三个子节",[101,1064,1065,1068,1071],{},[119,1066,1067],{},"Android \u002F iOS 无法接入自建 Planet",[119,1069,1070],{},"移动端 App 不开放 planet 替换",[119,1072,1073],{},"接入一个已改造的路由器 \u002F 网关作中转",[10,1075,1077],{"title":1076,"type":13},"作者注",[16,1078,1079,1080,1083,1084,1088],{},"本文流程基于 ",[54,1081,1082],{"code":1082},"xubiaolin\u002Fzerotier-planet:latest"," 镜像。该项目迭代较快，环境变量命名和默认凭据可能随版本调整——以 ",[28,1085,1087],{"href":30,"rel":1086},[32],"项目 README"," 的最新说明为准。",{"title":205,"searchDepth":1090,"depth":1090,"links":1091},4,[1092,1094,1100,1101,1107,1108,1114,1115],{"id":62,"depth":1093,"text":63},2,{"id":191,"depth":1093,"text":192,"children":1095},[1096,1098,1099],{"id":196,"depth":1097,"text":197},3,{"id":224,"depth":1097,"text":225},{"id":249,"depth":1097,"text":250},{"id":271,"depth":1093,"text":272},{"id":320,"depth":1093,"text":321,"children":1102},[1103,1104,1105,1106],{"id":327,"depth":1097,"text":328},{"id":340,"depth":1097,"text":341},{"id":428,"depth":1097,"text":429},{"id":471,"depth":1097,"text":472},{"id":517,"depth":1093,"text":518},{"id":550,"depth":1093,"text":551,"children":1109},[1110,1111,1112,1113],{"id":575,"depth":1097,"text":576},{"id":610,"depth":1097,"text":611},{"id":699,"depth":1097,"text":700},{"id":712,"depth":1097,"text":713},{"id":751,"depth":1093,"text":752},{"id":852,"depth":1093,"text":853,"children":1116},[1117,1119],{"id":856,"depth":1097,"text":1118},"8.1 zerotier-cli peers 输出",{"id":979,"depth":1097,"text":980},[1121],"网络","2026-02-25","基于 xubiaolin\u002Fdocker-zerotier-planet 镜像搭建国内云服务器上的 ZeroTier 私有 Planet 根节点，从容器部署、客户端 planet 文件替换到延迟验证的完整流程，并给出局域网互访与 Moon 进阶方案。",false,"md",null,{"slots":1128},{},true,"\u002Fposts\u002Fzerotier-private-planet-setup",{"text":1132,"minutes":1133,"time":1134,"words":1135},"12 min read",11.775,706500,2355,{"title":5,"description":1123},{"loc":1130},"posts\u002Fposts\u002Fzerotier-private-planet-setup",[1140,1141,1142,1143,1144,1145,1146,1147,1148,1149],"ZeroTier","内网穿透","Planet","Moon","VPN","SDN","组网","Docker","Docker Compose","HomeLab","tech","Md6GJo4WZN-k2Hbgjq94eGZMOWex4jPkw4oJHHINBbk",[1153,1158],{"title":1154,"path":1155,"stem":1156,"date":1157,"type":1150,"children":-1},"Proxmox VE 9.0 安装与初始配置指南","\u002Fposts\u002Fpve9.0-install-guide","posts\u002Fposts\u002Fpve9.0-install-guide","2026-02-17 00:00:00",{"title":1159,"path":1160,"stem":1161,"date":1162,"type":1150,"children":-1},"RabbitMQ 进阶实战：延迟消息插件安装与配置指南","\u002Fposts\u002Frabbitmq-delayed-message-plugin-setup","posts\u002Fposts\u002Frabbitmq-delayed-message-plugin-setup","2026-02-27",1788712223768]