解決 WSL Ubuntu 中 /etc/resolv.conf 自動重置問題

解決 WSL Ubuntu 中 /etc/resolv.conf 自動重置問題

      • 前言
      • 問題描述
      • 問題原因
      • 嘗試過的命令及分析
      • 解決方案:修改 `wsl.conf` 禁用自動生成
      • 總結

前言

在使用 Windows Subsystem for Linux (WSL) 的 Ubuntu 子系統時,你可能會遇到 /etc/resolv.conf 文件被自動重置的問題。即使你手動刪除或修改了這個文件,它仍然會被恢復到默認配置,例如被設置為 nameserver 192.168.31.2。 本文將深入探討這個問題的原因,并提供有效的解決方案,同時回顧一些可能無效的嘗試性操作,幫助你徹底解決 WSL Ubuntu 中的 DNS 配置困擾。

問題描述

正如用戶遇到的情況,即使執行 sudo rm /etc/resolv.conf 刪除了 /etc/resolv.conf 文件,或者使用 sudo tee /etc/resolv.conf <<< "nameserver 192.168.31.111" 嘗試手動設置 nameserver,重啟 WSL 后,/etc/resolv.conf 文件仍然會被重置為包含 nameserver 192.168.31.2 的內容。 這導致用戶自定義的 DNS 設置無法生效,影響網絡訪問。

問題原因

這個問題的根源在于 WSL 的網絡配置機制。 WSL 默認被設計為與 Windows 主機網絡環境緊密集成。 為了簡化網絡配置,WSL 會自動生成 /etc/resolv.conf 文件,并使其 鏡像 Windows 主機當前的 DNS 設置。 這意味著,每次 WSL 啟動或網絡環境發生變化時,WSL 都會重新生成 /etc/resolv.conf,覆蓋任何手動修改。

因此,僅僅刪除或臨時修改 /etc/resolv.conf 文件是無法持久解決問題的。我們需要 阻止 WSL 自動生成該文件,并采取其他方式來配置 DNS。

嘗試過的命令及分析

為了更好地理解問題,并幫助讀者避坑,我們先回顧一下用戶嘗試過的一些命令,并分析其效果:

ls -l /etc/resolv.conf
  • 作用: 列出 /etc/resolv.conf 文件的詳細信息,包括權限、所有者、大小和修改時間等。 用于確認文件是否存在以及基本屬性。
cat /etc/resolv.conf
  • 作用: 查看 /etc/resolv.conf 文件的內容,確認當前的 nameserver 設置。 通常會看到 nameserver 192.168.31.2,即使之前嘗試刪除或修改過。
sudo rm /etc/resolv.conf
  • 作用: 嘗試刪除 /etc/resolv.conf 文件。 看似有效,但重啟 WSL 后文件會被自動重新生成,之前的刪除操作無效。
lsattr /etc/resolv.conf
  • 作用: 查看 /etc/resolv.conf 文件的特殊屬性。 在某些情況下,文件可能被設置了 i 屬性 (immutable),即不可修改。 但通常 WSL 自動生成的 /etc/resolv.conf 不會默認設置這個屬性。
sudo chattr -i /etc/resolv.conf
  • 作用: 嘗試移除 /etc/resolv.conf 文件的 i 屬性(如果存在)。 如果文件被設置為不可修改,這個命令可以解鎖文件,使其可以被刪除或編輯。 但在這個場景下,通常不是 i 屬性的問題,而是 WSL 的自動重寫機制。
sudo rm /etc/resolv.conf
  • 作用: 再次嘗試刪除 /etc/resolv.conf 文件。 在移除了 i 屬性后,如果之前存在該屬性,這次刪除操作應該可以成功。 但仍然無法阻止 WSL 的自動重寫。
sudo tee /etc/resolv.conf <<< "nameserver 192.168.31.111"
  • 作用: 使用 tee 命令和重定向,嘗試將 nameserver 192.168.31.111 寫入 /etc/resolv.conf 文件。 這個命令可以臨時修改文件內容。 但重啟 WSL 后,修改會被自動重置。
cat /etc/resolv.conf
  • 作用: 再次查看 /etc/resolv.conf 文件內容,確認 tee 命令是否生效。 在重啟前,可以看到修改后的內容。
