Score:3

ทำการเปลี่ยนแปลง /etc/resolv.conf อย่างถาวรใน WSL 2

ธง in

ใน WSL 2 เมื่อฉันพยายามเชื่อมต่อกับเว็บไซต์ ฉันพบปัญหา:

$ ปิง www.google.co.th
ping: www.google.com: การแก้ไขชื่อล้มเหลวชั่วคราว

ตอนนี้เพื่อแก้ไขปัญหานี้ฉันต้องเพิ่ม /etc/wsl.conf ด้วยเนื้อหานี้:

[เครือข่าย]
createResolvConf = จริง

และฉันต้องเปลี่ยน /etc/resolv.conf ถึง:

เนมเซิร์ฟเวอร์ 8.8.8.8

มันใช้งานได้ดี

อย่างไรก็ตาม เมื่อฉันรีสตาร์ทระบบ เมื่อฉันปิด wsl หรือทำอะไรที่คล้ายกัน /etc/resolv.conf ถูกเขียนทับด้วยค่าก่อนหน้า

แน่นอนถ้าฉันเปลี่ยนไป /etc/wsl.conf ต่อไปนี้และเริ่มต้นใหม่อีกครั้ง:

[เครือข่าย]
createResolvConf = เท็จ

การแก้ไขดังกล่าวข้างต้นหายไปอีกครั้ง

ดังนั้นฉันจะเปลี่ยนแปลงได้อย่างไร /etc/resolv.conf ถาวรบน WSL 2?

