我在具有多个网络接口和 IP 地址的 Linux 机器上遇到了一个问题。具体来说,在 ens3 接口上发布主要公共 IP(我们称之为 112. * .* .1)后,DNS 解析失败。
经过调查,我发现默认路由的源 IP(通过 ip route)在路由表中保持不变。因此,DNS查询会尝试使用过时的源 IP(112.*.*.1),从而导致名称解析暂时失败。
我正在寻求有关如何在发布主要公共 IP 后确保正确解析 DNS 的指导。是否有推荐的配置或自动化机制来处理这种情况并相应地更新默认路由的源 IP?
附加信息:
操作系统:
Operating System: Ubuntu 20.04.1 LTS
Kernel: Linux 5.4.0-42-generic
Network Configuration Tool: Netplan
DNS解析失败:
root@ecsb6285de3e605:~# ping -I 112. *.* .2 www.amazon.com
ping: www.amazon.com: Temporary failure in name resolution
root@ecsb6285de3e605:~# ping -I 112. *.* .2 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 112. *.* .1 : 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=119 time=3.08 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=119 time=3.10 ms
网络配置:
ip route 的输出:
root@ecsb6285de3e605:~# ip r
default via 112.73.32.1 dev ens3 proto static
10.0.0.0/8 via 10.105.2.1 dev ens2 proto static
10.105.2.0/24 dev ens2 proto kernel scope link src 10.105.2.195
112.*.*.*/19 dev ens3 proto kernel scope link src 112.*.*.*
ip a 的输出:
root@ecsb6285de3e605:~# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:f7:f1:5c brd ff:ff:ff:ff:ff:ff
inet 10.105.2.195/24 brd 10.105.2.255 scope global ens2
valid_lft forever preferred_lft forever
inet6 fe80::5054:ff:fef7:f15c/64 scope link
valid_lft forever preferred_lft forever
3: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 52:54:00:8f:fc:23 brd ff:ff:ff:ff:ff:ff
inet 112.*.*.1/19 brd 112.*.*.255 scope global ens3
valid_lft forever preferred_lft forever
inet 112.*.*.2/19 brd 112.*.*.255 scope global secondary ens3
valid_lft forever preferred_lft forever
inet 112.*.*.3/19 brd 112.*.*.255 scope global secondary ens3
valid_lft forever preferred_lft forever
inet 112.*.*.4/19 brd 112.*.*.255 scope global secondary ens3
valid_lft forever preferred_lft forever
inet 112.*.*.5/19 brd 112.*.*.255 scope global secondary ens3
valid_lft forever preferred_lft forever
ip a
现象:释放主IP(112.*.*.1)后,DNS解析失败,但是释放112.*.*.1后,或的输出没有任何变化ip route
。
当明确指定源 IP 时(例如,使用 ip route change default via GATEWAY_IP dev ens3 proto static src Unreleased_EIP),DNS 解析将按预期运行。
DNS 解析成功后,使用的默认路由是:
default via GATEWAY_IP dev ens3 proto static src 112.*.*.2
src 地址可以是任何未发布的弹性 IP (EIP)。