我的 DNS 伺服器是192.168.1.152
.
此 DNS 由 DHCP 提供給用戶端。我的 LAN 上的 Windows 用戶端可以使用該 DNS 正確解析名稱,但我的 Ubuntu VM 卻不能。
VM 設定了橋接網絡,並正確提供了 DNS 伺服器,但 nslookup 或瀏覽器無法解析我的本機主機名稱。
這是nslookup
我的本地域之一:
# nslookup unraid.local
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find unraid.local: SERVFAIL
以下是使用我的 DNS 伺服器應該解析的內容:
# nslookup unraid.local 192.168.1.152
Server: 192.168.1.152
Address: 192.168.1.152#53
Name: unraid.local
Address: 192.168.1.152
/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
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.
nameserver 127.0.0.53
我運行了那個命令。在 DNS 伺服器下,令人困惑的是,它指定了正確的伺服器(和我的預設網關)。
root@ubuntu:~# systemd-resolve --status
Global
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
20.172.in-addr.arpa
21.172.in-addr.arpa
22.172.in-addr.arpa
23.172.in-addr.arpa
24.172.in-addr.arpa
25.172.in-addr.arpa
26.172.in-addr.arpa
27.172.in-addr.arpa
28.172.in-addr.arpa
29.172.in-addr.arpa
30.172.in-addr.arpa
31.172.in-addr.arpa
corp
d.f.ip6.arpa
home
internal
intranet
lan
local
private
test
Link 2 (ens33)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
LLMNR setting: yes
MulticastDNS setting: no
DNSSEC setting: no
DNSSEC supported: no
DNS Servers: 192.168.1.152
192.168.1.1
我不想在設定檔中「硬編碼」DNS 伺服器的 IP,因為當我更改網路時我將無法解析。
我怎麼才能讓resolvconf和NetworkManager自動地/etc/resolv.conf
在?中設定 DHCP 伺服器的 IP
答案1
答案2
嘗試編輯/etc/systemd/resolved.conf
,新增您想要的 DNS 伺服器:
改變這個:
[Resolve]
#DNS=
對此(但使用你想要的 - 這是一個例子):
[Resolve]
DNS=192.168.1.152
之後,重新啟動服務:
service systemd-resolved restart
當你檢查狀態時你應該看到
$ systemd-resolve --status
Global
DNS Servers: 192.168.1.152
DNSSEC NTA: 10.in-addr.arpa
16.172.in-addr.arpa
168.192.in-addr.arpa
17.172.in-addr.arpa
18.172.in-addr.arpa
19.172.in-addr.arpa
答案3
我終於在 ubuntu 17.10 上找到了這個問題的解決方案。預設情況下,這個版本的 Ubuntu 使用systemd-resolved
,我希望它在下一個版本中能夠保持穩定。
若要使用自訂 dns 而不是本機 systemd 解析的緩存,請執行以下操作:
新增的名稱伺服器。以 sudoer 身分編輯該檔案
/etc/systemd/resolved.conf
。在這裡我註解掉了 DNS 條目並放置了我的 dns[Resolve] DNS=10.96.0.10 8.8.8.8 8.8.4.4
取消實際的符號鏈接
/etc/resolv.conf
- 建立一個新的符號鏈接
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
- 重新啟動服務
sudo service systemd-resolved restart
- 重新啟動網路管理員
sudo systemctl restart networking
現在,如果您挖掘到新增 DNS 提供的名稱,您應該會看到記錄已解析dig nexus.default.svc.cluster.mydomain
/etc/nsswitch.conf
最後一步是透過將 dns 放在 mdns4_minimal 之前來更新 中的解析順序
hosts files dns mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] myhostname
答案4
在我的系統上,我發現了一個錯誤的符號連結:/etc/resolv.conf
是一個指向的符號鏈接/run/systemd/resolve/stub-resolv.conf
該文件僅包含一行:
nameserver 127.0.0.53#53
結果,本地網路的 DNS 查找經常遺失。
所以,我改為/etc/reolv.conf
指向/run/systemd/resolve/resolv.conf
現在可以正常工作了。