☰
公网IPv6直连Windows NAS:DDNS、防火墙与远程访问全流程
2026/10/27 20:33:15 网站建设 项目流程

把家里的 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. 动手前的底盘检查:你的线路到底给不给 IPv6

2.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 randomizeidentifiers=disabled netsh interface ipv6 set privacy state=disabled
# 方案二:脚本里精准过滤,保留这个更稳妥,因为不改系统行为 $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 是个折中值。

验证分三步走,缺一不可:

  1. 本地先确认地址正确:Resolve-DnsName 你的域名 -Type AAAA,输出的地址要跟Get-NetIPAddress拿到的一致。
  2. 换一个外部视角确认:用手机流量(不要连 WiFi)访问一个在线的 DNS 查询页面,查你的域名,看解析结果是否一致。这一步能排掉本地 DNS 缓存干扰。
  3. 最后才测端口连通性,别一上来就测连接,否则解析错了你也以为是防火墙问题。

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:30

4.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 @{LogName='Security'; Id=4625} -MaxEvents 50 | Select-Object TimeCreated, @{n='Account';e={$_.Properties[5].Value}}, @{n='Source';e={$_.Properties[19].Value}} | Format-Table -AutoSize

这个命令要管理员权限跑。看的时候重点看两样:被尝试的账号名(如果出现的是"Administrator""admin""test"这类通用名,说明是自动化扫描,不用太紧张;如果出现的是你自己的专用账号名,说明对方摸清了你的情况,要认真对待),以及来源地址。

6.4 必须准备一条备用通道

这条经验是从一次真实翻车里换来的:某次改防火墙规则,把自己锁外面了,人在外地,家里没人,只能等回去。

从那以后我加了两条备用通道。一条是保留一个不常用的端口作为应急入口,平时不用但规则一直在;另一条是让家里的机器定时往我的消息通道发心跳,如果连续几小时没心跳,说明机器挂了或者网络断了,能提前知道而不是等到要用的时候。

还有一点,Windows 默认会在闲置后进入睡眠,网络唤醒在某些场景下不灵。如果你希望机器 7×24 在线,电源计划里的睡眠一定要关掉,而且网卡的"允许计算机关闭此设备以节约电源"也要在设备管理器里取消勾选。这个坑我踩过,表现是"用着用着就断了,重启就好"。

# 查看当前电源计划的睡眠设置 powercfg /query SCHEME_CURRENT SUB_SLEEP # 全部改成永不睡眠 powercfg /change standby-timeout-ac 0 powercfg /change hibernate-timeout-ac 0

7. 实测中撞上的几个具体问题

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 低。这个看具体线路,没法一概而论,测一下就知道。

最后分享一个我一直保留的习惯:每次改动配置之前,先把当前的防火墙规则和路由器配置页面截个图存下来。家庭网络环境没有版本管理,改坏了想回滚全靠记忆,而人在着急的时候记忆最不可靠。多花三十秒截图,能省掉好几个小时的返工。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询