發生 Name or service not known?手動設定 Linux DNS 吧!

最近在用 Odroid hc4 自己建 NAS 的時候發現,剛開機的時候對外連線都正常,但使用一段時間後 DNS 設定似乎會不見,我們一起來看看該如何解決。

系統狀況

  1. 使用 hc4 內建 petitboot  線上安裝的 Debian 10,沒有安裝桌面環境,所以不會有 NetworkManager 幫你管理網路連線。
  2. 發生連線問題時,同一內網的電腦可以 ssh 連線到 hc4 => 表示對內連線正常,網路線連接路由沒有問題
  3. 如果使用 docker pull image 會回覆這個錯誤
ERROR: Get https://registry-1.docker.io/v2/: dial tcp: lookup registry-1.docker.io on [::1]:53: read udp [::1]:44732->[::1]:53: read: connection refused
  1. 如果使用 ping google.com 會回覆這個錯誤
j@ordroid-hc4:~$ ping google.com
ping: google.com: Name or service not known
  1. 如果直接 ping ip 則可以正常
j@ordroid-hc4:~$ ping 172.217.161.206
PING 172.217.161.206 (172.217.161.206) 56(84) bytes of data.
64 bytes from 172.217.161.206: icmp_seq=1 ttl=57 time=45.9 ms
64 bytes from 172.217.161.206: icmp_seq=2 ttl=57 time=44.5 ms

判斷是 DNS 設定跑掉,目前不清楚為何會這樣,只好直接在 /etc/resolv.conf 增加以下幾行,強迫給定 nameserver 

nameserver 8.8.8.8
nameserver 8.8.4.4

此時再 ping 就會正常了

j@ordroid-hc4:~$ ping google.com
PING google.com (172.217.24.14) 56(84) bytes of data.
64 bytes from tsa01s07-in-f14.1e100.net (172.217.24.14): icmp_seq=1 ttl=115 time=6.08 ms
64 bytes from tsa01s07-in-f14.1e100.net (172.217.24.14): icmp_seq=2 ttl=115 time=9.03 ms

Docker 也能正常 pull image

如果大家有遇到類似的問題可以試試修改 /etc/resolv.conf 看能不能解決!

延伸閱讀:
自己 DIY 一個 NAS 吧! – 安裝 OpenMediaValue 到 ordroid HC4
關掉 Network Manager 自己手動設定 static ip 吧!

Written by J
雖然大學唸的是生物,但持著興趣與熱情自學,畢業後轉戰硬體工程師,與宅宅工程師們一起過著沒日沒夜的生活,做著台灣最薄的 intel 筆電,要與 macbook air 比拼。 離開後,憑著一股傻勁與朋友創業,再度轉戰軟體工程師,一手扛起前後端、雙平台 app 開發,過程中雖跌跌撞撞,卻也累計不少經驗。 可惜不是那 1% 的成功人士,於是加入其他成功人士的新創公司,專職開發後端。沒想到卻在採前人坑的過程中,拓寬了眼界,得到了深層的領悟。