我有一个连接到 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 myserver
IP 后,系统显示:
PING myserver (192.168.1.1) 56(84) 字节数据。
因此,它正在尝试 ping 您之前设置的地址。