最近使用了最新版的ubuntu 18.04運行一些服務,然后發現服務器經常出現網絡不通的情況,主要是一些域名無法解析。
檢查/etc/resolv.conf,發現之前修改的nameserver總是會被修改為127.0.0.53,無論是改成啥,過段時間,總會變回來。
查看/etc/resolv.conf這個文件的注釋,發現開頭就寫着這么一行:
# This file is managed by man:systemd-resolved(8). Do not edit.
這說明這個文件是被systemd-resolved
這個服務托管的。
通過netstat -tnpl| grep systemd-resolved
查看到這個服務是監聽在53號端口上。
查了下,這個服務的配置文件為sudo leafpad /etc/systemd/resolved.conf
,大致內容如下:
[Resolve] DNS=1.1.1.1 1.0.0.1 #FallbackDNS= #Domains= LLMNR=no #MulticastDNS=no #DNSSEC=no #Cache=yes #DNSStubListener=yes
如果我們要想讓/etc/resolve.conf
文件里的配置生效,需要添加到systemd-resolved的這個配置文件里DNS
配置項(如上面的示例,已經完成修改),然后重啟systemd-resolved服務即可。
另一種更簡單的辦法是,我們直接停掉systemd-resolved服務,這樣再修改/etc/resolve.conf
就可以一直生效了。
chongqi cmd
sudo systemctl restart systemd-resolved
clean dns
sudo /etc/init.d/dns-clean start
停止方法
sudo systemctl disable systemd-resolved.service
sudo service systemd-resolved stop
2. sudo ip addr show
3. sudo ip route show
4. sudo tracepath forum.ubuntu.org.cn
5. sudo traceroute forum.ubuntu.org.cn
從 NetworkManager 切換到 Systemd-networkd
從 NetworkManager 切換到 systemd-networkd 其實非常簡答(反過來也一樣)。
首先,按照下面這樣先停用 NetworkManager 服務,然后啟用 systemd-networkd。
$ sudosystemctl disable NetworkManager
$ sudosystemctl enable systemd-networkd
你還要啟用 systemd-resolved 服務,systemd-networkd用它來進行域名解析。該服務還實現了一個緩存式 DNS 服務器。
$ sudosystemctl enable systemd-resolved
$ sudosystemctl start systemd-resolved
當啟動后,systemd-resolved 就會在 /run/systemd 目錄下某個地方創建它自己的 resolv.conf。但是,把 DNS 解析信息存放在 /etc/resolv.conf 是更普遍的做法,很多應用程序也會依賴於 /etc/resolv.conf。因此為了兼容性,按照下面的方式創建一個到 /etc/resolv.conf 的符號鏈接。
$ sudorm/etc/resolv.conf
$ sudoln-s /run/systemd/resolve/resolv.conf /etc/resolv.conf
https://www.linuxidc.com/Linux/2015-11/125430.htm
sudo dpkg-reconfigure resolvconf
sudo systemctl restart systemd-resolved
/etc/resolv.conf
nameserver 8.8.8.8 << or another if you don't trust google nameserver 8.8.4.4
sudo systemctl disablesystemd-resolved.servicesudo service systemd-resolved stop
https://superuser.com/questions/1153203/ubuntu-17-04-systemd-resolved-dns-lookups-randomly-fail
Ubuntu 17.04 systemd-resolved DNS lookups randomly fail