Debian 從不在 resolv.conf 中使用路由器閘道位址

Debian 從不在 resolv.conf 中使用路由器閘道位址

Debian 從不在 resolv.conf 中使用路由器閘道位址

當我重新啟動電腦或執行時,如何將 Debian 設定為(從不使用路由器作為網域解析器)不在 /etc/resolv.conf 中顯示路由器閘道位址(名稱伺服器 192.168.1.1)/sbin/dhclient

我只使用 /etc/dhcp/dhclient.conf 中的一行

prepend domain-name-servers x.x.x.x,y.y.y.y,z.z.z.z;

這是我的 /etc/network/interfaces 檔案:

 auto eth0 
 iface eth0 inet static

 address 192.168.1.170
 netmask 255.255.255.0
 network 192.168.1.0
 broadcast 192.168.1.255
 getaway 192.168.1.1
 up route add -net default gw 192.168.1.1 netmask 0.0.0.0 eth0

 dns-nameservers x.x.x.x y.y.y.y z.z.z.z

如果我執行 /sbin/dhclient /etc/init.d/networking restart

我的 /etc/resolv.conf 包含:

nameserver x.x.x.x
nameserver y.y.y.y
nameserver z.z.z.z
nameserver 192.168.1.1

答案1

首先,請清理您的配置。您的eth0介面應該配置靜態 IP 位址還是 DHCP?如果是靜態的,為什麼要跑步dhclient?如果是 DHCP,為什麼要/etc/network/interfaces列出靜態 IP 參數而iface eth0 inet static不是iface eth0 inet dhcp?此外,您沒有理由需要透過up route命令新增預設路由,因為您已經將預設路由指定為gateway參數。

現在請記住,根據名稱,prepend domain-name-servers將 DNS 伺服器新增到 DHCP 伺服器提供的清單中。它不會取代它們。

我建議不要要求自dhclient訂您要使用的名稱伺服器,resolvconf而是使用框架。resolvconf協調所有不同可能的 DNS 名稱伺服器資訊來源(包括在一個或多個網路介面上執行的單獨 DHCP 用戶端、要用作解析器的本機 DNS 伺服器以及靜態設定),並集中建置單一一致/etc/resolv.conf檔案。這比讓幾件不同的事情一起管理/etc/resolv.conf並讓它們互相踐踏試圖做到這一點要好得多。

resolvconf如果尚未安裝軟體包,請安裝軟體包。這將自動停用dhclinent/etc/resolv.conf文件的直接清理。

現在您的要求是您不想使用 DHCP 伺服器提供的名稱伺服器,因此請註釋eth*中讀取的行/etc/resolvconf/interface-order。請務必同時註釋文件的最後一行*,否則eth0仍將被考慮。

接下來,您想要使用一組靜態配置的名稱伺服器。由於它們是系統全域的(如果有任何給定接口,則與狀態無關),因此您可以將它們添加為 lo 接口上的名稱伺服器/etc/network/interfaces

iface lo inet loopback
    dns-nameservers x.x.x.x y.y.y.y z.z.z.z

然後ifdown lo; ifup lo激活這個。

答案2

另外一點:g埃塔方式 192.168.1.1 應該是 g方式 192.168.1.1 (這可能是為什麼你必須添加預設路由才能讓任何東西正常工作?)

答案3

如果可以避免,請根本不要將網關用作解析器。

他們在 DNS 代理方面出了名的錯誤 - 請參閱 RFC 5625。

您擁有一個功能完美的 Linux 機器 - 只需在其上放置一份 BIND 甚至更好的「Unbound」副本。

ObDisclaimer - 我寫了那個 RFC。

相關內容