Score:1

DNS ไม่ทำงานบน WSL

ธง us

ฉันกำลังใช้ Insider build ของ Windows 11(22458)

อย่างไรก็ตาม ฉันมีปัญหานี้สองสามครั้งกับรุ่นอื่นๆ (และ wsl ทำงานมาก่อน)

เมื่อฉันเริ่ม wsl ฉันไม่สามารถทำคำขอ DNS ได้ (การ Ping ที่อยู่ IP ใช้งานได้โดยตรง)

ฉันติดตามปัญหานี้จนถึงไฟล์: /etc/resolv.conf

ประกอบด้วยที่อยู่เซิร์ฟเวอร์ DNS

ค่าเริ่มต้นคือ: 172.22.192.1

อย่างไรก็ตามอันนี้ใช้ไม่ได้

ถ้าฉันเปลี่ยนเป็น 1.1.1.1 (Cloud Flare DNS) มันจะใช้งานได้อีกครั้ง

อย่างไรก็ตาม หลังจากการรีสตาร์ท wsl ทุกครั้ง มันจะเปลี่ยนกลับเป็นค่าเริ่มต้น

มีไฟล์ชื่อ wsl.conf ซึ่งฉันสามารถปิดการสร้างไฟล์นี้ได้ แต่ถ้าเสมอ ให้ลบไฟล์ทั้งหมดหลังจากรีบูตทุกครั้ง

แล้วฉันจะแก้ไขปัญหานี้ได้อย่างไร?

ความคิดแรกของฉันคือการรีเซ็ต wsl โดยสมบูรณ์ แต่ไม่ได้รีเซ็ตแอปหรือติดตั้ง WSL ใหม่ผ่านคุณสมบัติต่างๆ

ใครบ้างมีความคิดอื่นว่าจะทำอย่างไร?

