当IPv6遇上内网访问:一次路由器配置引发的血案
上周给家里网络升级IPv6时,突然发现NAS上的个人博客在局域网里打不开了,但外网访问却一切正常。这个诡异的故障让我折腾了大半天,今天就把这个典型的”IPv6优先”导致的内网访问故障排查过程记录下来。
故障现象:熟悉的404变得陌生
那天给华硕AX86U刷了最新固件后,兴冲冲地在路由器后台勾选了”启用IPv6″选项。测试外网访问一切正常,ping6
也能通,正觉得自己网络水平见长,结果用手机连WiFi访问内网NAS时,熟悉的个人博客突然报404。
最诡异的是:
- 同一手机用4G网络访问完全正常
- PC浏览器直接输入NAS的IPv4地址能访问
- 但通过域名访问就会失败
排查过程:DNS的罗生门
首先用nslookup
检查域名解析,发现返回的是IPv6地址:
nslookup myblog.local
Server: 192.168.50.1
Address: 192.168.50.1#53
Non-authoritative answer:
Name: myblog.local
Address: 2408:8207:7890:abcd::123
这才意识到问题所在——当设备同时支持IPv4/IPv6时,系统会优先尝试IPv6连接。而我的内网DNS服务(dnsmasq)在开启IPv6后,自动为局域网主机名添加了AAAA记录。
解决方案:给DNS加点”偏好”
尝试了三种解决方案,最终选择了最优雅的第三种:
方案一:简单粗暴法
直接在路由器禁用IPv6——这相当于把问题藏起来,显然不是技术人的作风。
方案二:本地hosts强推
在所有设备hosts文件里强制指定IPv4地址,但维护成本太高,新设备接入又要配置。
方案三:DNS配置优化(推荐)
在dnsmasq配置中添加以下参数,让局域网域名优先返回IPv4记录:
# 华硕路由器自定义配置
dnsmasq.conf.add=
filter-aaaa
local-ttl=300
这个配置的精妙之处在于:
filter-aaaa
过滤掉AAAA(IPv6)记录local-ttl
缩短缓存时间方便调试- 不影响外网IPv6的正常使用
更深层的思考:IPv6过渡期的阵痛
这次踩坑让我意识到,在IPv4向IPv6过渡的阶段,很多我们习以为常的网络行为都可能出现意外。特别是:
- 双栈环境下应用的连接策略
- DNS解析的优先级问题
- 局域网服务的兼容性设计
建议大家在启用IPv6时,特别注意检查这些场景:内网文件共享、打印机访问、智能家居控制等,都可能遇到类似的”水土不服”。
后记:一个命令的救赎
最后分享个实用命令,可以快速测试禁用IPv6后的解析情况:
curl -4 -v http://内网域名
那个深夜,当这个命令终于返回熟悉的HTML时,我知道今晚能睡个好觉了。技术人的快乐,有时候就是这么简单。
这个问题我也遇到过,IPv6开启后打印机都用不了,最后也是改DNS解决的
技术贴好评!收藏了,说不定哪天就能用上
刚升级完IPv6就看到这篇,太及时了,正愁内网NAS访问不了 🤔
原来filter-aaaa还有这种用法,学到了!
华硕路由器的配置界面确实有点复杂,新手很容易踩坑
我直接关闭IPv6了,等以后技术成熟再用
博主写得很详细,但是对小白来说还是有点难懂,能出个视频教程吗?