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。