当默认网关无法访问时,所有网络接口上的域名解析都会失败

当默认网关无法访问时,所有网络接口上的域名解析都会失败

我在Linux中配置了两个同时运行的网络接口:

  • 无线网络(wlan0)
  • LTE 调制解调器(调制解调器 1)

wlan0 接口在路由表中具有更高的优先级(更低的度量)(输出ip route

default via 192.168.36.1 dev wlan0 metric 600 
default dev modem1 scope link metric 1144 

/etc/resolv.conf 将 Google DNS 服务器作为第一个名称服务器(第二个条目是 WiFi 路由器的网关):

nameserver 8.8.8.8
nameserver 192.168.36.1

我通常可以通过两个接口 ping 任何域

ping -I wlan0 google.com  # Success
ping -I modem1 google.com  # Success

现在回到问题:WiFi连接信号变差,网关192.168.36.1无法访问,但是wlan0接口仍然处于打开状态,并且仍然有 IP 地址。这是输出ip route- 注意链接断开为了wlan0

default via 192.168.36.1 dev wlan0 metric 600 linkdown
default dev modem1 scope link metric 1144

在这种情况下ping使用wlan0不再起作用,但使用调制解调器1可以工作,但是只有当我提供 IP 地址时它才可以工作:

ping -I wlan0 8.8.8.8  # FAIL
ping -I modem1 8.8.8.8  # Success

以下操作(以及任何连接到任何域的尝试)均会失败,并出现“名称解析暂时失败”:

ping -I modem1 google.com  # FAIL

如果我设置wlan0接口关闭,名称解析工作正常(请注意,这也会从上面的路由表中删除第一行)。

我认为可能发生的情况是,名称解析不是通过调制解调器1接口,但它只使用路由表,在这种情况下,它最终会到达无法到达的网关wlan0因为这是度量值最低的路由。只有 ping 本身会通过调制解调器1,成功了。

这种假设在某种程度上是正确的吗?如果是,那么如何才能真正通过调制解调器1界面?

答案1

这解决了我的问题: https://unix.stackexchange.com/questions/398810/default-route-with-linkdown

默认情况下,带有链接断开不会被忽略,因此名称解析仍然尝试通过不可达的路由进行。

相关内容