Centos
您可以將不同的 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 vms。eth1 是閉路 vlan,而 eth0 是公網。我遇到的問題是我的centos客戶端會根據首先出現的介面自動選擇它使用的dns伺服器。我知道當您在 /etc/network-scripts/ifcfg-eth0 或 /etc/network-scripts/ifcfg-eth1 中定義 dns 伺服器時,它會在 /etc/resolv.conf 中將其列印出來,但我找不到解決方法為了這。有誰知道您是否可以將不同的 DNS 伺服器分配給不同的網路介面?
不,由於地址解析的工作方式,這根本無法完成。
當機器上的程序想要連接到example.com時,它首先呼叫類似
getaddrinfo
or的庫常式gethostbyname
。這些常式的目的是將 DNS 名稱轉換為 IP 地址。因此他們查看/etc/resolv.conf
,讀取 DNS 伺服器的 IP 地址,向該伺服器發送 DNS 查詢數據包,接收回复並將生成的 IP 地址返回給呼叫者。此時,該程序獲取解析的 IP 地址並將其傳遞給系統呼叫,例如
connect
. 這是核心介入的地方,查看其路由表並確定使用哪個介面連接到該地址。所以簡而言之,DNS 設置不能依賴於用於通信的介面,因為該介面本身的選擇取決於 DNS 設置。