sudo chattr +i /etc/resolv.conf
  • 作用: 嘗試為 /etc/resolv.conf 文件設置 i 屬性 (immutable),使其不可修改。 這個命令的目的是防止 WSL 自動修改文件。 但實際效果有限,WSL 可能會在啟動時嘗試重寫文件,即使設置了 i 屬性也可能失敗,或者導致其他問題。 不推薦使用這種方式來解決自動重置問題。

總結: 以上命令雖然在一定程度上可以操作 /etc/resolv.conf 文件,但都無法從根本上解決 WSL 自動重置的問題。 我們需要更深入地配置 WSL,阻止其自動管理 /etc/resolv.conf

解決方案:修改 wsl.conf 禁用自動生成

要徹底解決 /etc/resolv.conf 自動重置的問題,我們需要修改 WSL 的配置文件 wsl.conf,禁用其自動生成 /etc/resolv.conf 的功能。 然后,我們可以手動創建并配置 /etc/resolv.conf 文件,或者使用其他 DNS 配置方式。

步驟 1: 編輯 wsl.conf 文件

在 WSL Ubuntu 終端中,使用文本編輯器(例如 nanovim)打開或創建 /etc/wsl.conf 文件:

sudo nano /etc/wsl.conf

如果文件不存在,nano 會創建一個新文件。

步驟 2: 添加配置內容

wsl.conf 文件中,添加以下配置段和內容:

[network]
generateResolvConf = false
  • [network] 表示網絡配置段。
  • generateResolvConf = false 關鍵配置,禁用 WSL 自動生成 /etc/resolv.conf 文件的功能。

保存并關閉文件 (在 nano 中,按 Ctrl+X,然后按 Y 確認保存,最后按 Enter 退出)。

步驟 3: 手動創建并配置 /etc/resolv.conf (可選)

在禁用自動生成后,您可以選擇手動創建 /etc/resolv.conf 文件,并配置您想要的 DNS 服務器。 如果您希望使用特定的 DNS 服務器,例如 192.168.31.111 或公共 DNS 服務器 8.8.8.88.8.4.4,請執行以下操作:

sudo rm /etc/resolv.conf  # 如果文件還存在,先刪除
sudo nano /etc/resolv.conf

/etc/resolv.conf 文件中,添加 nameserver 行,指定 DNS 服務器地址。 例如:

nameserver 192.168.31.111
# 或者使用公共 DNS
# nameserver 8.8.8.8
# nameserver 8.8.4.4

根據您的需求選擇合適的 DNS 服務器,保存并關閉文件。

如果您希望完全禁用 DNS 解析,可以跳過手動創建 /etc/resolv.conf 的步驟。 WSL 將不會自動生成,您也沒有手動創建,這樣系統將不會使用 /etc/resolv.conf 進行 DNS 解析。 但這通常不是推薦的做法,除非您有特殊需求。

步驟 4: 重啟 WSL 使配置生效

配置 wsl.conf 后,需要重啟 WSL 才能使更改生效。 在終端中運行以下命令重啟 WSL:

wsl --shutdown
wsl

或者,您可以直接重啟您的 Windows 電腦,效果相同。

步驟 5: 驗證 DNS 配置

重啟 WSL 后,驗證 /etc/resolv.conf 文件是否按照您的設置生效。 如果手動創建并配置了 /etc/resolv.conf,請檢查文件內容:

cat /etc/resolv.conf

您應該看到您在文件中設置的 nameserver 地址。 如果選擇不手動創建 /etc/resolv.conf,則文件可能不存在或為空。

您還可以使用 nslookupping 命令測試 DNS 解析是否正常工作:

nslookup baidu.com
ping baidu.com

如果 DNS 解析正常,nslookup 應該能夠解析域名,ping 應該能夠 ping 通域名對應的 IP 地址。

總結

通過修改 wsl.conf 文件并禁用 generateResolvConf 選項,我們可以有效地阻止 WSL 自動重置 /etc/resolv.conf 文件,從而實現自定義 DNS 配置的目的。 這種方法是 持久且推薦 的解決方案,可以徹底解決 WSL Ubuntu 中 /etc/resolv.conf 自動重置的問題,讓用戶能夠靈活地管理 WSL 的 DNS 設置。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70225.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70225.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70225.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【第15章:量子深度學習與未來趨勢—15.3 量子深度學習在圖像處理、自然語言處理等領域的應用潛力分析】