ru flag
`/etc/resolv.conf` โดยทั่วไปจะเป็น symlink และถูกเขียนทับโดย NetPlan / SystemD เมื่อ 'เขียนทับ' ข้อมูล คุณเห็นอะไรใน `ls -al /etc/resolv.conf`
Olivier Grégoire avatar
in flag
@ThomasWard นี่คือผลลัพธ์ของคำสั่งนั้น: `lrwxrwxrwx 1 root root 29 มกราคม 25 17:43 /etc/resolv.conf -> ../run/resolvconf/resolv.conf` ฉันคิดว่า `..` สัมพันธ์กับไดเร็กทอรีของฉันเอง ดังนั้นฉันจึงลองในไดเร็กทอรีอื่น แต่ก็ยังเป็น `../run/resolvconf/resolv.conf` และฉันเห็นว่าไฟล์นั้นมีค่า `8.8.8.8` อยู่แล้ว
ru flag
ตกลงว่าเป็นเรื่องปกติเมื่อคุณแก้ไขสิ่งต่าง ๆ ตรวจสอบให้แน่ใจว่าคุณดูที่ `/etc/resolvconf` - ที่ไหนสักแห่งในนั้นมีไฟล์ 'head' ที่คุณสามารถกำหนดค่าให้เซิร์ฟเวอร์ DNS หลักของคุณนำหน้าทุกสิ่งที่ระบบตั้งค่าไว้ สิ่งนี้มีประโยชน์เพราะนั่นคือ resolvconf ทำงานอย่างไรกับการเชื่อมต่อเครือข่ายแบบไดนามิก (Network Manager) ในการติดตั้งพื้นฐานของ Ubuntu เพียงเพื่ออนาคตเพื่อให้พวกเขาอยู่ แก้ไขไฟล์ส่วนหัวสำหรับ resolvconf การเปลี่ยนแปลงเหล่านั้นยังคงอยู่ อาจมีรายการอื่นๆ ที่สร้างขึ้นภายใต้รายการนั้น แต่คุณจะต้องตั้งค่า DNS หลักด้วยวิธีนั้น หากใช้งานได้ฉันจะแปลงเป็นคำตอบ
Olivier Grégoire avatar
in flag
@ThomasWard `sudo find /run -type f` ส่งคืนเฉพาะ `/run/resolvconf/resolv.conf` และ `/run/sudo/ts/myusername` ไม่มีอะไรอื่นในนั้น
ru flag
ฉันไม่ได้บอกว่ามันอยู่ใน `/run` - โปรดทราบว่าไดเร็กทอรีที่ฉันพูดในความคิดเห็นของฉันคือ **`/etc/resolvconf`** และ *ไม่ใช่* ใน `/run`
Olivier Grégoire avatar
in flag
@ThomasWard ฉันคิดว่ามันพิมพ์ผิดเพราะไม่มี /etc/resolvconf (หรือคล้ายกัน)
NotTheDr01ds avatar
vn flag
@ThomasWard โปรดทราบว่า OP กล่าวว่านี่คือ WSL Systemd / NetPlan ไม่ควรเล่นที่นี่ใช่ไหม โดยปกติแล้ว WSL จะกำหนดค่า `/etc/resolv.conf` จากโฮสต์ Windows เว้นแต่จะปิดใช้งานด้วย `/etc/wsl.conf` ที่กล่าวถึง
ru flag
@NotTheDr01ds WSL2 เป็นสภาพแวดล้อมเสมือนจริงอย่างสมบูรณ์ ดังนั้นจึง *อาจ* เกี่ยวข้อง เราไม่ทราบว่าเป็น WSL1 หรือไม่ เนื่องจาก OP ระบุว่าต้องเปิดใช้งานและปิดใช้งาน หากปิดใช้งาน ก็จะไม่มีอะไรจัดการ DNS ได้ ดังนั้น OP จึงต้องจัดการเอง
NotTheDr01ds avatar
vn flag
@ThomasWard ฉันไม่แน่ใจว่าฉันจะเรียกมันว่า "เวอร์ชวลไลซ์อย่างสมบูรณ์" แม้แต่ WSL2 ก็ยังใช้กระบวนการ `init` (PID 1) ของตัวเองเพื่อเชื่อมโยงการทำงานร่วมกันระหว่าง WSL และ Windows สิ่งที่สำคัญที่สุดสำหรับคำถามนี้ อย่างน้อยก็คือ `init` บน WSL (ทั้ง 1 และ 2) ที่ตั้งค่าเครือข่าย จริงๆแล้วมี "Ubuntu" น้อยมากที่เกี่ยวข้องกับสิ่งต่าง ๆ * โดยเฉพาะอย่างยิ่ง * ไม่ใช่ Systemd
NotTheDr01ds avatar
vn flag
@OlivierGrégoire คุณช่วยอธิบายเพิ่มเติม (ด้วยการแก้ไขคำถาม) ใน "นั่นใช้ไม่ได้อีก" ได้ไหม `resolv.conf` ถูกเขียนทับแม้ว่าจะมี `wsl.conf` หรือไม่ ถ้าเป็นเช่นนั้น ให้ลองลบช่องว่างรอบๆ เครื่องหมายเท่ากับ (`generateResolvConf=false`) เป็นช็อตที่ยาวนาน แต่เป็นการเปลี่ยนแปลงที่ง่ายที่จะลอง
Olivier Grégoire avatar
in flag
@NotTheDr01ds เสร็จแล้ว! แต่ตอนนี้ `/run/resolvconf/resolv.conf` ถูกลบเมื่อฉันออก/รีสตาร์ท wsl
NotTheDr01ds avatar
vn flag
แน่นอน แต่ฉันคิดว่านั่นคือสิ่งที่คุณต้องการ? เมื่อไม่ได้ใช้ `/run/resolvconf/resolv.conf` อีกต่อไป คุณสามารถสร้าง `/etc/resov.conf` ด้วยตนเองได้สำเร็จหรือไม่
Olivier Grégoire avatar
in flag
@ NotTheDr01ds ฉันสามารถสร้างมันได้ แต่เมื่อฉันปิด WSL ไฟล์จะถูกลบ
NotTheDr01ds avatar
vn flag
ขออภัย ในความคิดเห็นก่อนหน้า คุณบอกว่า `/run/resolvconf/resolv.conf` นั้นถูกลบเมื่อคุณรีสตาร์ท นั่นควรจะเป็น `/etc/resolv.conf` หรือจริง ๆ แล้วทั้งสองถูกลบไปแล้ว?
Olivier Grégoire avatar
in flag
@ NotTheDr01ds ในการติดตั้ง WSL ของฉัน (ฉันจะไม่พูดโดยทั่วไปเพราะฉันไม่รู้) `/etc/resolv.conf` เป็น symlink ไปยัง `/run/resolvconf/resolv.conf`เป็นอย่างหลังที่ถูกลบในขณะที่อันแรกยังคงเป็น symlink แม้ว่าอันหลังจะถูกลบไปแล้วก็ตาม
kn flag
ชนเพราะฉันพบปัญหาเดียวกันและยังไม่มีวิธีแก้ไข
Score:0
ธง mv

มีปัญหาเดียวกันและทำตามขั้นตอนเหล่านี้ที่ฉันพบใน repo github ของ WSL เพื่อเป็นวิธีแก้ปัญหา:

  1. ลบ /etc/resolv.conf
  2. สร้าง /etc/resolv.conf โดย vim/nano
  3. ใส่เนมเซิร์ฟเวอร์ที่เหมาะสม
  4. เริ่มเซสชันใหม่และตรวจสอบว่า resolv.conf ไม่ถูกรีเซ็ตอีกหรือไม่

ที่มา: คำตอบของ bradley101 ที่นี่ https://github.com/Microsoft/WSL/issues/1908

ru flag
คำตอบนี้ดูเหมือนไม่สมบูรณ์ - ลบ resolv.conf แล้วสร้างใหม่ *โดยไม่* ให้รายละเอียดว่าควรจัดรูปแบบอย่างไร ฯลฯเป็นวิธีที่ดีในการทำลายสิ่งต่าง ๆ และการพูดว่า "แหล่งที่มาคือคำตอบอื่นนี้" โดยไม่ระบุขั้นตอน *สมบูรณ์* อาจทำให้ WSL เสียหายได้

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา