WSL นั้นยอดเยี่ยม แต่ระบบเครือข่ายยุ่งเหยิง — นี่คือวิธีที่ฉันแก้ไข

/th/images/wsl-networking-mess.jpg

หากคุณเป็นคนที่จำเป็นต้องใช้ทั้ง Linux และ Windows เป็นประจำ Windows Subsystem สำหรับ Linux หรือ WSL อาจช่วยชีวิตคุณได้ เป็นคุณสมบัติที่ยอดเยี่ยมที่ทำให้ง่ายต่อการรวมสองสิ่งนี้เข้าด้วยกัน และเมื่อคุณจับคู่กับ X410 มันจะช่วยเพิ่มประสบการณ์ Linux บนพีซี Windows ของคุณอย่างแท้จริง

แต่มันก็ไม่ได้สมบูรณ์แบบทั้งหมด และสำหรับประโยชน์ทั้งหมดของ WSL ผู้ใช้ขั้นสูงได้สังเกตเห็นปัญหาใหญ่บางประการ โดยที่ระบบเครือข่ายเป็นปัญหาสำคัญ เมื่อ Linux ทำงานภายใน Windows การจัดการการเชื่อมต่อเครือข่ายสำหรับโฮสต์และแขกอาจเป็นเรื่องที่ท้าทาย อย่างน้อยก็สามารถทำได้ทันที

ระบบเครือข่ายใน WSL อาจเลอะเทอะได้

บริการในพื้นที่และ VPN ทำให้เกิดปัญหา

/th/images/ubuntu-networking-info.jpg

WSL นั้นยอดเยี่ยม แต่เมื่อพูดถึงเรื่องระบบเครือข่าย สิ่งต่าง ๆ อาจทำให้เกิดความสับสนเล็กน้อย โดยเฉพาะอย่างยิ่งเนื่องจาก WSL ได้เปลี่ยนแปลงพฤติกรรมเล็กน้อยตั้งแต่เปิดตัวครั้งแรก ในตอนแรก WSL ใช้การตั้งค่าที่อนุญาตให้อุปกรณ์อื่นๆ บนเครือข่ายของคุณเข้าถึงแอปพลิเคชัน WSL บนคอมพิวเตอร์ของคุณ โดยที่พวกเขาสามารถเข้าถึงคอมพิวเตอร์โฮสต์ได้ สิ่งนี้ทำให้ทุกอย่างราบรื่นขึ้นเล็กน้อยเนื่องจากคุณเพียงใช้ที่อยู่ IP ของเครื่องโฮสต์เพื่อเชื่อมต่อกับแอป WSL ของคุณ

อย่างไรก็ตาม เมื่อใช้ WSL2 อินสแตนซ์ Linux จะใช้อะแดปเตอร์เครือข่ายเสมือนที่กำหนด IP ของตัวเอง ดังนั้นจึงมีขั้นตอนเพิ่มเติมบางอย่างที่คุณอาจต้องดำเนินการด้วยการกำหนดค่าเริ่มต้น การตั้งค่าเครือข่ายยังทำให้การเข้าถึงบริการบนเครือข่ายใน Windows ผ่านเครื่อง Linux ของคุณทำได้ยากขึ้น ดังนั้นการตั้งค่าไม่เพียงแต่ซับซ้อนมากขึ้นเท่านั้น แต่ยังมีแนวโน้มที่จะเกิดข้อผิดพลาดอีกด้วย และเมื่อ VPN เข้ามาเกี่ยวข้อง อาจเป็นปัญหาใหญ่สำหรับแอป Linux ที่จะสามารถใช้เครือข่ายได้เลยเมื่อ VPN ถูกควบคุมโดย Windows

ตั้งแต่ Windows 11 เวอร์ชัน 22H2 เป็นต้นไป Microsoft ได้ดำเนินการตามขั้นตอนเพื่อแก้ไขปัญหาเหล่านี้บางส่วน มีการเพิ่มฟีเจอร์ใหม่ที่เรียกว่า DNS tunneling ซึ่งอนุญาตให้คำขอ DNS ได้รับการประมวลผลโดยเลเยอร์การจำลองเสมือนแทนที่จะผ่านแพ็กเก็ตเครือข่าย ซึ่งปรับปรุงการรองรับการเชื่อมต่อเมื่อใช้ VPN อย่างมาก

อาจจะแก้ไขได้ง่าย

โหมดมิเรอร์เพื่อช่วยเหลือ

/th/images/wslconfig-file.jpg

ในลักษณะการทำงานเริ่มต้น WSL จะใช้สถาปัตยกรรมแบบ NAT ซึ่งสามารถนำไปสู่ปัญหาต่างๆ มากมายที่คุณพบเมื่อใช้คุณลักษณะเครือข่ายใน WSL หากคุณต้องการปรับปรุงประสบการณ์การเชื่อมต่อเครือข่าย ทางออกที่ดีที่สุดคือการใช้โหมดเครือข่ายแบบมิเรอร์ ตัวเลือกนี้ถูกเพิ่มเข้ามาใน Windows 11 เวอร์ชัน 22H2 ด้วย แต่ไม่ได้เปิดใช้งานตามค่าเริ่มต้น และพยายามจำลองอินเทอร์เฟซเครือข่ายของโฮสต์ Windows ของคุณ ทำให้สามารถรองรับฟีเจอร์เพิ่มเติมและปรับปรุงความเข้ากันได้กับเครื่องมืออื่นๆ