NotTheDr01ds avatar
vn flag
คุณใช้ VPN ที่อาจเปลี่ยนตัวแก้ไขเมื่อเปิดใช้งานอยู่หรือไม่
NotTheDr01ds avatar
vn flag
ขอแจ้งให้ทราบล่วงหน้าว่าฉันได้ลบคำตอบแล้วเนื่องจากเป็น WSL/Ubuntu บน Windows 10 และ Win 11 จะทำงานแตกต่างออกไปอย่างแน่นอน ฉันจะลองดูว่าฉันสามารถหาวิธีแก้ไขบน Ubuntu ภายใต้ Windows 11 ได้หรือไม่
LightJack05 avatar
us flag
@ NotTheDr01ds OMG ฉันเพิ่งรู้ว่าปัญหาคือไฟร์วอลล์ของฉัน มันบล็อกคำขอ DNS จาก linux VM WSL อยู่ในรายการใดในการตั้งค่าไฟร์วอลล์ ดังนั้นฉันจึงสามารถอนุญาตพิเศษได้ หรือดีกว่า ฉันจะเลือกให้การเชื่อมต่อกับ WSL เป็นเครือข่ายส่วนตัวได้อย่างไร
NotTheDr01ds avatar
vn flag
น่าสนใจ - คุณแน่ใจหรือว่าเป็น Windows Firewall ที่บล็อกอยู่ Win11 VM ของฉันถูกตั้งค่าเป็นสาธารณะสำหรับ VM เอง แต่ฉันยังสามารถเชื่อมต่อกับมันผ่าน RDP และอินสแตนซ์ WSL ภายในนั้นกำลังแก้ไข DNS โดยไม่มีปัญหา ฉันไม่รู้วิธีเปลี่ยน WSL vNIC เป็นส่วนตัว -- อันที่จริงใน Windows 11 ดูเหมือนว่า vNIC จะถูกซ่อนจาก Windows UI ทั้งหมด (แต่ยังคงแสดงด้วย ipconfig) แต่ฉันสงสัยว่า Pi-hole อาจปฏิเสธอินสแตนซ์ WSL ได้หรือไม่
NotTheDr01ds avatar
vn flag
อย่างไรก็ตาม จะเกิดอะไรขึ้นหากคุณ (ชั่วคราว) เปลี่ยนโปรไฟล์เครือข่าย Win11 ทั้งหมดเป็น "ส่วนตัว" (อย่างน้อยถ้าคุณอยู่ในเครือข่าย "ปลอดภัย") - WSL ตอบสนองต่างกันอย่างไร (ขอบคุณสำหรับการแท็ก @tag ฉันได้รับการแจ้งเตือน!)
NotTheDr01ds avatar
vn flag
นอกจากนี้ เนื่องจากเราคิดว่านี่เป็นปัญหาในฝั่ง Windows มากกว่า (ไม่เกี่ยวข้องกับ Ubuntu อย่างแน่นอน) และคุณไม่ได้รับคำตอบอื่นใดจากใครใน Ask Ubuntu อาจถึงเวลาแล้วที่จะลบสิ่งนี้ และสร้างคำถามใหม่ใน [Super User](https://superuser.com)
NotTheDr01ds avatar
vn flag
และ[คำตอบของผู้ใช้ระดับสูง](https://superuser.com/a/1496354/1210833) อย่างน้อยเมื่อสองปีที่แล้ว ไม่สามารถตั้งค่า WSL vNIC เป็นส่วนตัวได้ ฉันไม่เห็นข้อบ่งชี้ใด ๆ ว่ามันจะแตกต่างกัน แต่ Win11 ดูเหมือนจะมีการเปลี่ยนแปลงค่อนข้างมากในด้านนี้
LightJack05 avatar
us flag
@ NotTheDr01ds ตกลง ฉันเดาว่าฉันจะไปที่ชุมชน Microsoft ฉันจะพยายามหาวิธีเปลี่ยนโปรไฟล์เครือข่ายเป็นแบบส่วนตัว (แสดงเป็นไม่ระบุตัวตนในความปลอดภัยของ windows และไม่ได้อยู่ในการตั้งค่าเครือข่ายเลย) ปัญหาที่เกิดขึ้นจริงคือฉันได้เลือกให้ไฟร์วอลล์ Windows บล็อกสิ่งใดก็ตามที่เข้ามาเมื่อเชื่อมต่อกับเครือข่ายสาธารณะ ขอบคุณสำหรับความช่วยเหลือ!
LightJack05 avatar
us flag
@ NotTheDr01ds ในกรณีที่คุณต้องการดูคำถาม นี่คือลิงค์: https://answers.microsoft.com/en-us/windows/forum/all/change-the-wsl-network-profile-from -สาธารณะถึง/c62b7bc3-8faf-44bc-8b67-848357352534
Score:1
ธง it

WSL ได้รับที่อยู่ IP (และเป็นเซิร์ฟเวอร์ DNS, netmask และอื่น ๆ ) จากเซิร์ฟเวอร์ DHCP ของ Windows แก้ไขบน Windows หรือแก้ไขเซิร์ฟเวอร์ DNS บน 172.22.192.1

นี่เป็นปัญหาของ Windows ไม่ใช่ปัญหาของ Ubuntu

และไม่ ฉันไม่รู้ว่า Windows ทำ DHCP อย่างไร

LightJack05 avatar
us flag
สวัสดี ปัญหาคือ ฉันไม่มี DNS บน IP นี้ ฉันไม่รู้ด้วยซ้ำว่าไอพีนี้คืออะไร Windows ได้รับ DNS จากเราเตอร์ของฉันที่ 192.168.178.1
Score:1
ธง cn

นี่เป็นปัญหากับ WSL ไม่ใช่ Ubuntu หรือ Windows มีวิธีแก้ไขปัญหามากมาย วิธีที่ดีที่สุดที่ฉันพบ https://gist.github.com/coltenkrauter/608cfe02319ce60facd76373249b8ca6

นอกจากนี้ยังมีข้อมูล VPN แต่ขั้นตอนต่างๆ ใช้งานได้โดยไม่ต้องใช้ VPN ด้วย

  1. เรียกใช้คำสั่งเหล่านี้ในเทอร์มินัล Ubuntu

    cd ~/../../etc # ไปที่โฟลเดอร์ etc ใน WSL
    echo "[เครือข่าย]" | sudo tee wsl.conf # สร้างไฟล์ wsl.conf และเพิ่มบรรทัดแรก
    echo "สร้าง ResolvConf = เท็จ" | sudo tee -a wsl.conf # ต่อท้าย wsl.conf บรรทัดถัดไป
    wsl --terminate Debian # ยุติ WSL ใน Windows cmd ในกรณีที่ระบบปฏิบัติการเป็น Ubuntu ไม่ใช่ Debian
    cd ~/../../etc # ไปที่โฟลเดอร์ etc ใน WSL
    sudo rm -Rf resolv.conf # ลบไฟล์ resolv.conf
    
  2. ใน Windows cmd, PowerShell หรือเทอร์มินัลที่เชื่อมต่อ VPN ทำ: รับ NetIPInterface หรือ ipconfig /ทั้งหมด เพื่อรับ DNS หลัก และรอง.

  3. ด้วย DNS หลักและรองที่ได้จากขั้นตอนที่ 2 แทนที่ตัวเลขในขั้นตอนถัดไปใน X.X.X.X

  4. echo "เนมเซิร์ฟเวอร์ X.X.X.X" | sudo ที resolv.conf (สร้าง resolv.conf แล้วต่อท้ายบรรทัด)

  5. echo "เนมเซิร์ฟเวอร์ X.X.X.X" | sudo tee -a resolv.conf (ต่อท้ายบรรทัดใน resolv.conf)

  6. wsl -- สิ้นสุด Debian (ยุติ WSL ใน Windows cmd ในกรณีที่ Ubuntu ไม่ใช่ Debian)

  7. sudo chattr +i resolv.conf

  8. สุดท้ายใน Windows cmd, PowerShell หรือเทอร์มินัล:

    รับ NetAdapter | Where-Object {$_.InterfaceDescription -Match "Cisco AnyConnect"} | ตั้งค่า NetIPInterface -InterfaceMetric 6000
    

เครดิต: @MartinCaccia, @yukosgiti, @machuu และ @AlbesK:
https://github.com/microsoft/WSL/issues/4277
https://github.com/microsoft/WSL/issues/4246

NotTheDr01ds avatar
vn flag
ยินดีต้อนรับสู่ Ask Ubuntu และขอบคุณสำหรับคำตอบของคุณ! ฉันสังเกตว่าคุณมี downvote อยู่แล้ว และนั่นอาจ *เป็นไปได้* (แม้ว่าคุณจะไม่มีทางแน่ใจได้ก็ตาม) เพราะคำตอบของคุณมีนัยสำคัญถึงสิ่งที่เราเรียกว่า "คำตอบสำหรับลิงก์เท่านั้น" ซึ่งโดยปกติจะไม่อนุญาตที่นี่ และ [อาจถูกลบ ](https://askubuntu.com/help/deleted-answers) แม้ว่าจะไม่เป็นไร (และสนับสนุน) ที่จะให้ลิงก์เป็นการแสดงที่มา แต่เราขอให้คุณใส่รายละเอียดที่เกี่ยวข้องของวิธีแก้ปัญหาโดยตรงในคำตอบของคุณ ขอบคุณ!

โพสต์คำตอบ

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