本地配置 hosts
文件和 DNS 解析密切相關(guān),它們都涉及到將域名解析為 IP 地址的過程,但它們的作用機制和優(yōu)先級有所不同。下面詳細(xì)講解 hosts
文件的作用、DNS 解析的流程,以及它們之間的關(guān)系。
1. 什么是 hosts
文件?
hosts
文件是一個本地配置文件,它用于手動指定域名與 IP 地址的對應(yīng)關(guān)系,類似于一個本地 DNS 解析表。
hosts
文件的特點
- 是操作系統(tǒng)本地的靜態(tài)域名解析文件。
- 具有 最高優(yōu)先級,比 DNS 服務(wù)器解析優(yōu)先執(zhí)行。
- 僅對本機生效,無法影響網(wǎng)絡(luò)中的其他設(shè)備。
hosts
文件的默認(rèn)路徑
不同操作系統(tǒng) hosts
文件的路徑如下:
- Windows:
C:\Windows\System32\drivers\etc\hosts
- Linux / macOS:
/etc/hosts
示例 hosts
文件
127.0.0.1 localhost
192.168.1.100 test.local
8.8.8.8 google.com
作用
- 訪問
localhost
直接解析到127.0.0.1
(本機)。 - 訪問
test.local
時,解析到192.168.1.100
。 - 訪問
google.com
時,解析到8.8.8.8
,即強制指定 IP,而不是讓系統(tǒng)查詢外部 DNS。
2. 什么是 DNS 解析?
DNS(Domain Name System,域名系統(tǒng))是用于將域名解析為 IP 地址的網(wǎng)絡(luò)服務(wù)。它是一個層級分布式系統(tǒng),包含多個解析步驟。
DNS 解析流程
當(dāng)你在瀏覽器或終端訪問一個域名(如 example.com
)時,操作系統(tǒng)會按照以下步驟進(jìn)行解析:
瀏覽器緩存(Browser DNS Cache) 瀏覽器會緩存最近解析的 域名-IP 對應(yīng)關(guān)系,減少重復(fù)的 DNS 查詢,加快訪問速度。
優(yōu)先級
:如果瀏覽器緩存中有該域名的解析記錄,則不會繼續(xù)查詢 hosts 或 DNS 服務(wù)器。 有效期(TTL,Time To Live):瀏覽器的緩存時間通常較短,如 Chrome 可能在幾分鐘后自動過期。?? 如何清除瀏覽器緩存? Chrome:訪問 chrome://net-internals/#dns,點擊 Clear host cache。 Firefox:訪問 about:networking#dns,點擊 Clear DNS Cache。
檢查
hosts
文件(本地解析,優(yōu)先級高于 DNS 服務(wù)器查詢)。- 如果
hosts
文件中已有該域名的映射,則直接返回對應(yīng)的 IP 地址,結(jié)束解析過程。
- 如果
查詢本地 DNS 緩存(避免重復(fù)查詢,提高解析速度)。
- 系統(tǒng)會檢查本機 DNS 緩存(Windows 可用
ipconfig /displaydns
查看)。 - 如果緩存命中,則直接使用緩存的 IP。
- 系統(tǒng)會檢查本機 DNS 緩存(Windows 可用
請求本地 DNS 服務(wù)器(通常是 ISP 提供的)。
- 若
hosts
文件和本地緩存中都沒有找到,操作系統(tǒng)會向配置的 DNS 服務(wù)器(如8.8.8.8
、114.114.114.114
)發(fā)起查詢。
- 若
DNS 服務(wù)器遞歸查詢:
- 若本地 DNS 服務(wù)器無該域名的解析記錄,則逐級向上級 DNS 服務(wù)器查詢,直到獲取 IP 地址。
- 例如:
- 先查根 DNS 服務(wù)器 (
.
) - 根 DNS 服務(wù)器返回
.com
頂級域名服務(wù)器(TLD) .com
服務(wù)器返回example.com
的權(quán)威 DNS 服務(wù)器example.com
服務(wù)器返回最終 IP 地址
- 先查根 DNS 服務(wù)器 (
DNS 解析結(jié)果返回客戶端:
- 解析完成后,系統(tǒng)將 IP 地址返回給應(yīng)用程序,并緩存該解析結(jié)果。
3. hosts
文件與 DNS 解析的關(guān)系
hosts
文件 vs. DNS 解析
hosts 文件 | DNS 服務(wù)器解析 | |
---|---|---|
優(yōu)先級 | 優(yōu)先級高于 DNS,先查本地 hosts | hosts 解析失敗后才會請求 DNS |
生效范圍 | 僅作用于本機,不影響其他設(shè)備 | 適用于整個網(wǎng)絡(luò)或互聯(lián)網(wǎng) |
維護成本 | 需手動維護,適合臨時解析 | 自動更新,適合長期使用 |
適用場景 | 開發(fā)調(diào)試、屏蔽特定網(wǎng)站、內(nèi)網(wǎng)解析 | 互聯(lián)網(wǎng)訪問、動態(tài)解析 |
解析過程示例
假設(shè) hosts
文件中有以下記錄:
192.168.1.100 example.com
當(dāng)訪問 example.com
時:
- 系統(tǒng)先查
hosts
文件,發(fā)現(xiàn)匹配的192.168.1.100
,直接返回該 IP。 - 不會進(jìn)行 DNS 查詢,即使
example.com
的真實 IP 不是192.168.1.100
,也不會去 DNS 服務(wù)器獲取正確的 IP。
如果 hosts
文件中沒有 example.com
:
- 系統(tǒng)會查詢 本地 DNS 緩存,若緩存命中,則返回緩存的 IP。
- 否則,系統(tǒng)會向 配置的 DNS 服務(wù)器 發(fā)送查詢請求,獲取最終的 IP 地址。
4. hosts
文件的應(yīng)用場景
1. 本地開發(fā)和測試
將測試域名指向本機:
127.0.0.1 myproject.local
在瀏覽器輸入
myproject.local
,相當(dāng)于訪問127.0.0.1
,方便調(diào)試。將測試環(huán)境域名指向特定服務(wù)器:
192.168.1.50 test.example.com
讓
test.example.com
解析到內(nèi)網(wǎng)服務(wù)器,而不是公網(wǎng)服務(wù)器。
2. 跳過 DNS 解析
- 加速訪問某些網(wǎng)站(如果知道 IP,可以直接指定):
這樣訪問203.208.39.99 www.google.com
www.google.com
時,不再查詢 DNS,而是直接訪問203.208.39.99
。
3. 屏蔽特定網(wǎng)站
- 通過
hosts
屏蔽廣告、惡意網(wǎng)站:
這樣127.0.0.1 ads.example.com 127.0.0.1 tracking.example.com
ads.example.com
和tracking.example.com
都會解析到127.0.0.1
,阻止訪問。
4. 解決 DNS 解析錯誤
- 如果 ISP 提供的 DNS 解析錯誤,可以手動配置:
8.8.8.8 example.com
5. 修改 hosts
文件的注意事項
Windows
- 以管理員權(quán)限打開
hosts
文件:- 在搜索欄輸入
cmd
,右鍵“以管理員身份運行”。 - 使用
notepad
編輯hosts
:notepad C:\Windows\System32\drivers\etc\hosts
- 修改后保存,可能需要重啟網(wǎng)絡(luò)或清除 DNS 緩存:
ipconfig /flushdns
- 在搜索欄輸入
Linux / macOS
- 使用
sudo
編輯hosts
文件:sudo nano /etc/hosts
- 保存后刷新 DNS 緩存:
sudo dscacheutil -flushcache # macOS sudo systemctl restart nscd # Linux(如果使用 nscd)
總結(jié)
hosts
文件是本地的靜態(tài) DNS 解析表,優(yōu)先級高于 DNS 服務(wù)器。- DNS 解析是一個層級查詢過程,如果
hosts
解析失敗,系統(tǒng)才會查詢 DNS。 hosts
適用于本地開發(fā)、臨時調(diào)試、屏蔽網(wǎng)站,但不適合長期維護大量域名。- 修改
hosts
后,可能需要清除 DNS 緩存才能生效。