一、開篇:為什么我們需要關注這場"量子+AI"的世紀聯姻? 各位技術愛好者們,今天我們要聊的這個話題,可能是未來十年最值得押注的技術革命——量子深度學習。這不是簡單的"1+1=2"的物理疊加,而是一場可能徹底改寫AI發展軌跡的范式轉移。 想象這樣一個…

企業軟件合規性管理:構建高效、安全的軟件資產生態

引言 在數字化轉型的浪潮下&#xff0c;企業的軟件使用方式日益多元化&#xff0c;涉及云端、訂閱制、永久授權及浮動許可等多種模式。然而&#xff0c;隨著軟件資產的增多&#xff0c;企業面臨著合規性管理的嚴峻挑戰&#xff1a;非法軟件使用、許可證管理不當、軟件資產閑置…

python學習筆記,python處理 Excel、Word、PPT 以及郵件自動化辦公

文章目錄 前言一、環境搭建1. 下載 Python2. 安裝 Python 二、處理 Excel 文件&#xff08;openpyxl庫&#xff09;三、 處理 Word 文件&#xff08;python-docx庫&#xff09;四、 處理 PPT 文件&#xff08;python-pptx庫&#xff09;五、 自動發送郵件&#xff08;smtplib和…

Python 基礎-循環

目錄 簡介 break continue 小結 簡介 要計算123&#xff0c;我們可以直接寫表達式&#xff1a; >>> 1 2 3 6要計算123...10&#xff0c;勉強也能寫出來。 但是&#xff0c;要計算123...10000&#xff0c;直接寫表達式就不可能了。 為了讓計算機能計算成千上…

簡單易懂,解析Go語言中的Channel管道

Channel 管道 1 初始化 可用var聲明nil管道&#xff1b;用make初始化管道&#xff1b; len()&#xff1a; 緩沖區中元素個數&#xff0c; cap()&#xff1a; 緩沖區大小 //變量聲明 var a chan int //使用make初始化 b : make(chan int) //不帶緩沖區 c : make(chan stri…

python-leetcode 36.二叉樹的最大深度

題目&#xff1a; 給定一個二叉樹root,返回其最大深度 二叉樹的最大深度是指從根節點到最遠葉子節點的最長路徑上的節點數 方法一&#xff1a;深度優先搜索 知道了左子樹和右子樹的最大深度l和r&#xff0c;那么該二叉樹的最大深度即為:max(l,r)1 而左子樹和右子樹的最大深…

RESTful 的特點與普通 Web API 的區別

RESTful 是一種設計風格&#xff0c;而不僅僅是普通的 Web API。它遵循一些特定的原則和約束&#xff0c;使得 API 更加簡潔、可擴展和易于理解。以下是 RESTful 的特點&#xff0c;以及與普通 Web API 的區別&#xff1a; RESTful 的特點 1. 資源導向 RESTful API 的核心是資…

結構風荷載理論與Matlab計算

結構風荷載理論與matlab計算的實例程序&#xff0c;適合初學者理解matlab風荷載計算 資源文件列表 程序_結構風荷載理論與Matlab計算/chapter1/exam_simWind_1_1.m , 1035 程序_結構風荷載理論與Matlab計算/chapter1/Extrmv.m , 303 程序_結構風荷載理論與Matlab計算/chapter1…

numpy(02 數據類型和數據類型轉換)

numpy(01 入門) 目錄 一、Python NumPy 數據類型 1.1 NumPy 基本類型 1.2 數據類型對象 (dtype) 1.3 具體實例 二、Numpy數據類型轉換 2.1 浮點數據轉換 2.2 整型數據轉換 2.3 浮點數轉整數 一、Python NumPy 數據類型 1.1 NumPy 基本類型 下表列舉了常用 NumPy 基…

【雅思博客04】Silence please!

A: Those people in front of us are making so much noise. It’s so inconsiderate! B: Don’t worry about it; it’s not such a big deal. A: Oh... I can’t hear a thing! Excuse me, can you keep it down? C: Sure, sorry about that! A: Someone’s phone is ri…

【大語言模型_3】ollama本地加載deepseek模型后回答混亂問題解決

