ubuntu wifi變成問號 網速很慢


問題描述:

系統:ubuntu 19.10
發現問題:裝好系統后wifi沒有問題,大概一個月后wifi抽風了,頂部欄wifi圖標變成了一個問號,如果這樣能用也好。但是不能打開網頁,百度都打不開。在終端里面Ping了一下百度,有時能Ping通,但丟包嚴重;再者根本就Ping不通,錯誤提示:Temporary failure in name resolution,域名解析失敗。然后百度,發現了一篇文章,雖然沒有從這個文章直接解決,但一個評論幫我解決了這個問題。從這個評論中得到三個鏈接:🔗1🔗2🔗3

  1. 鏈接1解決了問題,說明了:ubuntu默認安裝的DNS解析工具systemd-resolved存在的問題,以及它的替代者:unbound
  2. 鏈接2說明wifi問號是一個bug
  3. 鏈接3說明wifi問號問題不僅僅在ubuntu,其它linux發行版也存在。

解決方法:

Step1:安裝unbound:

sudo apt-get install unbound

如果系統域名解析失敗或不能成功聯網,可以在/etc/resolv.conf 文件中指定一個DNS,可以用114.114.114.114;
具體步驟:

1 sudo vim /etc/resolv.conf
2 刪除文件中的內容,添加一行:nameserver 114.114.114.114

添加114.114.114.114作為DNS

Step2:禁用默認的域名解析工具systemd-resolved並停止正在運行着的程序

1 sudo systemctl disable systemd-resolved.service
2 sudo systemctl stop systemd-resolved.service

Step3:配置NetworkManager使其使用unbound作為系統的域名解析工具

打開/etc/NetworkManager/NetworkManager.conf加入一行如下圖:
編輯/etc/NetworkManager/NetworkManager.conf文件
緊跟plugins=…下面一行加上dns=unbound.

Step4:啟用新安裝的域名解析工具unbound,並配置其配置文件

雖然安裝后默認啟用,但為了以防萬一,手動啟用:

1 sudo systemctl enable unbound-resolvconf
2 sudo systemctl enable unbound
3 sudo vim /etc/unbound/unbound.conf,在其配置文件追加以下manual中的示例配置文件內容,man unbound.conf 查看其manual頁
            directory: "/etc/unbound"
            username: unbound
            # make sure unbound can access entropy from inside the chroot.
            # e.g. on linux the use these commands (on BSD, devfs(8) is used):
            # mount --bind -n /dev/random /etc/unbound/dev/random
            # and mount --bind -n /dev/log /etc/unbound/dev/log
            chroot: "/etc/unbound"
            # logfile: "/etc/unbound/unbound.log" #uncomment to use logfile.
            pidfile: "/etc/unbound/unbound.pid"
            # verbosity: 1 # uncomment and increase to get more logging.
            # listen on all interfaces, answer queries from the local subnet.
            interface: 0.0.0.0
            interface: ::0
            access-control: 10.0.0.0/8 allow #允許網卡通過哪個網段的流量,根據需要填寫。

man unbound.conf的內容

Step5:配置DNS,從manual頁查看配置,man unbound

man unbound的內容
從man的結果看,要使用本機的unbound程序來做域名解析,需要在/etc/resolv.conf中加入一行:nameserver 127.0.0.1;接下來sudo vim /etc/resolv.conf,加進去進行了。但是在/etc/resolv.conf中所做的編輯會在重啟機器后被覆蓋。打開resolv.conf:
resolv.conf文件的內容
得知resolv.conf由resolvconf程序產生,我們可以查看resolvconf的manual頁,man 8 resolvconf:
/etc/resolvconf/resolvconf.d/tail文件的作用
從resolvconf的manual頁中找到/etc/resolvconf/resolvconf.d/tail文件,加入它里面的內容會被追加到/etc/resolv.conf文件中,因此我們需要編輯的是/etc/resolvconf/resolvconf.d/tail文件,在其中加入DNS的鍵值對:nameserver 127.0.0.1;
Note: 在實際測試時發現只加入127.0.0.1會有一定幾率不起作用,因此我們需要再加入至少一個能用的DNS,我搜集了以下:

  1. 騰訊的公用免費DNS: 119.29.29.29(首選)、182.254.116.116(備選)
  2. 阿里的公用免費DNS: 233.5.5.5(首選)、233.6.6.6(備選)
  3. 國內移動、電信和聯通通用的公用免費DNS: 114.114.114.114
  4. Cloudflare的公用免費DNS: 1.1.1.1(首選)、1.0.0.1(備選)

Step6:重啟系統使更改生效

sudo init 6

Note: 如果重啟系統后發現搜索不到wifi,重啟network-manager服務

sudo systemctl restart network-manager.service


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM