我跟大家講一個我的小故事:
現在,我在實驗室中使用 Ubuntu 16.04 LTS 發行版。安裝 Ubuntu 後,我嘗試透過谷歌搜尋來檢查我的網路存取情況。然而那是不可能的。首先我嘗試 ping Google 的伺服器:
ping 8.8.8.8
第一次 ping 成功。其次,我嘗試 ping 雅虎網站:
ping yahoo.com
答案是名稱未知,所以我決定檢查 /etc 中的 resolv.conf 檔案:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
search <www.some-sites>
問題出在名稱伺服器。我的合作者告訴我,他們已經複製了 /etc/resolvconf/resolv.config.d/base 中的一些行:
domain bla.bla
search <www.some-sites>
nameserver 111.222.3333.4444
nameserver 555.666.7777.8888
他們建議我重新啟動或只運行以下命令
resolvconf --enable-updates
resolvconf -u
當我檢查 /etc/resolv.conf 時,它又與開始時相同
Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.1.1
search <www.some-sites>
那麼我如何輸入網域名稱和我的兩個新的特定名稱伺服器?我真的不知道如何配置介面以及是否可能。我也無法理解為什麼會發生這種情況,因為 base 是一個應該複製到 resolv.conf 檔案中的檔案。你能解釋為什麼會發生這個錯誤嗎?
謝謝
答案1
NetworkManager 是(透過 resolvconf 實用程式)將位址插入127.0.1.1
到resolv.conf
.只有當 NM 配置為啟動 dnsmasq 程式的執行個體以充當本機轉送名稱伺服器時,才會插入該位址。此 dnsmasq 實例偵聽位址 127.0.1.1 的查詢。
如果您想查看DNS
目前使用的女巫,請輸入命令
nmcli device show <interfacename> | grep IP4.DNS
您可以DNS
為每個連線設定不同的參數
如果您不想使用本機轉送名稱伺服器,則將 NetworkManager 設定為不啟動 dnsmasq 實例,也不插入該位址。註解掉/etc/NetworkManager/NetworkManager.conf
該行dns=dnsmasq
sudo nano /etc/NetworkManager/NetworkManager.conf
[main]
plugins=ifupdown,keyfile,ofono
#dns=dnsmasq
並重新啟動 NetworkManager 服務。
sudo systemctl restart network-manager
在此模式下,NetworkManager 更新/etc/resolv.conf
(仍透過 resolvconf)以包含 NetworkManager 用於活動連線的名稱伺服器位址。
如果您想要停用 resolvconf 更新 resolv.conf 的機制並僅使用靜態 resolv.conf 文件,請執行下列操作。
sudo rm -f /etc/resolv.conf # Delete the symbolic link
sudo nano /etc/resolv.conf # Create static file
# Content of static resolv.conf
nameserver 8.8.4.4
nameserver 8.8.8.8