首页 / 资讯中心 / 文章详情

公网IPv6直连Windows NAS:DDNS、防火墙与远程访问全流程

公网IPv6直连Windows NAS:DDNS、防火墙与远程访问全流程 ★ FEATURED ARTICLE
把家里的 Windows 机器做成一台在外面随时能连回来的 Nas这件事我前后折腾过好几轮。第一次卡在没有公网地址上第二次卡在光猫的防火墙把包全吞了第三次以为自己成功了结果出差到外地连不上——因为酒店的网络压根不给 IPv6。折腾到最后我才明白所谓公网 IPv6 访问异地 Windows Nas难的不是某一个操作而是要让地址、解析、放行、监听这四件事同时成立任何一环掉链子表现都是同一个症状连不上。这篇就把我这套跑了大半年的方案完整拆一遍从线路自检到 DDNS 脚本、从 Windows 端开放到光猫放行、再到安全加固和排错链路全部写清楚。适合手里有台常年开机的 Windows 机器、想在外网直接访问又不想依赖任何第三方中转的人看。小白照着做能跑通有基础的可以直接跳到后面的脚本和防火墙部分抄配置。1. 先把这件事想明白IPv6 直连到底解决了什么问题1.1 为什么公网 IPv4 走不通而 IPv6 有戏家庭宽带想要一个公网 IPv4 地址这几年基本是奢望。运营商侧的地址池早就不够分绝大多数家庭宽带拿到的都是共享出口地址你在路由器上看到的那个 WAN IP 只是运营商内网里的一段外面根本路由不进来。想让外部主动连你的机器只能靠某种中间人牵线链路绕、延迟高、稳定性看别人脸色。IPv6 的处境完全不同。地址空间大到你随便用运营商普遍会给家庭线路下发一段前缀长度常见是 /60 或者 /56前缀下面可以划出成千上万个全球可达的地址。也就是说你的 Windows 机器不是借用某个出口而是自己就拥有一个能被互联网直接路由到的地址。这是根子上的差别IPv4 方案里你在想办法绕过没有地址这件事IPv6 方案里地址不缺你要解决的问题变成了怎么让这个地址保持稳定、怎么让包能进来。但必须先把话说在前面拿到全球单播地址不等于外网能连上。默认情况下光猫和路由器上的 IPv6 防火墙是拦入站的Windows 自己的防火墙也是拦入站的。地址只是门牌号门还是锁着的。1.2 这套方案真正要拼的四块板很多教程上来就让你敲命令、改注册表新手照着做中间任何一步不对都不知道错在哪。我习惯先把整体拆成四块每块单独验证出问题才能定位。环节要达成什么状态出问题时的典型表现地址Windows 网卡上有一个非临时的全球单播 IPv6 地址只有 fe80 开头的链路本地地址解析域名解析出的是当前这个地址AAAA 记录正确域名解析到旧地址或解析不到放行光猫/路由器/Windows 三层防火墙都放行了目标端口内网能连、外网超时监听目标服务确实在监听并且绑定在正确地址上端口通但服务无响应这四块里第一块靠运营商和你的网络拓扑第二块靠脚本第三块最容易卡住第四块最容易被忽略。后面每一章对应一块我会把验证方法和常见坑都写出来。1.3 什么情况下别硬上这套方案有两种情况我建议直接放弃直连思路省下来的时间比折腾省下的钱值。第一种是你的外网访问端没有 IPv6。这是最容易被忽略的你家里的线路支持 IPv6不代表你出差住的酒店、你公司办公网、你常去的咖啡店支持。很多企业网络和部分公共 WiFi 只发 IPv4 地址这种情况下不管家里怎么配你从那些地方就是连不上。手机蜂窝数据一般都有 IPv6这也是为什么很多人的测试结果是手机能连、电脑不能连一度以为是自己配错了。第二种是运营商在你上面又叠了一层不可控的设备比如某些小区宽带、某些长租公寓的集中组网你在自己路由器上根本看不到前缀下发。这种环境基本没救别浪费时间。判断方法很简单见下一章的自检流程。2. 动手前的底盘检查你的线路到底给不给 IPv62.1 自下而上三层倒推先定位断点在哪我排查这类问题从来不从上往下猜而是从终端往上倒推因为终端的表现最直接。第一层看 Windows 自己有没有地址。打开 PowerShell跑这两条# 列出所有 IPv6 地址重点看不是 fe80 开头的 Get-NetIPAddress -AddressFamily IPv6 | Select-Object InterfaceAlias, IPAddress, PrefixOrigin, SuffixOrigin, AddressState | Format-Table -AutoSize # 看默认路由有没有 IPv6 网关 Get-NetRoute -AddressFamily IPv6 | Where-Object { $_.DestinationPrefix -eq ::/0 }判读方式我列成表对号入座就行。输出特征含义下一步只有 fe80 开头链路本地地址纯内网用往上查路由器/光猫有 2 开头的地址但没有 ::/0 路由有地址没网关通常是路由器没下发或 RA 没通检查路由器 IPv6 模式有 2 开头地址 ::/0 路由但ping外部不通地址有了出口没通检查光猫 WAN 侧地址、路由、外网 ping 都正常底盘没问题进入第 3 章第二层看路由器。登录路由器管理页面找到 IPv6 相关状态重点看三样WAN 侧是否获取到 IPv6 地址、是否获取到前缀PD、前缀长度是多少。如果路由器 WAN 侧什么都没有那问题在光猫或者运营商跟你机器没关系。第三层看光猫。这一步最容易被跳过。光猫的管理页面通常分普通用户和超级管理员两套账号普通账号能看到的信息很少。如果路由器是桥接拨号光猫那边只需要确认 IPv6 功能是开启的如果光猫自己拨号就要在光猫状态页里确认 WAN 连接上有 IPv6 地址和前缀。2.2 光猫拨号还是桥接两种拓扑的差别很大这个选择直接决定了后面防火墙在哪一层配。光猫拨号路由模式 下挂路由器光猫拿到前缀往下发给路由器路由器再往下发给终端。这种拓扑的问题是前缀经过两次下发有些路由器的IPv6 透传实现不规范会导致终端拿到的地址前缀跟光猫的不是同一段表现就是有地址但外网不通。如果你的设备是这种拓扑且不通第一件事是把路由器的 IPv6 模式从透传/桥接改成动态获取/Native两种模式都试一遍。光猫桥接 路由器拨号路由器直接拿到前缀往下发。这种拓扑最干净前缀链路只有一跳出问题好排查防火墙规则也只需要在路由器上配一处。我自己的方案最终就切到了这个模式。代价是桥接之后光猫的一些附加功能比如某些语音、某些电视业务可能受影响切换前先确认你家有没有依赖光猫拨号的业务别一刀切完发现电视不能看了。2.3 前缀长度决定了你后面怎么算地址看到 PD 前缀之后顺手记下前缀长度。常见的是 /60 和 /56也有给 /64 的。这个数字的意义是前缀部分由运营商给后面的位由你自己划。如果是 /64说明前缀已经占满 64 位终端地址的后 64 位由终端自己生成通常是 EUI-64 或者随机生成你没有再划子网的余地。如果是 /56 或 /60理论上你可以划多个网段但家庭场景一般也用不上路由器会自动从里面挑一个 /64 用。这个知识点为什么重要因为前缀变了你机器地址的前缀部分就变了但后 64 位通常不变。这解释了为什么 DDNS 有时候能救回来、有时候救不回来——如果脚本抓的是完整地址并且能及时更新前缀变了也能更新过去如果脚本抓错了比如抓了个临时地址那就一直错着。3. 让地址稳定下来DDNS 这块必须做扎实3.1 前缀为什么会变什么时候变家庭宽带的 IPv6 前缀不是永久的。重新拨号、运营商侧策略调整、租期到期续约都可能导致前缀变化。频率上有的线路几个月不变有的线路一天变好几次尤其是那种夜间自动重播的。这意味着你不能把地址写死在任何配置里必须走域名 动态解析。域名的作用就是给你一个稳定的名字背后指向的地址由脚本维护。这里有个容易混淆的点地址变了和你连不上是两件事。如果你的客户端保存的是上一次的地址即使解析已经更新了它也不会自动去查。所以测试的时候一定要用域名而不是 IP很多人栽在这上面。3.2 抓地址这一步坑比想象的多看起来就是取一个 IP 上报实际操作里我踩过的坑有这么几个。坑一抓到的是临时地址。Windows 默认启用了隐私扩展会在正常地址之外额外生成若干临时地址用于对外发起连接这些临时地址会定期更换。如果你用最简单的命令取第一个 IPv6 地址很可能取到临时地址然后 DDNS 就在那疯狂上报一个几分钟后就失效的地址。表现就是刚更新完能连过一会儿又不行了。解决办法有两个我推荐第一个# 方案一直接禁用隐私扩展的临时地址需要重启网卡或重启生效 netsh interface ipv6 set global randomizeidentifiersdisabled netsh interface ipv6 set privacy statedisabled# 方案二脚本里精准过滤保留这个更稳妥因为不改系统行为 $addr Get-NetIPAddress -AddressFamily IPv6 | Where-Object { $_.IPAddress -notlike fe80* -and # 排除链路本地 $_.IPAddress -notlike fd* -and # 排除唯一本地地址 $_.IPAddress -notlike ::1 -and # 排除回环 $_.PrefixOrigin -eq RouterAdvertisement -and $_.SuffixOrigin -ne Random # 排除随机后缀临时地址 } | Sort-Object InterfaceAlias | Select-Object -First 1 $addr.IPAddress我自己的做法是两个都用先禁用隐私扩展保证地址不乱跳脚本里再过滤一遍兜底。稳。坑二抓到了 Teredo 或者隧道地址。某些系统上会有 2001:0 开头的隧道地址混在里面这种地址上报上去毫无意义。上面的过滤条件里加一条排除 2001:0 前缀就够了。坑三多网卡。机器上如果有虚拟机网卡装过虚拟化软件基本都有会多出好几个虚拟网卡每个都可能带地址。脚本里按 InterfaceAlias 排个序取第一个是不严谨的更稳的办法是写死物理网卡的接口名。用Get-NetAdapter先看一遍把名字填到脚本里。3.3 上报解析脚本骨架 计划任务上报这一步要调用解析服务商的接口各家参数不一样我这里给一个通用骨架你把自己的接口地址和密钥换进去就能用。思路是拿到地址 → 跟上次上报的比对 → 不一样才请求接口避免频繁调用被限流。# ddns-update.ps1 # 说明把 API地址、记录ID、密钥 换成你自己服务商的参数 $interfaceName 以太网 # 改成你的物理网卡名 $domain nas.example.test # 改成你的域名 $stateFile C:\ddns\last.txt # 1. 取当前地址 $current (Get-NetIPAddress -AddressFamily IPv6 -InterfaceAlias $interfaceName | Where-Object { $_.IPAddress -notlike fe80* -and $_.SuffixOrigin -ne Random } | Select-Object -First 1).IPAddress if (-not $current) { Write-Output 未获取到有效IPv6地址; exit 1 } # 2. 跟上次比对 $last if (Test-Path $stateFile) { $last (Get-Content $stateFile -Raw).Trim() } if ($current -eq $last) { Write-Output 地址未变化跳过; exit 0 } # 3. 上报 $body { record_id 记录ID type AAAA value $current ttl 60 } | ConvertTo-Json try { $resp Invoke-RestMethod -Uri API地址 -Method Post -Headers { Authorization Bearer 密钥; Content-Type application/json } -Body $body -TimeoutSec 15 Set-Content -Path $stateFile -Value $current -NoNewline Write-Output 更新成功: $current } catch { Write-Output (更新失败: $_.Exception.Message) exit 1 }脚本跑通之后挂到计划任务上触发方式选启动时加每 5 分钟重复两条都配上。只配启动时的话中途前缀变了就不会更新。注意计划任务里重复间隔的选项在部分系统版本里藏得比较深新建任务时不要用基本任务向导直接用创建任务在触发器里勾选重复任务间隔才能设成 5 分钟。3.4 TTL 取值和验证方法TTL 我一般设 60 秒。设太长比如 600地址变了之后缓存里还是旧地址你要等十分钟才能连上设太短会被某些服务商判定为频繁查询可能限流。60 是个折中值。验证分三步走缺一不可本地先确认地址正确Resolve-DnsName 你的域名 -Type AAAA输出的地址要跟Get-NetIPAddress拿到的一致。换一个外部视角确认用手机流量不要连 WiFi访问一个在线的 DNS 查询页面查你的域名看解析结果是否一致。这一步能排掉本地 DNS 缓存干扰。最后才测端口连通性别一上来就测连接否则解析错了你也以为是防火墙问题。4. Windows 这一端服务怎么开、账号怎么设4.1 账号是安全的第一道门比端口重要我见过太多人把精力全花在防火墙和端口上账号却是一个简单的用户名配 123456这种配置暴露在公网上被拿到只是时间问题。我的做法是专门建一个用于远程访问的账号不用管理员账号直连。# 建一个专用账号设一个足够长的密码 $pwd ConvertTo-SecureString 一串十六位以上的复杂口令 -AsPlainText -Force New-LocalUser -Name remoteonly -Password $pwd -PasswordNeverExpires -Description 远程访问专用 Add-LocalGroupMember -Group Users -Member remoteonly这个账号只加进普通用户组需要访问共享目录时单独对目录授予权限不要图省事加进管理员组。理由很直接万一这个账号被拿到攻击者拿到的只是一个普通用户权限破坏范围可控。另外两个必做项把内置的管理员账号改名或者禁用开账户锁定策略连续输错几次就锁一段时间。# 三次失败锁定 30 分钟需要通过组策略或 net accounts 设置 net accounts /lockoutthreshold:3 /lockoutduration:30 /lockoutwindow:304.2 远程桌面的开启与端口调整远程桌面RDP是我主要用的入口比文件共享更适合外网场景因为你连上去之后能干任何事而共享只给文件。开启方式在系统设置里就能点但我更推荐用命令顺便把端口改掉# 开启远程桌面 Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Control\Terminal Server -Name fDenyTSConnections -Value 0 # 改端口把 33890 换成你想要的端口注意范围 1024-65535 Set-ItemProperty -Path HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp -Name PortNumber -Value 33890改端口这件事收益不大但成本为零。默认端口每天被扫描无数次改掉之后能过滤掉绝大部分自动化扫描。这不是真正的安全措施端口扫描很容易发现你改到哪了属于降低噪音。改完端口记得防火墙规则也要跟着改否则你开了新端口但防火墙还开着旧端口一样连不上。4.3 Windows 防火墙入站规则怎么写才不多不少Windows 防火墙对 IPv6 一样生效默认策略是入站全拦。你需要显式加一条允许规则。关键是只放开你需要的端口和协议不要整条链放行。# 只允许 TCP 33890 入站名字自己起个好认的 New-NetFirewallRule -DisplayName RDP-Custom-33890-In -Direction Inbound -Protocol TCP -LocalPort 33890 -Action Allow -Profile Any # 看一眼规则是否生效 Get-NetFirewallRule -DisplayName RDP-Custom-33890-In | Get-NetFirewallPortFilter有个细节值得说-Profile Any这个参数。Windows 把网络分成域、专用、公用三种配置文件如果你的网卡被识别成公用网络而你只对专用配了规则那这条规则是不生效的。外网访问场景下直接用 Any别纠结。4.4 445 端口这条红线务必守住文件共享用的 445 端口我的建议非常明确绝对不要直接开放到公网。这不是保守是血泪教训。这个端口历史上被利用得太多了各种自动化工具在互联网上全天候扫描 445一旦你的共享暴露且有弱口令机器会在极短时间内被塞满东西。那想访问文件怎么办两个方案方案一先连远程桌面在远程桌面里访问共享。反正你人已经进去了多一步不影响。方案二在内网用共享外网只走远程桌面。这也是我现在的做法共享目录在家里局域网里随便用出门在外就远程连回来操作。如果你确实需要一个独立的文件访问通道可以考虑用支持 HTTPS 的文件服务但也要配好账号和证书别裸奔。5. 最容易卡住的一公里光猫和路由器的防火墙5.1 默认拦入站是设计使然不是 bug绝大部分人卡在这一步。现象是在局域网里用内网地址能连用公网地址就超时。原因就是上一层的设备把入站包丢了。路由器/光猫的 IPv6 防火墙默认策略通常是这样允许内网发起的连接出去并且建立状态但主动从外部进来的新连接一律丢弃。有的设备提供三档高/中/低/关闭高甚至连 ping 都不回。我见过不少人图省事直接把这层防火墙关掉或者调到最低。这确实能立刻通但等于把内网所有设备的所有端口全暴露了。你只想开一个远程桌面结果把整台路由器的防线拆了不划算。正确做法是保留默认策略只放行你需要的地址端口组合。5.2 放行规则的两种写法各有取舍不同设备的配置界面差异很大但底层逻辑就两种。第一种按目标地址 端口放行。你告诉设备凡是目标是内网某台机器的某个端口就允许进来。这种最精准但有个致命弱点前缀一变内网地址就变了规则跟着失效。表现是前几天好好的突然连不上了。如果你遇到了这种现象先别怀疑别的去检查路由器的放行规则里那个地址八成是旧前缀。第二种按端口放行不限制目标地址。前缀变了规则依然有效代价是这个端口对内网所有设备都开放。适合内网设备不多的情况你自己的设备你清楚风险可控。我的做法是内网机器数量可控用第一种但要接受需要手动维护同时在 DDNS 脚本里加一段逻辑地址变化时把新的地址推给路由器更新规则这一步各家设备支持程度不同不是所有都能做。如果设备不支持就退到第二种把端口号改得偏一点减少被扫到的概率。5.3 逐跳排查从外到内一段一段验证连不上的时候不要瞎猜按这个顺序走每一步都有明确的通/不通判据。步骤操作通的判据不通说明什么1外网ping你的域名有回包设备可能禁 ping不代表不通跳到第 2 步2外网Test-NetConnection 域名 -Port 你的端口TcpTestSucceeded: True包被拦了位置在防火墙3内网用公网地址连能连说明服务端正常问题在中间设备4内网用域名连能连说明解析或回环有问题5本机netstat -ano | findstr 端口有 LISTENING服务没起来或没监听正确地址第 2 步的命令在 PowerShell 里特别好用因为它只测 TCP 握手不受应用层配置影响。Test-NetConnection -ComputerName nas.example.test -Port 33890 -InformationLevel Detailed用这个命令的时候建议从手机流量发起来测因为如果你在同一个局域网里测流量可能走的是内网路径测出来的结果没有参考价值。5.4 前缀变化导致的间歇性故障怎么防这是我踩过最隐蔽的一个坑。症状是大部分时间能用偶尔连不上重拨一下光猫又好了过几天又犯。根因就是前缀变化之后路由器的放行规则里那个旧地址失效了而 DDNS 那边还在正常工作因为域名解析更新了于是你看到的现象是域名解析正确但端口不通。怎么防我是这么做的DDNS 脚本每次更新成功后用Test-NetConnection自测一次端口连通性不通就写日志并触发一个提醒比如往自己的消息通道推一条。至少要让你知道它坏了而不是等到你出差在外需要用到的时候才发现。6. 暴露在公网上的 Windows安全这根弦不能松6.1 爆破是必然会发生的提前想好怎么挡一台有公网 IPv6 地址的机器只要端口是开放的就一定会有人来敲。这不是危言耸听是常态。所以下面这几件事不是可选项。第一账号锁定策略必须开。见 4.1 节的命令三次失败锁 30 分钟。这一条能挡住 99% 的暴力尝试因为它直接让攻击者的字典攻击变成每 30 分钟试三次。第二口令必须够长。十六位以上包含大小写数字符号且不要用任何有意义的词组。我自己的做法是用密码管理器生成一串随机的只存不记。第三如果你的系统版本支持开启网络级身份验证NLA。它要求客户端在建立完整会话之前先完成身份认证能显著减少握手阶段被消耗的资源。6.2 端口号、可见性和少开一个是一个前面说过改端口能减少噪音。除此之外还有两个思路。限制来源。如果你经常从固定的地方访问比如公司、某个固定的宽带可以在防火墙规则里限定来源地址只有来自那个网段的包才放行。这个方案的安全收益很高代价是灵活性差出差到新地方就用不了。只开一个入口。很多人会同时开远程桌面、文件共享、几个 Web 服务、数据库端口端口越多攻击面越大。我的原则是宁愿多一步跳转也不多开端口。所有操作都通过远程桌面进去做对外只暴露这一个端口。6.3 日志要看而且要会看Windows 的安全日志里有两个事件 ID 值得盯4625登录失败。正常情况下应该是零星的甚至是零。如果某天开始出现大量 4625说明有人在试。4624登录成功。你要清楚哪些是正常登录多出来的那些就是问题。# 查最近 50 条登录失败记录看来源地址和账号名 Get-WinEvent -FilterHashtable {LogNameSecurity; Id4625} -MaxEvents 50 | Select-Object TimeCreated, {nAccount;e{$_.Properties[5].Value}}, {nSource;e{$_.Properties[19].Value}} | Format-Table -AutoSize这个命令要管理员权限跑。看的时候重点看两样被尝试的账号名如果出现的是Administratoradmintest这类通用名说明是自动化扫描不用太紧张如果出现的是你自己的专用账号名说明对方摸清了你的情况要认真对待以及来源地址。6.4 必须准备一条备用通道这条经验是从一次真实翻车里换来的某次改防火墙规则把自己锁外面了人在外地家里没人只能等回去。从那以后我加了两条备用通道。一条是保留一个不常用的端口作为应急入口平时不用但规则一直在另一条是让家里的机器定时往我的消息通道发心跳如果连续几小时没心跳说明机器挂了或者网络断了能提前知道而不是等到要用的时候。还有一点Windows 默认会在闲置后进入睡眠网络唤醒在某些场景下不灵。如果你希望机器 7×24 在线电源计划里的睡眠一定要关掉而且网卡的允许计算机关闭此设备以节约电源也要在设备管理器里取消勾选。这个坑我踩过表现是用着用着就断了重启就好。# 查看当前电源计划的睡眠设置 powercfg /query SCHEME_CURRENT SUB_SLEEP # 全部改成永不睡眠 powercfg /change standby-timeout-ac 0 powercfg /change hibernate-timeout-ac 07. 实测中撞上的几个具体问题7.1 手机能连、笔记本连不上这个现象太典型了我一开始以为是自己配错了后来才想明白手机蜂窝数据有 IPv6笔记本连的那个 WiFi 没有。这不是你的问题是访问端的网络不支持。判断方法在访问端打开命令行看一眼本机有没有非 fe80 的 IPv6 地址。没有的话无论你家里怎么配都连不上换网络。顺带说部分手机热点在共享时不一定下发 IPv6 前缀用热点给笔记本做测试也可能失败。要测就老老实实用手机自己测。7.2 前缀变了脚本没跟上有一段时间我的 NAS 三天两头掉线日志里显示上报都成功。后来抓包才看明白脚本取的是网卡上第一个 IPv6 地址而那台机器上装了虚拟化软件多出来一个虚拟网卡脚本有时取到了虚拟网卡上的地址。修法就是 3.2 节写的把接口名写死不再用取第一个这种偷懒写法。顺便把SuffixOrigin -ne Random这个条件也加上了防止哪天隐私扩展又被系统更新打开。改完之后我的做法是加了一行日志每次运行都把取到的地址、接口名、上报结果写进文件出问题的时候翻日志一眼就能看出来它取错了。7.3 在家用域名连不上出去了反而能连这个现象第一次遇到很奇怪。原因是内网里访问自己的公网域名取决于设备是否支持这种回环。IPv6 场景下理论上不用做什么地址转换内网设备拿到公网地址直接连应该就能通但有些路由器的防火墙规则是按入接口判断的——从 LAN 口进来的包即使目标是公网地址段也会走 LAN 的规则而你的放行规则是按 WAN 口写的于是被拦了。解决办法有两个一是内网访问时直接用内网地址不用域名配合本地 hosts 或者内网 DNS 覆盖二是把防火墙规则改成不区分入接口。前者更简单我用的就是前者。7.4 连上了但很慢传文件只有几百 K远程桌面的体验对带宽和延迟很敏感。如果你的上行带宽本身就只有几十兆传大文件慢是正常的物理限制不是配置问题。能优化的地方主要是这几个远程桌面里把体验选项调成局域网以外的模式关掉桌面背景、字体平滑、视觉样式分辨率不要开太高如果有条件用文件传输而不是在远程桌面里拖拽。另外IPv6 的路由路径有时候比 IPv4 绕跨网络访问时的延迟不一定比 IPv4 低。这个看具体线路没法一概而论测一下就知道。最后分享一个我一直保留的习惯每次改动配置之前先把当前的防火墙规则和路由器配置页面截个图存下来。家庭网络环境没有版本管理改坏了想回滚全靠记忆而人在着急的时候记忆最不可靠。多花三十秒截图能省掉好几个小时的返工。
阅读完成 · 觉得有帮助?
咨询建站