{"id":"61931639-6b5d-4514-8b9d-8db39a40eba3","shortId":"6tGwN6","kind":"skill","title":"rustdesk-doctor","tagline":"诊断 RustDesk 连接问题。当用户说 RustDesk 连不上、无法远程、ID 不显示、注册失败时使用","description":"# RustDesk 连接诊断工具\n\n诊断 RustDesk 客户端无法连接服务器的问题，覆盖 Clash/TUN 代理干扰、服务器端配置、云安全组等常见根因。\n\n用户传入的参数（如有）：$ARGUMENTS\n\n## 诊断流程\n\n严格按以下步骤执行，每一步都要执行并记录结果，最后给出综合诊断。\n\n### 第一步：采集客户端状态\n\n**并行执行以下检查：**\n\n1. **RustDesk 进程和网络连接**\n```bash\nps aux | grep -i rustdesk | grep -v grep\necho \"=== 网络连接 ===\"\nlsof -i -P -n 2>/dev/null | grep -i rustdesk\n```\n\n2. **RustDesk 配置文件**\n```bash\nCONFIG_DIR=\"$HOME/Library/Preferences/com.carriez.RustDesk\"\necho \"=== RustDesk2.toml ===\"\ncat \"$CONFIG_DIR/RustDesk2.toml\" 2>/dev/null || echo \"文件不存在\"\necho \"=== RustDesk_local.toml ===\"\ncat \"$CONFIG_DIR/RustDesk_local.toml\" 2>/dev/null || echo \"文件不存在\"\n```\n\n3. **RustDesk 最新日志（关键行）**\n```bash\nLOG=\"$HOME/Library/Logs/RustDesk/RustDesk_rCURRENT.log\"\ncat \"$LOG\" 2>/dev/null || echo \"日志不存在\"\n```\n\n### 第二步：检查 Clash/代理干扰\n\n**并行执行以下检查：**\n\n1. **Mihomo 中 RustDesk 的连接和规则匹配**\n```bash\nSOCKET=\"/var/tmp/verge/verge-mihomo.sock\"\nif [ -S \"$SOCKET\" ]; then\n  curl -s --unix-socket \"$SOCKET\" http://localhost/connections 2>/dev/null | python3 -c \"\nimport sys,json\ndata=json.load(sys.stdin)\nconns=data.get('connections',[])\nfound=False\nfor c in conns:\n    meta=c.get('metadata',{})\n    proc=meta.get('process','').lower()\n    host=meta.get('host','').lower()\n    dst=meta.get('destinationIP','')\n    if 'rustdesk' in proc or 'rustdesk' in host or '21116' in meta.get('destinationPort','') or '21115' in meta.get('destinationPort',''):\n        chains=c.get('chains',[])\n        rule=c.get('rule','')\n        rp=c.get('rulePayload','')\n        net=meta.get('network','')\n        dp=meta.get('destinationPort','')\n        print(f'{meta.get(\\\"process\\\",\\\"\\\")} | {net} | {host or dst}:{dp} | rule={rule} {rp} | chains={chains}')\n        found=True\nif not found:\n    print('Mihomo 中没有 RustDesk 相关连接')\n\"\nelse\n  echo \"Mihomo unix socket 不存在，Clash 可能未运行\"\nfi\n```\n\n2. **Mihomo 中 RustDesk 相关规则**\n```bash\nSOCKET=\"/var/tmp/verge/verge-mihomo.sock\"\nif [ -S \"$SOCKET\" ]; then\n  curl -s --unix-socket \"$SOCKET\" http://localhost/rules 2>/dev/null | python3 -c \"\nimport sys,json\nrules=json.load(sys.stdin).get('rules',[])\nfor r in rules:\n    p=str(r.get('payload','')).lower()\n    if 'rustdesk' in p:\n        print(f\\\"{r.get('type')},{r.get('payload')},{r.get('proxy')}\\\")\n\" || echo \"无法获取规则\"\n  echo \"=== TUN 配置 ===\"\n  curl -s --unix-socket \"$SOCKET\" http://localhost/configs 2>/dev/null | python3 -c \"\nimport sys,json\nc=json.load(sys.stdin)\ntun=c.get('tun',{})\nprint('TUN enabled:', tun.get('enable'))\nrea=tun.get('route-exclude-address',[])\nif rea:\n    print('route-exclude-address:', rea)\n\"\nfi\n```\n\n3. **DNS 解析检查（fake-ip 检测）**\n\n对 RustDesk 服务器域名进行 DNS 解析，检查是否返回 fake-ip (198.18.x.x)：\n```bash\n# 如果配置了自建服务器（IP 地址），跳过域名解析\n# 如果使用默认公共服务器，检查 rs-ny.rustdesk.com\nnslookup rs-ny.rustdesk.com 2>&1\nnslookup rustdesk.com 2>&1\n```\n\n4. **路由检查**\n\n检查 RustDesk 服务器 IP 的路由走向（是否经过 TUN utun1024）：\n```bash\n# 对配置中的服务器 IP 执行 route get\n# 如果走 utun1024 → TUN 拦截\n# 如果走 en0 → 直连\nroute -n get <服务器IP> 2>&1 | head -6\n```\n\n5. **Clash Verge profiles 中的 RustDesk 配置**\n```bash\nPROFILES_DIR=\"$HOME/Library/Application Support/io.github.clash-verge-rev.clash-verge-rev/profiles\"\ngrep -ril \"rustdesk\" \"$PROFILES_DIR/\"*.yaml \"$PROFILES_DIR/\"*.js 2>/dev/null | while read f; do\n  echo \"=== $(basename $f) ===\"\n  grep -in \"rustdesk\" \"$f\"\ndone\n```\n\n### 第三步：网络连通性测试\n\n**对配置中的服务器（自建或默认公共服务器）执行：**\n\n```bash\nSERVER=\"<服务器IP或域名>\"\necho \"=== TCP 21115 (NAT test) ===\"\nnc -z -w5 $SERVER 21115 2>&1 && echo \"OK\" || echo \"FAIL\"\necho \"=== TCP 21116 (rendezvous) ===\"\nnc -z -w5 $SERVER 21116 2>&1 && echo \"OK\" || echo \"FAIL\"\necho \"=== TCP 21117 (relay) ===\"\nnc -z -w5 $SERVER 21117 2>&1 && echo \"OK\" || echo \"FAIL\"\necho \"=== UDP 21116 ===\"\nnc -z -w5 -u $SERVER 21116 2>&1 && echo \"OK\" || echo \"FAIL（UDP 结果可能不准确）\"\necho \"=== 路由走向 ===\"\nroute -n get $SERVER 2>&1 | head -6\n```\n\n### 第四步：服务器端检查（如可 SSH）\n\n如果用户提供了自建服务器 IP 且可以 SSH，执行以下检查：\n\n```bash\nSERVER=\"<服务器IP>\"\nssh -o ConnectTimeout=10 root@$SERVER \"\necho '=== Docker 容器状态 ==='\ndocker ps | grep -i rust\necho '=== hbbs 日志（最后 20 行）==='\ndocker logs hbbs --tail 20 2>&1\necho '=== hbbr 日志（最后 10 行）==='\ndocker logs hbbr --tail 10 2>&1\necho '=== 端口监听 ==='\nss -ulnp | grep 21116\nss -tlnp | grep -E '2111[5-9]'\necho '=== 公钥 ==='\ncat /root/id_ed25519.pub 2>/dev/null || find / -name 'id_ed25519.pub' 2>/dev/null | head -1 | xargs cat 2>/dev/null\necho '=== UFW 状态 ==='\nufw status 2>/dev/null | head -15\necho '=== 云安全组防火墙链 ==='\niptables -L INPUT -n 2>/dev/null | head -5\necho '=== 抓包测试（10秒）==='\ntimeout 10 tcpdump -i eth0 -c 5 udp port 21116 2>&1\n\"\n```\n\n### 第五步：local-ip-addr 检查\n\n检查 RustDesk 是否把 TUN 网关 IP 当成了本机 IP：\n\n```bash\nCONFIG=\"$HOME/Library/Preferences/com.carriez.RustDesk/RustDesk2.toml\"\nLOCAL_IP=$(grep 'local-ip-addr' \"$CONFIG\" 2>/dev/null | awk -F\"'\" '{print $2}')\nif [ \"$LOCAL_IP\" = \"198.18.0.1\" ]; then\n  echo \"WARNING: local-ip-addr = 198.18.0.1 (TUN 网关假 IP)\"\n  echo \"RustDesk 启动时检测到 TUN 虚拟网卡 IP，需要在 TUN 关闭时启动 RustDesk\"\n  REAL_IP=$(ifconfig en0 2>/dev/null | grep 'inet ' | awk '{print $2}')\n  echo \"真实 IP 应该是: $REAL_IP\"\nelif [ -n \"$LOCAL_IP\" ]; then\n  echo \"local-ip-addr = $LOCAL_IP\"\nelse\n  echo \"local-ip-addr 未设置（自动检测）\"\nfi\n```\n\n## 综合诊断\n\n根据采集到的所有信息，按以下判断矩阵分析：\n\n### 常见问题判断矩阵\n\n| 日志关键行 | 网络状态 | Clash 状态 | 诊断 |\n|-----------|---------|-----------|------|\n| `register_pk ... key not confirmed` 持续重试 | 端口不通 | 走 DIRECT | **TUN DIRECT UDP 转发异常或服务器不可达** |\n| `register_pk ... key not confirmed` 持续重试 | 端口通 | 走 Proxies | **代理节点不支持 RustDesk UDP 协议** |\n| `register_pk ... key not confirmed` + 服务器 tcpdump 零包 | SSH 通，其他端口不通 | - | **云安全组未放行 21115-21117/tcp 和 21116/udp** |\n| `Got nat response` 有回复但 `register_pk` 失败 | UDP 通，TCP 21115 不通 | 走 Proxies | **代理对裸 TCP 转发不完整，需加 IP-CIDR 规则** |\n| `Failed to connect to ...:21115` | TCP 不通 | - | **TCP 21115 被阻断（代理/防火墙/安全组）** |\n| `local-ip-addr = 198.18.0.1` | - | TUN 开启 | **TUN 假 IP 污染，关 TUN 重启 RustDesk 或清空该字段** |\n| `error sending request for url (https://api.rustdesk.com/...)` | HTTPS 不通 | 走 DIRECT | **RustDesk 官方 API 被墙，需走代理** |\n| DNS 解析返回 198.18.x.x | - | fake-ip 模式 | **rustdesk.com 需加入 fake-ip-filter 或改用 +.rustdesk.com** |\n\n### 常见解决方案\n\n#### 方案 A：TUN 模式下 DIRECT UDP 不通\n\nTUN 的 DIRECT 出口可能无法正确转发 UDP。解决：\n\n1. 在 Merge.yaml 中加 `route-exclude-address` 让服务器 IP 完全绕过 TUN：\n```yaml\ntun:\n  route-exclude-address:\n    - <服务器IP>/32\n```\n\n2. 或让 RustDesk 流量走代理（删除订阅中的 DIRECT 规则）\n\n#### 方案 B：订阅配置自带 rustdesk.com DIRECT 规则\n\n订阅可能包含 `DOMAIN-SUFFIX,rustdesk.com,DIRECT`。如需走代理：\n\n在规则 profile 的 `delete` 区加：\n```yaml\ndelete:\n  - DOMAIN-SUFFIX,rustdesk.com,DIRECT\n```\n\n#### 方案 C：云安全组未开端口\n\n腾讯云/阿里云等安全组在云平台层面过滤，iptables 和 UFW 看不到。需在云控制台添加：\n\n| 协议 | 端口 | 来源 |\n|------|------|------|\n| TCP | 21115-21117 | 0.0.0.0/0 |\n| UDP | 21116 | 0.0.0.0/0 |\n\n#### 方案 D：local-ip-addr 被 TUN 假 IP 污染\n\nRustDesk 启动时检测网卡 IP，TUN 模式下会拿到 198.18.0.1。解决：\n\n1. 关闭 TUN → 启动 RustDesk（让它检测真实 IP）→ 再开 TUN\n2. 或手动清空 `RustDesk2.toml` 中的 `local-ip-addr`：\n```toml\n[options]\nlocal-ip-addr = ''\n```\n\n#### 方案 E：代理节点不支持 RustDesk 协议\n\nRustDesk 使用 UDP + 裸 TCP（非 HTTP/TLS），部分代理节点不支持。解决：\n\n1. 切换支持 UDP 的代理节点\n2. 对裸 TCP 端口（21115），需加 IP-CIDR 规则让 Mihomo 能路由：\n```yaml\nprepend:\n  - IP-CIDR,<服务器IP>/32,Proxies,no-resolve\n```\n\n## RustDesk 端口说明\n\n| 端口 | 协议 | 用途 |\n|------|------|------|\n| 21114 | TCP | API / Web 控制台（新版） |\n| 21115 | TCP | NAT 类型检测 |\n| 21116 | TCP+UDP | 会合服务器（注册、信令） |\n| 21117 | TCP | 中继转发 |\n| 21118 | TCP | WebSocket |\n| 21119 | TCP | WebSocket 中继 |\n\n## 注意事项\n\n- 诊断操作全部只读，不修改任何配置\n- 修改配置前告知用户并确认\n- SSH 到服务器前确认用户授权\n- 优先排查：云安全组 > 代理/TUN 干扰 > 服务器端 > 客户端配置\n- 用中文输出所有诊断信息","tags":["rustdesk","doctor","claude","arsenal","majiayu000","agent-skills","ai-agents","ai-coding-assistant","automation","claude-code","code-review","developer-tools"],"capabilities":["skill","source-majiayu000","skill-rustdesk-doctor","topic-agent-skills","topic-ai-agents","topic-ai-coding-assistant","topic-automation","topic-claude","topic-claude-code","topic-code-review","topic-developer-tools","topic-devops","topic-productivity","topic-prompt-engineering","topic-python"],"categories":["claude-arsenal"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/majiayu000/claude-arsenal/rustdesk-doctor","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add majiayu000/claude-arsenal","source_repo":"https://github.com/majiayu000/claude-arsenal","install_from":"skills.sh"}},"qualityScore":"0.464","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 29 github stars · SKILL.md body (7,341 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-01T07:01:16.113Z","embedding":null,"createdAt":"2026-04-18T22:24:26.205Z","updatedAt":"2026-05-01T07:01:16.113Z","lastSeenAt":"2026-05-01T07:01:16.113Z","tsv":"'-1':573 '-15':586 '-21117':754,923 '-5':596 '-6':379,495 '-9':560 '/...)':816 '/0':925,929 '/32':875,1007 '/dev/null':53,70,79,92,120,238,283,402,566,571,577,584,594,638,673 '/root/id_ed25519.pub':564 '/tcp':755 '/tun':1052 '/var/tmp/verge/verge-mihomo.sock':107,225 '0.0.0.0':924,928 '1':34,100,344,348,377,434,449,464,479,493,534,547,611,856,948,985 '10':511,539,545,601 '10秒':599 '198.18':331,828 '198.18.0.1':646,654,797,946 '2':52,57,69,78,91,119,218,237,282,343,347,376,401,433,448,463,478,492,533,546,565,570,576,583,593,610,637,642,672,678,876,957,989 '20':526,532 '2111':558 '21114':1017 '21115':166,425,432,753,768,784,788,922,993,1023 '21116':161,441,447,471,477,553,609,927,1027 '21116/udp':757 '21117':456,462,1033 '21118':1036 '21119':1039 '3':82,315 '4':349 '5':380,559,606 'addr':616,635,653,694,702,796,935,964,970 'address':305,312,863,873 'api':823,1019 'api.rustdesk.com':815 'api.rustdesk.com/...)':814 'argument':26 'aux':39 'awk':639,676 'b':884 'basenam':408 'bash':37,60,86,105,223,333,359,387,420,505,626 'c':122,135,240,285,289,605,909 'c.get':139,171,174,177,293 'cat':66,75,89,563,575 'chain':170,172,197,198 'cidr':778,997,1005 'clash':97,215,381,712 'clash/tun':20 'config':61,67,76,627,636 'confirm':719,732,745 'conn':129,137 'connect':131,782 'connecttimeout':510 'curl':112,230,275 'd':931 'data':126 'data.get':130 'delet':899,902 'destinationip':151 'destinationport':164,169,184 'dir':62,389,396,399 'dir/rustdesk2.toml':68 'dir/rustdesk_local.toml':77 'direct':723,725,820,847,852,881,887,894,907 'dns':316,325,826 'docker':515,517,528,541 'doctor':3 'domain':891,904 'domain-suffix':890,903 'done':414 'dp':182,193 'dst':149,192 'e':557,972 'echo':46,64,71,73,80,93,210,270,272,407,423,435,437,439,450,452,454,465,467,469,480,482,486,514,522,535,548,561,578,587,597,648,658,679,690,698 'elif':685 'els':209,697 'en0':370,671 'enabl':297,299 'error':809 'eth0':604 'exclud':304,311,862,872 'f':186,263,405,409,413,640 'fail':438,453,468,483,780 'fake':319,329,831,837 'fake-ip':318,328,830 'fake-ip-filt':836 'fals':133 'fi':217,314,705 'filter':839 'find':567 'found':132,199,203 'get':247,364,374,490 'got':758 'grep':40,43,45,54,392,410,519,552,556,631,674 'hbbr':536,543 'hbbs':523,530 'head':378,494,572,585,595 'home/library/application':390 'home/library/logs/rustdesk/rustdesk_rcurrent.log':88 'home/library/preferences/com.carriez.rustdesk':63 'home/library/preferences/com.carriez.rustdesk/rustdesk2.toml':628 'host':145,147,159,190 'http/tls':982 'https':817 'id':11 'id_ed25519.pub':569 'ifconfig':670 'import':123,241,286 'inet':675 'input':591 'ip':320,330,335,354,361,501,615,623,625,630,634,645,652,657,663,669,681,684,688,693,696,701,777,795,802,832,838,865,934,939,943,954,963,969,996,1004 'ip-cidr':776,995,1003 'iptabl':589,913 'js':400 'json':125,243,288 'json.load':127,245,290 'key':717,730,743 'l':590 'local':614,629,633,644,651,687,692,695,700,794,933,962,968 'local-ip-addr':613,632,650,691,699,793,932,961,967 'localhost/configs':281 'localhost/connections':118 'localhost/rules':236 'log':87,90,529,542 'lower':144,148,257 'lsof':48 'merge.yaml':858 'meta':138 'meta.get':142,146,150,163,168,180,183,187 'metadata':140 'mihomo':101,205,211,219,999 'n':51,373,489,592,686 'name':568 'nat':426,759,1025 'nc':428,443,458,472 'net':179,189 'network':181 'no-resolv':1009 'nslookup':341,345 'o':509 'ok':436,451,466,481 'option':966 'p':50,253,261 'payload':256,267 'pk':716,729,742,763 'port':608 'prepend':1002 'print':185,204,262,295,308,641,677 'proc':141,155 'process':143,188 'profil':383,388,395,398,897 'proxi':269,736,771,1008 'ps':38,518 'python3':121,239,284 'r':250 'r.get':255,264,266,268 'rea':300,307,313 'read':404 'real':668,683 'regist':715,728,741,762 'relay':457 'rendezv':442 'request':811 'resolv':1011 'respons':760 'ril':393 'root':512 'rout':303,310,363,372,488,861,871 'route-exclude-address':302,309,860,870 'rp':176,196 'rs-ny.rustdesk.com':340,342 'rule':173,175,194,195,244,248,252 'rulepayload':178 'rust':521 'rustdesk':2,5,8,14,17,35,42,56,58,83,103,153,157,207,221,259,323,352,385,394,412,619,659,667,738,807,821,878,941,952,974,976,1012 'rustdesk-doctor':1 'rustdesk.com':346,834,841,886,893,906 'rustdesk2.toml':65,959 'rustdesk_local.toml':74 'send':810 'server':421,431,446,461,476,491,506,513 'skill' 'skill-rustdesk-doctor' 'socket':106,110,116,117,213,224,228,234,235,279,280 'source-majiayu000' 'ss':550,554 'ssh':499,503,508,749,1047 'status':582 'str':254 'suffix':892,905 'support/io.github.clash-verge-rev.clash-verge-rev/profiles':391 'sys':124,242,287 'sys.stdin':128,246,291 'tail':531,544 'tcp':424,440,455,767,773,785,787,921,980,991,1018,1024,1028,1034,1037,1040 'tcpdump':602,747 'test':427 'timeout':600 'tlnp':555 'toml':965 'topic-agent-skills' 'topic-ai-agents' 'topic-ai-coding-assistant' 'topic-automation' 'topic-claude' 'topic-claude-code' 'topic-code-review' 'topic-developer-tools' 'topic-devops' 'topic-productivity' 'topic-prompt-engineering' 'topic-python' 'true':200 'tun':273,292,294,296,357,367,621,655,661,665,724,798,800,805,845,850,867,869,937,944,950,956 'tun.get':298,301 'type':265 'u':475 'udp':470,484,607,726,739,765,848,854,926,978,987,1029 'ufw':579,581,915 'ulnp':551 'unix':115,212,233,278 'unix-socket':114,232,277 'url':813 'utun1024':358,366 'v':44 'verg':382 'w5':430,445,460,474 'warn':649 'web':1020 'websocket':1038,1041 'x.x':332,829 'xarg':574 'yaml':397,868,901,1001 'z':429,444,459,473 '不修改任何配置':1045 '不存在':214 '不显示':12 '不通':769,786,818,849 '且可以':502 '严格按以下步骤执行':28 '中':102,220 '中加':859 '中没有':206 '中的':384,960 '中继':1042 '中继转发':1035 '云安全组':1050 '云安全组未开端口':910 '云安全组未放行':752 '云安全组等常见根因':23 '云安全组防火墙链':588 '代理':790,1051 '代理对裸':772 '代理干扰':21,98 '代理节点不支持':737,973 '优先排查':1049 '会合服务器':1030 '使用':977 '信令':1032 '修改配置前告知用户并确认':1046 '假':801,938 '公钥':562 '关':804 '关键行':85 '关闭':949 '关闭时启动':666 '其他端口不通':751 '再开':955 '出口可能无法正确转发':853 '切换支持':986 '删除订阅中的':880 '到服务器前确认用户授权':1048 '区加':900 '协议':740,918,975,1015 '可能未运行':216 '启动':951 '启动时检测到':660 '启动时检测网卡':942 '和':756,914 '在':857 '在规则':896 '地址':336 '失败':764 '如可':498 '如有':25 '如果使用默认公共服务器':338 '如果用户提供了自建服务器':500 '如果走':365,369 '如果配置了自建服务器':334 '如需走代理':895 '安全组':792 '完全绕过':866 '官方':822 '客户端无法连接服务器的问题':18 '客户端配置':1055 '容器状态':516 '对':322 '对裸':990 '对配置中的服务器':360,417 '常见解决方案':842 '常见问题判断矩阵':709 '干扰':1053 '并行执行以下检查':33,99 '应该是':682 '开启':799 '当成了本机':624 '当用户说':7 '或手动清空':958 '或改用':840 '或清空该字段':808 '或让':877 '执行':362,419 '执行以下检查':504 '抓包测试':598 '拦截':368 '持续重试':720,733 '按以下判断矩阵分析':708 '控制台':1021 '文件不存在':72,81 '新版':1022 '方案':843,883,908,930,971 '无法获取规则':271 '无法远程':10 '日志':524,537 '日志不存在':94 '日志关键行':710 '是否把':620 '是否经过':356 '最后':525,538 '最后给出综合诊断':30 '最新日志':84 '有回复但':761 '服务器':353,746 '服务器ip':375,507,874,1006 '服务器ip或域名':422 '服务器域名进行':324 '服务器端':1054 '服务器端检查':497 '服务器端配置':22 '未设置':703 '来源':920 '根据采集到的所有信息':707 '检查':96,339,351,617,618 '检查是否返回':327 '检测':321 '模式':833 '模式下':846 '模式下会拿到':945 '每一步都要执行并记录结果':29 '污染':803,940 '注册':1031 '注册失败时使用':13 '注意事项':1043 '流量走代理':879 '状态':580,713 '用中文输出所有诊断信息':1056 '用户传入的参数':24 '用途':1016 '的':851,898 '的代理节点':988 '的路由走向':355 '的连接和规则匹配':104 '直连':371 '相关规则':222 '相关连接':208 '看不到':916 '真实':680 '端口':919,992,1014 '端口不通':721 '端口监听':549 '端口说明':1013 '端口通':734 '第一步':31 '第三步':415 '第二步':95 '第五步':612 '第四步':496 '类型检测':1026 '结果可能不准确':485 '综合诊断':706 '网关':622 '网关假':656 '网络状态':711 '网络连接':47 '网络连通性测试':416 '能路由':1000 '腾讯云':911 '自动检测':704 '自建或默认公共服务器':418 '虚拟网卡':662 '行':527,540 '被':936 '被墙':824 '被阻断':789 '裸':979 '覆盖':19 '规则':779,882,888 '规则让':998 '解决':855,947,984 '解析':326 '解析检查':317 '解析返回':827 '订阅可能包含':889 '订阅配置自带':885 '让它检测真实':953 '让服务器':864 '诊断':4,16,714 '诊断操作全部只读':1044 '诊断流程':27 '走':722,735,770,819 '路由检查':350 '路由走向':487 '跳过域名解析':337 '转发不完整':774 '转发异常或服务器不可达':727 '进程和网络连接':36 '连不上':9 '连接诊断工具':15 '连接问题':6 '通':750,766 '部分代理节点不支持':983 '配置':274,386 '配置文件':59 '采集客户端状态':32 '重启':806 '防火墙':791 '阿里云等安全组在云平台层面过滤':912 '零包':748 '需加':775,994 '需加入':835 '需在云控制台添加':917 '需要在':664 '需走代理':825 '非':981","prices":[{"id":"7b7643f5-19ab-4b98-9f2d-2d097c11f3b9","listingId":"61931639-6b5d-4514-8b9d-8db39a40eba3","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"majiayu000","category":"claude-arsenal","install_from":"skills.sh"},"createdAt":"2026-04-18T22:24:26.205Z"}],"sources":[{"listingId":"61931639-6b5d-4514-8b9d-8db39a40eba3","source":"github","sourceId":"majiayu000/claude-arsenal/rustdesk-doctor","sourceUrl":"https://github.com/majiayu000/claude-arsenal/tree/main/skills/rustdesk-doctor","isPrimary":false,"firstSeenAt":"2026-04-18T22:24:26.205Z","lastSeenAt":"2026-05-01T07:01:16.113Z"}],"details":{"listingId":"61931639-6b5d-4514-8b9d-8db39a40eba3","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"majiayu000","slug":"rustdesk-doctor","github":{"repo":"majiayu000/claude-arsenal","stars":29,"topics":["agent-skills","ai-agents","ai-coding-assistant","automation","claude","claude-code","code-review","developer-tools","devops","productivity","prompt-engineering","python","software-development","typescript","workflows"],"license":"mit","html_url":"https://github.com/majiayu000/claude-arsenal","pushed_at":"2026-04-29T04:12:22Z","description":"52 production-ready Claude Code skills and 7 specialized agents for software development, DevOps, product workflows, and automation.","skill_md_sha":"392c1edb1b5d0afa25fc838c7381bbd23ef2f904","skill_md_path":"skills/rustdesk-doctor/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/majiayu000/claude-arsenal/tree/main/skills/rustdesk-doctor"},"layout":"multi","source":"github","category":"claude-arsenal","frontmatter":{"name":"rustdesk-doctor","description":"诊断 RustDesk 连接问题。当用户说 RustDesk 连不上、无法远程、ID 不显示、注册失败时使用"},"skills_sh_url":"https://skills.sh/majiayu000/claude-arsenal/rustdesk-doctor"},"updatedAt":"2026-05-01T07:01:16.113Z"}}