
瀏覽器之DNS解析過程詳解
在Linux上設置自定義DNS服務器可以提高性能和安全性,甚至可以通過DNS阻止一些使用地理屏蔽的網(wǎng)站。有幾種方法可以做到這一點,包括在許多Linux發(fā)行版中包括的Network ManagerGUI,如Debian、Ubuntu和衍生物,以及現(xiàn)在作為標準包含在Ubuntu 20.04中的Netplan;或者使用resolv.conf(不是直接,而是通過head文件)。
/etc/resolv.conf是DNS名稱解析庫的主要配置文件,解析器是C庫中的一組函數(shù),提供對Internet域名系統(tǒng)(DNS)的訪問,它的功能是檢查/etc/hosts文件中的條目,或多個DNS名稱服務器,或使用主機的網(wǎng)絡信息服務(NIS)數(shù)據(jù)庫。
在使用systemd(系統(tǒng)和服務管理器)的現(xiàn)代Linux系統(tǒng)上,DNS或名稱解析服務通過systemd-resolved服務提供給本地應用程序,默認情況下,該服務有四種不同的方式來處理域名解析,默認模式下使用systemd DNS stub文件(
/run/systemd/resolve/stub-resolv.conf)。
如果你運行l(wèi)s命令查看/etc/resolv.conf,你可以看到是一個符號鏈接指向
/run/systemd/resolve/stub-resolv.conf
$ ls -l /etc/resolv.conf
lrwxrwxrwx 1 root root 29 Feb 15 2018 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
因為/etc/resolv.conf是由systemd-resolved服務間接管理的.在某些情況下,是通過network service(通過使用initscripts或NetworkManager),用戶手動做的任何更改都不能永久保存或只持續(xù)一段時間。
在本文中,我們將展示如何安裝和使用resolvconf程序在/etc/resolv.conf文件中設置永久DNS域名服務器.
resolv.conf文件在每次引導時都會被覆蓋,所以我們不能直接編輯這個文件,但是我們可以通過編輯head和base文件來創(chuàng)建resolv.conf。我們編輯head文件,以便每次啟動resolv.conf在頂部用我們自定義的DNS server。
為什么要編輯/etc/resolv.conf文件?
主要原因可能是系統(tǒng)DNS設置配置錯誤,或者您喜歡使用特定名稱的服務器或您自己的服務器,下面的cat命令顯示了我的Ubuntu系統(tǒng)的/etc/resolv.conf文件中的默認名稱服務器。
$ cat /etc/resolv.conf
nameserver 127.0.0.53
在這種情況下,我們訪問域名就會出現(xiàn)解析失敗。
因此,當用戶試圖手動設置DNS服務器時,更改不會持續(xù)很長時間,或者在重新啟動后會撤銷。要解決這個問題,您可以安裝并使用reolvconf實用程序使更改永久性。
nameserver 8.8.4.4
nameserver 8.8.8.8
在Ubuntu和Debian中安裝resolvconf軟件包
取決于你使用的是哪個版本的Ubuntu/Debian, resolvconf可能安裝也可能沒有安裝,所以在繼續(xù)之前讓我們檢查一下
sudo systemctl status resolvconf.service
如果您得到以下消息”Unit: resolvconf.service could not be found”(服務未找到),那么你就需要安裝resolvconf
如果您得到以下消息 “Active: active (exited)” ,那么說明 resolvconf已經(jīng)安裝,則可以跳過后面的安裝步驟。
然后通過運行以下命令更新系統(tǒng)軟件包,然后從官方存儲庫安裝resolvconf。
sudo apt update
sudo apt install resolvconf
一旦resolvconf安裝完成,systemd將觸發(fā)resolvconf。服務將自動啟動和啟用。要檢查它是否啟動并運行,請執(zhí)行以下命令
sudo systemctl status resolvconf.service
如果由于未知原因?qū)е路瘴醋詣訂雍蛦⒂茫梢酝ㄟ^如下方式啟動和啟用服務
sudo systemctl start resolvconf.service
sudo systemctl enable resolvconf.service
sudo systemctl status resolvconf.service
在最后一條命令之后,您應該看到“Active: Active (exited)”消息。
在Ubuntu和Debian中設置永久DNS服務器
接下來我們打開
/etc/resolvconf/resolv.conf.d/head配置文件
sudo nano /etc/resolvconf/resolv.conf.d/head
然后添加下面兩行(我使用谷歌的DNS服務器)
nameserver 8.8.8.8
nameserver 8.8.4.4
然后Ctrl+o?保存,?Ctrl+x退出,重新啟動resolvconf服務或重啟系統(tǒng).
$ sudo systemctl start resolvconf.service
我們需要更新resolv.conf以使用新的名稱服務器。輸入以下代碼
sudo resolvconf --enable-updates
sudo resolvconf -u
現(xiàn)在,當我們查看/etc/resolv.conf文件時,nameserver條目就被寫入了。
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 127.0.0.53
免費DNS提供商
在更改DNS服務器之前,您需要找到第三方DNS提供商,有很多好的(和免費的)服務可用。我推薦谷歌DNS,這是我使用的,從來沒有出現(xiàn)過問題。我將在這里列出最流行的DNS提供商
- Primary IPv4:?8.8.8.8
- Secondary IPv4:?8.8.4.4
- Preferred IPv6:?2001:4860:4860::8888
- Alternate IPv6:?2001:4860:4860::8844
- OPENDNS
- Primary:?208.67.222.222
- Secondary:?208.67.220.220
- Preferred IPv6:?2620:0:ccc::2
- Alternate IPv6:?2620:0:ccd::2
- DNS.WATCH
- Primary:?84.200.69.80
- Secondary:?84.200.70.40
- LEVEL3
- Primary:?209.244.0.3
- Secondary:?209.244.0.4
- NORTON
- Primary:?199.85.126.10
- Secondary:?199.85.127.10
- COMMODO
- Primary:?8.26.56.26
- Secondary:?8.20.247.20
- VERISIGN
- Primary:?64.6.64.6
- Secondary:?64.6.65.6
- MORE SERVERS…
- See:Free and Public DNS Server List (Valid July 2021)
- See:Public DNS Server List
版權聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至2705686032@qq.com 舉報,一經(jīng)查實,本站將立刻刪除。文章鏈接:http://m.z1146.cn/zx/yunwei/4240.html