更换LAN子网后Ubuntu 22.04机器DNS与路由故障求助
更换LAN子网后Ubuntu 22.04机器DNS与路由故障求助
我最近把家里路由器的子网重新配置成了192.168.39.0(之前是192.168.0.0),结果一台Ubuntu 22.04机器出现了严重的DNS和路由问题,折腾半天终于找到原因,把过程和解决方法分享出来:
故障前提排查
- 排除硬件问题:用外接Ubuntu 22.04启动盘启动这台机器,网络完全正常;家里其他设备(包括我的Ubuntu 22.10笔记本)也都能正常联网
- 故障机有两个有线接口和WiFi,都能通过DHCP获取到LAN的IP,但所有接口的网络功能都异常
具体故障现象
- DNS失效:直接ping公网IP(比如
8.8.8.8)能通,但第一次ping会有超过2秒的延迟;ping域名(比如google.com)则提示Name or service not known - 路由异常:ping局域网主机的本地域名
archimedes.local时,返回From 192.168.39.1 icmp_seq=1 Destination Host Unreachable,但直接ping对应IP192.168.39.37却完全正常 - SSH故障:不管是从这台机器ssh到其他主机,还是从其他主机ssh进来,要么出现密码无法正确验证的情况,要么直接连不上
- 排查对比:
resolvectl status和/etc/resolv.conf的内容和我正常工作的笔记本完全一致route -n显示网关是正确的192.168.39.1- 对比tracepath结果:正常机器能正常走到路由器
ipfire.rumahtumi,但故障机在第一跳之后全是无响应
故障机的关键命令输出
route -n输出:
root@indigo:/home/tim# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 0.0.0.0 192.168.39.1 0.0.0.0 UG 20100 0 0 eth1 169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 virbr1 172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0 192.168.39.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr1 192.168.39.0 0.0.0.0 255.255.255.0 U 100 0 0 eth1 192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
resolvectl status输出:
root@indigo:/home/tim# resolvectl status Global Protocols: -LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported resolv.conf mode: stub Link 2 (eth2) Current Scopes: none Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Link 3 (eth1) Current Scopes: DNS Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Current DNS Server: 192.168.39.1 DNS Servers: 192.168.39.1 DNS Domain: rumahtumi Link 4 (wlp6s0) Current Scopes: none Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Link 5 (virbr1) Current Scopes: none Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Link 6 (virbr0) Current Scopes: none Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported Link 8 (docker0) Current Scopes: none Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
解决方案与原因分析
反复排查后我注意到路由表里的virbr1有点不对劲——它居然也用了192.168.39.0这个子网,和我路由器的新子网直接冲突了!
- 临时修复:删掉
virbr1设备后,网络立刻恢复正常,但重启机器后它又会自动出现 - 根本原因:这台机器上装了minikube,它自动创建了一个网桥并设置为开机自启,巧合的是刚好选了
192.168.39.0作为子网,导致和LAN子网冲突 - 永久解决:这个网桥的配置文件在
/etc/libvirt/qemu/networks/autostart目录下,执行virsh net-edit mk-minikube命令修改子网段,让它和LAN子网错开即可
备注:内容来源于stack exchange,提问作者Tim Richardson
相关产品推荐
相关产品推荐