背景&#xff1a; 本地下載了DeepSeek-R1-Distill-Qwen-7B模型后&#xff0c;通過ollama create DeepSeek-R1-Distill-Qwen-7B -f ds7b.mf加載模型啟動后回答混亂&#xff0c;無法使用。 解決方法 重新下載模型&#xff0c;選擇了DeepSeek-R1-Distill-Qwen-7B-Q4_K_M.gguf 重…

nginx ngx_http_module(9) 指令詳解

nginx ngx_http_module(9) 指令詳解 nginx 模塊目錄 nginx 全指令目錄 一、目錄 1.1 模塊簡介 ngx_http_uwsgi_module&#xff1a;uWSGI支持模塊&#xff0c;允許Nginx與uWSGI服務器進行通信。uWSGI是一種應用服務器協議&#xff0c;廣泛用于Python Web應用的部署。通過該…

用PyInstaller構建動態腳本執行器:嵌入式Python解釋器與模塊打包 - 簡明教程

技術場景&#xff1a; 需分發的Python工具要求終端用戶可動態修改執行邏輯將Python環境與指定庫&#xff08;如NumPy/Pandas&#xff09;嵌入可執行文件實現"一次打包&#xff0c;動態擴展"的輕量化解決方案。 ▌ 架構設計原理 1. 雙模運行時識別 # 核心判斷邏輯…

山石網科×阿里云通義靈碼,開啟研發“AI智造”新時代

近日&#xff0c;山石網科正式宣布全面接入阿里云通義靈碼企業專屬版&#xff0c;這標志著山石網科在研發智能化、自動化領域邁出重要一步&#xff0c;為研發工作注入強大的AI動力&#xff0c;實現多維度的效率飛躍。 此次合作&#xff0c;阿里云通義靈碼依托強大的AI能力&…

《被討厭的勇氣》(六)

1.自由就是被別人討厭。 2.毫不在意別人的評價、不害怕被別人討厭、不追求被他人認可&#xff0c;如果不付出以上這些代價&#xff0c;那就無法貫徹自己的生活方式&#xff0c;也就是不能獲得自由。 3.在意你的臉的只有你自己。 4.不去干涉別人的課題也不讓別人干涉自己的課題.…

使用 PyTorch 實現標準卷積神經網絡(CNN)

卷積神經網絡&#xff08;CNN&#xff09;是深度學習中的重要組成部分&#xff0c;廣泛應用于圖像處理、語音識別、視頻分析等任務。在這篇博客中&#xff0c;我們將使用 PyTorch 實現一個標準的卷積神經網絡&#xff08;CNN&#xff09;&#xff0c;并介紹各個部分的作用。 什…

SpringBoot2.0整合Redis(Lettuce版本)

前言&#xff1a; 目前java操作redis的客戶端有jedis跟Lettuce。在springboot1.x系列中&#xff0c;其中使用的是jedis, 但是到了springboot2.x其中使用的是Lettuce。 因為我們的版本是springboot2.x系列&#xff0c;所以今天使用的是Lettuce。關于jedis跟lettuce的區別&#…

qt + opengl 給立方體增加陰影

在前幾篇文章里面學會了通過opengl實現一個立方體&#xff0c;那么這篇我們來學習光照。 風氏光照模型的主要結構由3個分量組成&#xff1a;環境(Ambient)、漫反射(Diffuse)和鏡面(Specular)光照。下面這張圖展示了這些光照分量看起來的樣子&#xff1a; 1 環境光照(Ambient …

大模型工具大比拼:SGLang、Ollama、VLLM、LLaMA.cpp 如何選擇?

簡介&#xff1a;在人工智能飛速發展的今天&#xff0c;大模型已經成為推動技術革新的核心力量。無論是智能客服、內容創作&#xff0c;還是科研輔助、代碼生成&#xff0c;大模型的身影無處不在。然而&#xff0c;面對市場上琳瑯滿目的工具&#xff0c;如何挑選最適合自己的那…

stream流常用方法

1.reduce 在Java中&#xff0c;可以使用Stream API的reduce方法來計算一個整數列表的乘積。reduce方法是一種累積操作&#xff0c;它可以將流中的元素組合起來&#xff0c;返回單個結果。對于計算乘積&#xff0c;你需要提供一個初始值&#xff08;通常是1&#xff0c;因為乘法…