為每個網卡介面(eth0 / eth1)配置一個 DNS 伺服器?
您將如何在 RHEL/Centos 6 上為每個 NIC(eth0 與 eth1)介面配置 DNS 名稱伺服器?
例如
eth0 在子網 10.0.0.1/24
eth1 在子網 192.168.0.1/24
通過 eth0 發送的任何請求都應使用 DNS 伺服器 10.0.0.2。
通過 eth1 發送的任何請求都應使用 DNS 伺服器 192.168.0.2。
我已經添加:
DNS1:10.0.0.2 > /etc/sysconfig/network-scripts/ifcfg-eth0
DNS1:19.168.0.2 > /etc/sysconfig/network-scripts/ifcfg-eth1
但是這些值會被忽略,並且它始終預設為 resolv.conf “nameserver 10.0.0.2” 中的設置。當 eth0 關閉時,通過 eth1 發送連接……但是 DNS 無法再解析,因為它試圖到達 10.0.0.2 .
- 如何讓它尊重 ifcfg 中的 DNS 設置,而不是 resolv.conf 的預設設置?
- 或者如何為 eth0 和 eth1 配置不同的 DNS 名稱伺服器?
- 有沒有更好的方法來處理這個?
更新
我們有兩個 VLAN,每個 VLAN 在各自的子網上都有自己的 DNS 伺服器。這些處理本地 DNS(example.loc、guest.app 等)的查找,以及在需要時進行轉發。
它們是位於兩個獨立物理位置的兩台獨立伺服器。如果可能的話,我寧願不在兩個子網中執行一台伺服器(一個處理敏感數據)。
如果 eth0 出現故障,我需要 eth1 繼續能夠發出 DNS 請求。
我曾考慮將兩個 IP 添加到 resolv.conf,然後如果它無法到達第一個子網中的伺服器,則讓它失敗,但這似乎不優雅(當 eth0 時,必須等待第一台伺服器在每次 DNS 查詢時超時)向下)。
你不能輕易地做你想做的事。
或者如何為 eth0 和 eth1 配置不同的 DNS 名稱伺服器?
主機名的名稱查找是通過標準系統庫進行的,並且與特定的“連接”沒有任何關聯。事實上,在 DNS 查詢發生時,並沒有連接,因為您的應用程序甚至還沒有弄清楚它要連接的地址(這就是它首先使用 DNS 的原因)。
如何讓它尊重 ifcfg 中的 DNS 設置,而不是 resolv.conf 的預設設置?
Linux 解析器只有一個全域配置 (
/etc/resolv.conf
)。沒有任何類型的每個介面、每個域或每個連接的設置。中的設置/etc/sysconfig/network-scripts/...
僅用於填充/etc/resolv.conf
,通常如果您在這些文件中指定DNS1
和DNS2
,最後出現的界面將是您在 中看到的內容/etc/resolv.conf
。有沒有更好的方法來處理這個?
你能告訴我們你真正想要完成什麼嗎?如果您能告訴我們更多關於您的具體情況,我們或許可以提出更好的解決方案。