ซึ่งรวมถึงความสามารถในการใช้ IPv6 เชื่อมต่อกับบริการที่ทำงานบนโฮสต์ Windows โดยใช้ที่อยู่ localhost (127.0.0.1) ความเข้ากันได้ที่ดีขึ้นสำหรับ VPN และความสามารถในการเชื่อมต่อกับบริการ WSL ของคุณโดยตรงจากเครื่องอื่นในเครือข่ายท้องถิ่นของคุณ คล้ายกับวิธีการทำงานกับ WSL1 นั่นเป็นข้อดีมากมาย และแม้แต่ Microsoft ก็ยังแนะนำให้ลองใช้สิ่งนี้ในการตั้งค่า WSL ของคุณ แล้วคุณจะทำอย่างไร?

มันค่อนข้างง่าย หากคุณใช้ WSL2 คุณจะพบแอปชื่อ WSL Settings ในเมนู Start ซึ่งจะเปลี่ยนการตั้งค่าส่วนกลางสำหรับ WSL distros ทั้งหมดของคุณ เปิดใช้งานแล้วไปที่แท็บเครือข่ายทางด้านซ้ายของแอป

/th/images/wsl-settings-1.jpg

โหมดเครือข่ายเป็นตัวเลือกแรกบนเพจ ดังนั้นเพียงเปลี่ยนเป็นมิเรอร์แล้วปิดแอป

/th/images/wsl-settings-networking.jpg

เพื่อให้การตั้งค่าของคุณมีผล คุณอาจต้องรีสตาร์ท WSL คุณสามารถทำได้โดยการเปิดเทอร์มินัลแล้วป้อนคำสั่ง wsl–shutdown เพื่อปิดเครื่องเสมือน WSL2 เปิด distro ของคุณอีกครั้งเพื่อบู๊ตสำรอง การรีบูทพีซีของคุณควรได้ผลเช่นกัน

หากคุณไม่ต้องการใช้ GUI คุณสามารถสร้างและแก้ไขไฟล์การกำหนดค่า WSL ได้ด้วยตนเอง คุณจะต้องสร้างไฟล์ชื่อ.wslconfig ในโฟลเดอร์ผู้ใช้ของคุณ (C:\Users\ ) หากคุณยังไม่ได้สร้างและแก้ไขใน Notepad หากต้องการเปิดใช้งานโหมดเครือข่ายแบบมิเรอร์ คุณจะต้องเพิ่มบรรทัดต่อไปนี้ลงในไฟล์ จากนั้นจึงบันทึกการเปลี่ยนแปลง:

wsl2

networkingMode=มิเรอร์

นอกจากนี้ คุณอาจต้องการเรียกใช้คำสั่ง PowerShell ต่อไปนี้เพื่อกำหนดค่าไฟร์วอลล์ Hyper-V เพื่อให้อนุญาตการเชื่อมต่อขาเข้าบนเครื่อง WSL ของคุณ:

ตั้งค่า NetFirewallHyperVVMSetting-Name ‘{40E0AC32-46A5-438A-A0B2-2B479E8F2E90}’ - อนุญาต DefaultInboundAction

เมื่อเสร็จแล้ว เครื่องมือเครือข่ายของคุณควรทำงานได้ดีขึ้นมากผ่าน WSL

นี่ควรเป็นค่าเริ่มต้น

เหตุใดจึงใช้วิธีการที่ใช้งานได้น้อยกว่าด้วยซ้ำ

/th/images/truenas-in-firefox-in-wsl.jpg

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

ไม่ว่าจะด้วยวิธีใด การใช้ Linux ภายใน Windows เป็นสิ่งที่คนส่วนใหญ่จะทำเพื่อจุดประสงค์ที่เฉพาะเจาะจงเท่านั้น และระบบเครือข่ายก็น่าจะเป็นส่วนสำคัญว่าทำไมคุณถึงต้องการทำเช่นนี้ตั้งแต่แรก บริการที่โฮสต์เองบางอย่างอาจจำเป็นต้องทำงานบน Linux หรือทำงานได้ดีขึ้นบนแพลตฟอร์ม และการมีปัญหาด้านเครือข่ายเหล่านี้ทำให้ประสบการณ์การใช้งานน่าหงุดหงิดเกินกว่าที่ควรจะเป็น ขั้นตอนข้างต้นน่าจะช่วยได้ แต่ตามหลักการแล้ว Microsoft จะเปลี่ยนพฤติกรรมเริ่มต้นในอนาคตอันใกล้นี้เพื่อทำให้สิ่งต่างๆ ดีขึ้นสำหรับทุกคน

*️⃣ ลิงค์ที่มา:

อาจช่วยชีวิตคุณได้ จับคู่กับ X410 เมื่อพูดถึงระบบเครือข่าย Microsoft แนะนำ , คำสั่ง PowerShell