可以将不同的 DNS 服务器分配给不同的网络接口吗?

可以将不同的 DNS 服务器分配给不同的网络接口吗?

我试图让我的 eth1 使用 10.50.1.11 和 10.50.1.12 dns 服务器,而我的 eth0 接口使用 8.8.8.8 和 8.8.4.4 dns 服务器。我在 xenserver 6.5 中运行 centos 7 虚拟机。 eth1是闭路vlan,eth0是公共网络。我遇到的问题是我的 centos 客户端根据首先出现的界面自动选择它使用的 dns 服务器。我知道当您在 /etc/network-scripts/ifcfg-eth0 或 /etc/network-scripts/ifcfg-eth1 中定义 dns 服务器时,它会将其打印在 /etc/resolv.conf 内部,但我找不到解决方法为了这。有谁知道是否可以将不同的 DNS 服务器分配给不同的网络接口?

答案1

不,由于地址解析的工作方式,这根本无法完成。

当机器上的进程想要连接时,比如说,example.com,它首先调用一个库例程,如getaddrinfoor gethostbyname。这些例程的目的是将 DNS 名称转换为 IP 地址。因此,他们查看/etc/resolv.conf、读取 DNS 服务器的 IP 地址,向该服务器发送 DNS 查询数据包,接收回复并将结果 IP 地址返回给调用者。

此时,该进程获取已解析的 IP 地址并将其传递给系统调用,例如connect.这是内核介入的地方,查看其路由表并找出使用哪个接口来连接到该地址。

简而言之,DNS 设置根本不能取决于用于通信的接口,因为该接口本身的选择取决于 DNS 设置。

相关内容