ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

【随笔】2026-10-05 | 从“连不上家里的电 脑“到全链路打通

【随笔】2026-10-05 | 从“连不上家里的电 脑“到全链路打通 # 【随笔】2026-10-05 | 从连不上家里的电 脑到全链路打通---date: 2026-10-05tags: [内网穿透, frp, SSH, NAT, CGNAT, 华为云, Windows, 计划任务, 远程访问, 折腾实录]type: 随笔--- 需求很朴素人在外面用手机 SSH 连回家里电脑。现状很骨感家宽没有公网 IP、光猫防火墙拦一切入站、路由器连管理权限都拿不 到。这篇文章复盘我两天的完整探索——从方案 海选到 13 个坑逐一取证从能连上的及格 线一路走到重启后还能连、闲置一晚不断线的毕业线。## 一、起点现代家宽的三无困境先交代需求。我不只是想看看家里的电脑 在外面临时改两行代码、跑个脚本、让 tmux 里的长任务夜里自己跑——这些都需要一个真正 的 SSH 会话不是远程桌面能替代的。想在外面的任意网络里 SSH 回家先得回答一个问题**外面的包凭什么进得了你家的门 **我的家宽现状是标准的三无| # | 墙 | 现状 ||---|---|---|| 1 | 无公网 IPv4 | 运营商早已不分配独立 公网 IP家宽普遍缩在 CGNAT运营商级 NAT后面几百户共用一个公网出口 || 2 | IPv6 有了但白搭 | 光猫/路由器自带 IPv6 防火墙拦截一切入站连接想改配置 需要**电信运营商的超级账号**——普通用户这 辈子拿不到 || 3 | 路由器零配置权限 | 端口映射、DMZ、UPnP想都别想 |结论其实只有一个**一切依赖外面主动连进来的方案全部死刑。** 唯一的活路是让 家里的电脑**主动伸出手去**。## 二、方案海选四条路线的否决与胜出方向定了接下来是选路。我把能找到的路线 挨个过了一遍| 方案 | 结局 | 一句话点评 ||---|---|---|| IPv6 直连 防火墙放行 | ❌ | 卡在路由 器超级账号普通人无解 || EasyConnect | ❌ | 方向反了——那是你连 单位内网的商用 SSL VPN个人根本没有服务端可部署安全口碑还差 || Tailscale | 备选 | 优秀但协调服务器在境外国内使用有不确定性 || EasyTier 公共共享节点 | 中途翻车 | 国产开源、去中心化电脑端轻松入网但**手 机流量死活入不了网**——疑似运营商 CGNAT 对公共节点 UDP 限流 || **云服务器 frp** | ✅ 最终胜者 | 出站穿透的经典解法配一台最低配云服务器连 接确定性 100% |EasyTier 那次翻车反而成了整个选型的**关键转折**手机端无法稳定运行组网类工具VPN 常驻、电池优化杀后台、部分平台压根没有客户端这个事实反向逼出一个洞察—— **客户端越傻越好理想状态是手机只需 要一个普通 SSH App。**frp 恰好满足手机直连云服务器公网 IP对组网协议零感知。家里的网络再复杂也复杂 不到手机头上。## 三、买服务器三个新手概念题方案定了先买服务器。这一步踩的不是技术 坑是**概念坑**。### 1. VPC ≠ VPS一字之差天壤之别云控制台里最显眼的VPC是个大坑爹名词——它是**虚拟私有云**本质是一张网络规划图 **不是服务器**装不了任何东西。真正要 买的是 **ECS / 轻量应用服务器**一台有公网 IP 的真机器。### 2. 仅 IPv6 无限流量的诱惑便宜是因为服务器只有 IPv6 地址。看似划算 实则埋雷**你发起连接的每一个网络都必 须有 IPv6**。一旦连上 IPv4-only 的 WiFi公司、酒店、朋友家→ **彻底失联连服务 器都摸不到**。多花几块钱买 IPv4 标准型买的是任何网络都连得上的保底。### 3. 镜像与规格选择- Windows Server1G 内存跑不动它自己- CentOS 8.2已停止维护EOL无安全更新- 最终选 **Ubuntu 24.04 LTS**——教程最多、生态最广、支持到 2029- 规格 2 核 1G跑一个 frps内存占用仅 20MB 左右属于大材小用级别的匹配## 四、原理篇frp 凭什么绕过一切封锁动手之前先想明白原理。frp 的穿透靠三层技 巧层层递进### 1. 状态型防火墙的漏洞防火墙/NAT 只拦不请自来的入站包但**放行合法出站连接的所有回程数据**。frpc 开机就主动连服务器的 7000 端口——合法出站一 路绿灯。### 2. 长连接 永不挂断的专线这条出站连接靠心跳包死死保持。之后所有数 据都装在它里面运输——对家里的防火墙来说 这些全是合法出站连接的回程数据无差 别放行。### 3. 连接拼接[手机] --TCP-- [服务器 frps:6000] 长连接隧道 [家电脑 frpc] --TCP-- [sshd:2222]手机连服务器 6000 → frps 通过长连接喊 frpc 接应 → frpc 回头连本机 sshd → 两段字节 流无缝对接。**SSH 加密是端到端的**手机 和 sshd 直接协商密钥服务器夹在中间只是 个搬运工搬的全是看不懂的密文。 一句话总结**家里的人够不着外面那就 让家里的人先伸手出来所有人沿着这条手双 向通话。**## 五、部署实录从 frps 到手机首连### 服务器端bash# 下载 frp v0.61.1GitHub 国内龟速的解法见坑 3wget https://github.com/fatedier/frp/releases/download/v0.61.1/frp_0.61.1_linux_amd64.tar.gztar -xzf frp_0.61.1_linux_amd64.tar.gzsudo mkdir -p /opt/frpsudo cp frp_0.61.1_linux_amd64/frps /opt/frp//opt/frp/frps.tomltomlbindPort 7000auth.token 你的token用 systemd 托管崩溃自重启ini# /etc/systemd/system/frps.service[Unit]Descriptionfrps serviceAfternetwork.target[Service]TypesimpleExecStart/opt/frp/frps -c /opt/frp/frps.tomlRestarton-failureRestartSec5s[Install]WantedBymulti-user.targetbashsudo systemctl daemon-reloadsudo systemctl enable --now frpssudo ufw allow 7000/tcp # frpc 的生命线sudo ufw allow 6000/tcp # 对外代理口# 验证frps 存活、端口已监听systemctl status frpsss -tlnp | grep 7000 # 此刻只应看到 7000——6000 要等 frpc 注册后才出现见坑 2**别忘了云控制台的安全组**——网页上还有一 层防火墙7000 和 6000 都要放行这个双 层防火墙是后面坑 5 的主角。### 家电脑端C:\frp\frpc.toml终态版本含后文坑 13 的药方tomlserverAddr 服务器公网IPserverPort 7000auth.token 你的token# 关键首次登录失败不退出内置无限重连 坑 13 的药方loginFailExit false[log]to C:/frp/frpc.loglevel infomaxDays 7[[proxies]]name home-sshtype tcplocalIP 127.0.0.1localPort 2222remotePort 6000命令行党可以直接给 Defender 加排除为什 么需要排除见坑 8powershellAdd-MpPreference -ExclusionPath C:\frp### 手机首连Termius 里新建 Host| 字段 | 值 ||---|---|| Address | 服务器公网IP || Port | 6000 || Username / Password | 家电脑的账户密码 |连上那一刻提示符是家里电脑的主机名。**手机永远只连 6000**。它不知道也不需要知道这条连接在服务器上被换乘了一次最 后敲的是家电脑的 2222。## 六、踩坑实录13 个坑的取证式展开部署一路走下来我总共踩了 13 个坑。按剧 本类型分组复盘。### 连通类三个不通各有各的剧本**坑 1端口测试的时序陷阱。** 部署 frps 之前就测 Test-NetConnection 服务器公网IP -Port 7000 → False差点误判为防火墙 问题。真相**没进程监听的端口内核直接 拒绝连接**。端口连通测试必须在服务部署之 后做否则你根本无法区分防火墙拦了和压根没人听。**坑 26000 端口不通的虚惊。** frps 起来了6000 还是 False正常——6000 要等 frpc 连上来注册映射后frps 才开始监听。**要分清哪些端口是服务启动即监听哪些是客户端注册后动态出现的。****坑 5防火墙是两层的。** 云厂商安全组网页配置和系统防火墙ufw**相互独立都要放行**。排查配置全对但就是不通的顺 序先 sudo ufw status 看系统层再查云控制台安全组。这是我按步骤做但不通的头 号元凶。### 下载类**坑 3GitHub 国内龟速。** 服务器 wget GitHub Release 卡在重定向——真实下载地址是 objects.githubusercontent.com国内极慢。解法组合拳- GitHub 加速代理前缀搜GitHub 文件加速找当前可用的- Gitee 社区同步仓库站内搜 frp- aria2 多线程硬啃aria2c -x 8 地址- 终极大招本地下载好scp 传上去**下载完记得 ls -lh 校验大小**frp 0.61.1 linux 包约 13M偏小就是没下完整 解压必报错。### 稳定性类**坑 4SSH 频繁掉线。** client_loop: send disconnect: Connection reset闲置几 分钟必掉。病根**SSH 太安静被中间 NAT 设备判死**状态登记被清掉了。客户端侧 的药方是给 ~/.ssh/config 加心跳textHost *ServerAliveInterval 30每 30 秒一个心跳包骗过闲置检测长任务再 进 tmux 兜底掉线重连 tmux attach 回到现场任务零中断。服务端全局心跳的展开见 第八章——这个坑后来还以手机掉线的形态返 场了一次。### Windows 特产**坑 6sshd 端口竟是 2222。** 家电脑的 sshd 早已改过端口非默认 22。好在 frp 架构下这无所谓——frpc.toml 的 localPort 填 2222 即可**手机端永远只连 6000本地端口对外完全透明**。这也是端口映射架构的 优雅之处内外端口解耦。**坑 8杀毒软件把 frp 判成黑客工具。** frp 一下载就被 Windows Defender 报毒HackTool。这不是误报恐慌——frp 确实是内网 穿透工具天然长着一张远控的脸。解法Windows 安全中心 → 病毒防护 → 管理设置 → 排除项 → 给 C:\frp 整个文件夹加排除。只在自有设备、自有服务器之间使用加排除是 安全的。**坑 9frp 压根没有装成服务的子命令。** 我想当然地跑 frpc service install得到 unknown command service——新版 frp 早已移除该子命令。替代方案是 Windows 计划任务托管其中三个参数是灵魂- 触发器 AtStartup——开机即启不依赖任 何用户登录- 运行账户 SYSTEM -RunLevel Highest- **ExecutionTimeLimit 0**——不设它 计划任务默认 72 小时强杀长进程隧道会在 第三天准时断流且毫无征兆注册命令管理员 PowerShellpowershell$action New-ScheduledTaskAction -Execute C:\frp\frpc.exe -Argument -c C:\frp\frpc.toml$trigger New-ScheduledTaskTrigger -AtStartup$principal New-ScheduledTaskPrincipal -UserId SYSTEM -RunLevel Highest$settings New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries -ExecutionTimeLimit (New-TimeSpan -Seconds 0) -RestartCount 3 -RestartInterval (New-TimeSpan -Minutes 1)Register-ScheduledTask -TaskName frpc -Action $action -Trigger $trigger -Principal $principal -Settings $settings注册完当场体检注意用管理员身份跑否则 会撞上坑 12 的薛定谔状态powershellGet-ScheduledTask -TaskName frpc # State 应为 ReadyGet-ScheduledTaskInfo -TaskName frpc # LastRunTime / NumberOfMissedRuns**坑 10注册成功的计划任务复查时凭空消失。** Register-ScheduledTask 显示成功 、StateReady几分钟后 Get-ScheduledTask 查无此人原因未明疑似被安全软件或系统优化清理。教训**计划任务要做存在性体检**——部署完成后隔段时间复查一次。### 工具链与权限**坑 7安全红线——密码绝不进聊天框。** 我曾想把服务器密码发给 AI 助手让它帮我干 。两层否定第一AI 没有终端工具物理上干不了第二更重要的是**密码一旦出现在 对话里就视同泄露**。正确的AI 帮我干形态是把 AI 助手装在服务器上本地执行——密码 永不出服务器。**坑 11编码连环坑——中文是 PowerShell 5.1 的天敌。** 同一天被同一根源连坑三次1. **中文注释脚本**UTF-8 无 BOM 的 .ps1 被老版 PowerShell 按 GBK 误读注释行吞掉下一行代码报错行号整体偏移——看着像语法错误其实是编码错误2. **中文路径**脚本里写死的 C:\Users\用户名\... 日志路径经编码错乱写进了一个乱码目录日志凭空消失3. **乱码目录别有洞天**想清理时才发现里面还住着第三方应用的历史数据连枚举都被 ACL 拒绝——**清理垃圾目录前先验明正 身**终极解法一句话**Windows 自动化脚本一 律纯 ASCII。****坑 12SYSTEM 任务的薛定谔状态。** SYSTEM 注册的计划任务普通权限下 Get-ScheduledTask 报找不到、schtasks 报 Access denied——看起来任务没了实际是安全描述符挡住了普通用户的读取。**验证系统级任务 的存活必须以管理员视角。**坑 10 的消失有一半概率其实只是坑 12 的错觉。### 第 13 个坑藏在明天早晨到这里12 个坑全部填平隧道稳定、开机自启配置完毕一切测试通过。我信心满满地 关机睡觉——第二天早晨手机连上去的那一刻Connection refused。## 七、重启考一次阵亡与 7 秒自救这是全套流程里最隐蔽的一枪值得单开一章 。### 现场重启后的家电脑就在眼前隧道却死了。手机 Termius 报 Connection refused。我做了四路探测| # | 探测 | 结果 | 说明 ||---|---|---|---|| 1 | 家电脑 Get-Process frpc | 无此进 程 | **frpc 死了** || 2 | Test-NetConnection 服务器公网IP -Port 7000 | True | 服务器和 frps 活得好好的 || 3 | Test-NetConnection 服务器公网IP -Port 6000 | Falserefused | 没人监听 6000 frpc 压根没注册映射 || 4 | 家电脑开机时间 | 08:46 | 计划任务AtStartup早就该拉起它了 |推理链服务器无辜 → frpc 被任务拉起过、 但**死了** → AtStartup 触发器没有失败 → **它不是被拉起失败的是被拉起之后自己退出的**。顺带一个取证细节6000 探测回来的是 **refused 而不是 timeout**——服务器内核明确说 没人在听而不是防火墙默默丢包。refused 无人监听timeout 防火墙拦截这组区 别第一次在实战里派上用场。### 病根loginFailExit 的默认值可它为什么退出没有日志死无对证——这本 身就是第一个教训下一章可观测性先行的 由来。只能查配置和文档最后在 frp 文档里定罪 **loginFailExit 默认为 true首次登录服务器失败进程直接退出。**时间线还原开机 → AtStartup 任务抢在**网络就绪之前**拉起 frpc → 首连必败 → frpc 直接自杀 → 任务的 3 次重试若仍撞上无网窗 口就死透了。配置看起来全对死的却悄 无声息。### 药方frpc.toml 顶层加一行同时把日志配上tomlloginFailExit false[log]to C:/frp/frpc.loglevel infomaxDays 7首连失败不退出内置无限重连——网络一就绪 立刻自己爬起来。### 复考7 秒自救实录再重启一次。这次日志在场铁证如下| 时间 | frpc.log 实录 | 解读 ||---|---|---|| 09:15:26 | connect error: A socket operation was attempted to an unreachable network | 首连失败网络未就绪 || 09:15:28 | connect error: ...重试 #1 | 仍然无网——但进程还活着 || 09:15:33 | login to server success → start proxy success | 网络就绪**7 秒 完成自救** |手机再连一次成功。### 复盘第一次考试输在哪输在两处1. **考试方法错**AtStartup 真实重启 开机无网窗口这个组合我从头到尾没真实跑过——每一步都单独测过和整条链路考过 是两回事2. **考场没有监控**第一次失败时 frpc.log 还不存在——计划任务后台进程没有控制台 死因只能靠推理定罪日志配上之后复考才 拿到 7 秒自救的铁证。**先有可观测性才谈得上排查** 一句话概括**装成开机任务 ≠ 开机真能用。** 自启可靠性必须用真实重启来考——而且要先把日志配上再谈排查。## 八、可靠性工程与两场毕业考打通隧道只是及格线。真正要交付的是**重 启后还能连、放一晚上不断线。**### 0. 可观测性先行frpc 以计划任务后台运行时**没有控制台**不落盘日志就等于全程盲诊进程死了不知道 、怎么死的不知道、什么时候复活的也不知道 。坑 13 能拿到 7 秒自救的铁证正是日志的功劳。所以 frpc.toml 的 [log] 不是可选 项是**地基**。### 1. 重启自愈三保命| 配置 | 做法 | 作用 ||---|---|---|| sshd 启动类型改 Automatic | Set-Service sshd -StartupType Automatic | 开机自动监听 2222 || frpc 计划任务托管 | AtStartup SYSTEM ExecutionTimeLimit0 RestartCount 3 | 开机拉起、崩溃自重启、无 72h 强杀 || 睡眠/休眠全关 | powercfg /change standby-timeout-ac 0dc 同理hibernate 同理 | 电脑永远醒着 |### 2. 手机掉线痊愈三件套手机闲置几分钟掉线和坑 4 的 PC 端掉线是**同一种病**NAT 设备把太安静的连接登 记项清掉了——只是这次被清的是手机→服务器那一段。药方- **服务端全局心跳**sshd_config 追加 ClientAliveInterval 30 ClientAliveCountMax 5——家电脑每 30 秒探测一次**一处修改覆盖所有客户端**手机、平板、任何人 的电脑- **客户端双保险**Termius → Settings → SSH → Keep Alive Interval 30- **治锁屏杀后台**安卓对 Termius 关闭电池优化否则心跳包根本发不出去### 3. 提权执行的正确姿势注册计划任务、改 sshd、关睡眠全都需要管理员权限非提权上下文一律 Access is denied。最稳的形态**把全部修改写成一个自 检脚本**每步打印 [1]~[6] 的结果管理员身份一气呵成跑完输出形如text[1] sshd StartupType Automatic ... OK[2] ClientAliveInterval 30 ... OK[3] 睡眠/休眠已全关 ... OK[4] 计划任务 frpc 已注册 ... OK[5] ExecutionTimeLimit 0 ... OK[6] frpc 日志配置 ... OKALL DONE输出即验收单六步全绿再收工。### 两场毕业考成绩单| 考试 | 内容 | 结果 ||---|---|---|| 重启考 | 真实重启隧道自动恢复 | ✅ 实际 **7 秒**frpc.log 铁证见第七章 || 闲置考 | 放置 10~15 分钟不断线 | ✅ 30 秒心跳双保险生效 |双考全过这套系统才算毕业。## 九、最终架构与成本[手机 Termius] --ssh-- [云服务器 frps:6000] --长连接隧道-- [家电脑 frpc] -- [sshd:2222]- **服务器**华为云轻量 2 核 1G · Ubuntu 24.04 · IPv4 标准型月成本一杯奶茶钱- **家电脑**frpc 由计划任务托管开机自启、崩溃自动拉起、loginFailExit false 抗开机竞速日志落盘 frpc.logsshd 心跳 30 秒睡眠全关- **服务器 frps**systemd 托管Restarton-failure 崩溃自重启- **手机**Termius 直连 公网IP:6000 免密登录Termux 接入为第二客户端——ssh-keygen 生成密钥ssh 用户名服务器公网IP -p 6000 即连- **加固收尾**密钥登录 关闭密码 账 户白名单sshd_config 终态节选账户名脱 敏textPort 2222ClientAliveInterval 30ClientAliveCountMax 5Match Group administratorsAuthorizedKeysFile __PROGRAMDATA__/ssh/administrators_authorized_keysPasswordAuthentication noPubkeyAuthentication yesAllowUsers 用户名Termux 的新公钥要进的就是 administrators_authorized_keys——它被 ACL 锁定普通权 限写不进去必须经管理员 PowerShell 追加 。这也是一处配置所有客户端通用的落点 心跳在全局段授权在 Match 块新设备接入只需追加一行公钥。双客户端的意义在于验证了架构的优雅**服 务端一处配置心跳 授权所有客户端通用**。新设备想接入生成密钥、追加公钥 完事。## 十、心法与进化设想### 写给同样困境的你四条心法1. **认清方向**家宽 NAT/防火墙下由内向外是唯一活路——先找让家电脑主动出站的方案再谈其他2. **客户端越傻越好**方案优劣的隐藏维度是**客户端的环境依赖**——最好客户端只需要 一个标准 SSH AppVPN 常驻类方案在手机端 都是定时炸弹3. **能连上只是及格线**真正交付的是重 启后还能连、闲置一晚不断线——开机自启、心跳保活、睡眠关闭可靠性工程才是最后一公 里4. **坑都是知识点**端口测试时序、双层防火墙、NAT 闲置超时、编码连环坑……每个坑背 后都是一条原理踩过就真正懂了### 进化设想让家电脑从公网隐身毕业不是终点这套系统还有一条清晰的进化 路线。**现状的取舍**一条命令直达家电脑**连 服务器的账号都不需要**——frps 只是字节搬运工SSH 的密钥协商与内容全程不经过它手 机↔家电脑端到端加密。便利拉满代价是 6000 端口对全网开放家电脑的 sshd 天天被 扫描器敲门好在只进得来持密钥的人。**进阶形态跳板模式堡垒机思路**现在手机 ──直接敲──→ 公网:6000 ──→ 家电脑 6000 全网可敲设想手机 ──先登──→ 服务器:22 ──→ 本机:6000 ──→ 家电脑6000 收回服务器本机三个动作缺一不可1. frps.toml 加 proxyBindAddr 127.0.0.1——6000 只绑回环网卡公网物理不可达2. 云防火墙删掉 6000 放行规则——双保险3. **7000 保持开放**——家电脑 frpc 的生命 线与 6000 是两码事最易搞混的一步成立前提是服务器为自己的专用机——两段加密 的信任模型才成立。而专用同时意味着**守 门责任在己**服务器变成唯一入口后它的 22 端口就是全家的门锁fail2ban 与密钥化 登录正是这门工程的地基。代价是 Termius 要配 Jump Host体验仍是一键以及服务器 理论上可见中转流量自有机可接受。**同场加映服务器兼任常驻基地**。它 7×24 在线、机房带宽、不依赖家里供电断网。Termius 加一个 Hostroot公网IP:22即可与家电脑 Host并存需要家里的环境走隧道需要稳定的 Linux 环境直连服务器——**两把钥匙各开各的门**。--- **随笔小结**内网穿透的胜负手不在工具 而在方向——家宽的墙只拦进来不拦出去让家电脑先伸手一切自然打通。工具链本身两天就能跑通真正的工程量在可靠性13 个坑里最狠的一个loginFailExit 默认值 专门猎杀配置全对但没真机重启过的人——** 装成开机任务 ≠ 开机真能用**能连上只是及格线重启后 7 秒能自己爬起来才算毕业。*懿路向前 · AI辅助整理**2026-10-06*
返回列表