将主机名动态解析为多个优先 IP

将主机名动态解析为多个优先 IP

我有一个连接到 VPN 的 Linux 服务器。

在家里,我在笔记本电脑上使用相同的 VPN,同时通过无线路由器直接连接到服务器。

为此,我的/etc/hosts文件中有两个条目:

192.168.1.1 myserver
10.1.1.1 myserver.vpn

这样,我可以选择如何使用不同的主机名手动连接。

我的问题是:如何使用相同的主机名动态连接?理想情况下,笔记本电脑会根据所连接的网络接口知道要使用哪个 IP,优先使用真实接口而不是虚拟接口。如果某个地址不可用,我希望它尝试另一个地址!

我尝试在笔记本电脑上使用 dnsmasq 设置此功能,其中包含多个主机记录和localise-queries选项。在我的电脑中,dnsmasq.conf我有:

host-record=myserver,10.1.1.1
host-record=myserver,192.168.1.1

当我使用时dig myserver +short我得到:

10.1.1.1
192.168.1.1

第一次

192.168.1.1
10.1.1.1

第二次,依此类推……

但如果我改变静态地址我的服务器192.168.1.2,然后从笔记本电脑(192.168.1.3)执行ping myserver,我得到:

PING myserver (192.168.1.1) 56(84) bytes of data.
From localhost (192.168.1.3) icmp_seq=1 Destination Host Unreachable
From localhost (192.168.1.3) icmp_seq=2 Destination Host Unreachable
From localhost (192.168.1.3) icmp_seq=3 Destination Host Unreachable
...

有几个问题:

(1)为什么笔记本电脑不尝试另一条路由,即使 dnsmasq 提供了一条路由? (2)如何根据正在使用的网络连接确定路由的优先级?

顺便说一句,我尝试使用 NetworkManager 并为每个连接自定义 DNS 条目(例如,使用路由器的 DNS 服务器解析 LAN 上的主机名,使用笔记本电脑的本地 dnsmasq 查找 VPN 上的主机名)。好吧,这似乎是个好主意,但每次我激活一个接口时,它都会覆盖其他接口的 DNS 设置。这不是我想要的!

问题 (3):有没有更好的方法来解决这个问题?

答案1

我可能在这里遗漏了一些东西,但是,你的计算机怎么知道在你更改 IP 后它myserver不再有 IP呢?192.168.1.1

更改ping myserverIP 后,系统显示:

PING myserver (192.168.1.1) 56(84) 字节数据。

因此,它正在尝试 ping 您之前设置的地址。

相关内容