คุณอาจเคยพบว่าบาง แอป Windows 8 แบบ Modern (Metro Apps) ไม่เห็นอินเทอร์เน็ต (เชื่อมต่อกับเซิร์ฟเวอร์ล้มเหลว ฯลฯ) เมื่อใช้ การเชื่อมต่อ VPN บางประเภทไปยัง ISP แต่โดยทั่วไป ปัญหานี้ไม่ได้เกิดกับ Metro Apps ทั้งหมด กล่าวคือ บางแอปทำงานได้ (โดยปกติคือแอป Metro มาตรฐาน) และบางแอปทำงานไม่ได้ ในเวลาเดียวกัน แอปพลิเคชัน Windows แบบคลาสสิกทำงานกับอินเทอร์เน็ตได้โดยไม่มีปัญหา
หากคุณวางฮาร์ดแวร์รูเตอร์ที่เริ่มการเชื่อมต่อ VPN ไปยังผู้ให้บริการก่อนคอมพิวเตอร์ ปัญหาจะไม่เกิดขึ้น หมายความว่าปัญหานี้เกิดขึ้นเฉพาะใน Windows 8 ที่ต้องตั้งค่าอุโมงค์ VPN เอง
ปัญหานี้มีมานานแล้ว แต่ยังไม่มีทางแก้ไขทางการจาก Microsoft จนถึงตอนนี้ (อย่างน้อยที่ฉันค้นหาไม่เจอ) ในบทความนี้ เราจะตรวจสอบสาเหตุที่ทำให้เกิดขึ้นและวิธีแก้ไข
ตามที่คุณรู้ แอป Modern Windows 8 แตกต่างจากแอป Windows แบบคลาสสิก ในบริบทนี้ เราสนใจข้อเท็จจริงที่ว่ามันทำงานในสภาพแวดล้อมที่แยกต่างหาก โดยมีการเข้าถึงอินเทอร์เฟซ loopback ของคอมพิวเตอร์ ปิดอยู่โดยค่าเริ่มต้น เนื่องจากอินเทอร์เฟซอุโมงค์ทั้งหมด (pptp, l2tp, pppoe) ที่ใช้ VPN เป็นอินเทอร์เฟซ loopback ดังนั้น Metro Apps ส่วนใหญ่จึงไม่สามารถส่งトラフィคเครือข่ายไปยังพวกเขาได้ และผลสืบเนื่องคือไม่สามารถเข้าถึงอินเทอร์เน็ตได้ เหตุการณ์เดียวกันนี้ใช้ได้กับเซิร์ฟเวอร์พร็อกซีในเครื่อง (ตั้งแต่ตัวลบโฆษณาเบาๆ เช่น Privoxy จนถึงเซิร์ฟเวอร์พร็อกซีเต็มรูปแบบ)
เพื่อให้แอป Metro ได้รับการเข้าถึงเครือข่ายเต็มรูปแบบ คุณต้องเพิ่ม privateNetworkClientServer ลงใน APPX manifest เมื่อพัฒนาแอปพลิเคชันใน Visual Studio การเข้าถึงนี้จะเปิดใช้งาน แต่หลังจากที่แอปเผยแพร่ใน Windows Store นักพัฒนาต้องเปิดใช้งานฟีเจอร์นี้ด้วยตนเองในไฟล์ manifest
ในขณะที่อินเทอร์เฟซอุโมงค์ใน Windows เป็น loopbacks คุณจะต้องขอนักพัฒนาให้แก้ไขแอป หรือใช้โซลูชันแก้ปัญหาชั่วคราวเพื่อให้ Metro Apps ทำงานได้อย่างถูกต้อง
เพื่อนำโซลูชันแก้ปัญหาไปใช้ เราจะใช้เซิร์ฟเวอร์พร็อกซี HTTP/HTTPS ฟรี Fiddler ซึ่งมีไว้สำหรับการดีบักแอปเว็บและตรวจสอบทุกการจราจร HTTP ระหว่างคอมพิวเตอร์และเซิร์ฟเวอร์อินเทอร์เน็ต (โดยเฉพาะอย่างยิ่ง สามารถใช้เพื่อรับลิงก์โดยตรงเพื่อดาวน์โหลดไฟล์ติดตั้ง APPX ของ Metro App ใดๆ จาก Windows Store)
- ดาวน์โหลด Fiddler Web Debugger จากหน้านี้ (https://www.telerik.com/download/fiddler) สำหรับ Windows 8 หรือใหม่กว่าคุณจะต้องใช้ Fiddler for .Net 4 (คาดว่าคุณมี .NET v4 Framework ติดตั้งอยู่บนคอมพิวเตอร์)
- ติดตั้ง Fiddler ด้วยการตั้งค่ามาตรฐาน
- โดยค่าเริ่มต้น แอป Modern ไม่สามารถดีบักได้ด้วย Fiddler เนื่องจากมันทำงานเป็นเซิร์ฟเวอร์พร็อกซีในเครื่องของคุณ (Metro Apps ไม่สามารถส่งトラフィคผ่านอินเทอร์เฟซพร็อกซีในเครื่องได้โดยค่าเริ่มต้น) คุณสามารถลบข้อจำกัดนี้ (Loopback Restriction) ในคอนเทนเนอร์โปรแกรม AppContainers สำหรับ Metro App ใดๆ โดยใช้ส่วนขยาย Fiddler — Windows 8 AppContainer Loopback Utility (enableloopbackutility.exe) ดาวน์โหลดและติดตั้งส่วนขยายนี้
- หลังจากติดตั้งยูทิลิตี้แล้ว เริ่ม Fiddler และในเมนู Tools เลือก Win8 Loopback Exemptions (คุณสามารถทำได้เช่นกัน หากคุณคลิกปุ่ม Windows 8 แรกในแถบเครื่องมือ)

- ก่อนทำขั้นตอนถัดไป ตรวจสอบให้แน่ใจว่า VPN ของคุณได้เชื่อมต่อแล้ว (หรือเซิร์ฟเวอร์พร็อกซีในเครื่องได้เริ่มทำงานแล้ว)
- เลือกแอป Metro ของ Windows 8 ที่トラフィคควรผ่าน Fiddler และต้องการลบข้อจำกัดการเข้าถึง loopback หากคุณต้องการเลือกทั้งหมด ให้คลิก Exempt All และบันทึกการตั้งค่า (Save Changes)
เคล็ดลับ ตามที่คุณเห็น ในหน้าต่างนี้ระบุว่าเพื่อเหตุผลด้านความปลอดภัยและความน่าเชื่อถือ Windows บล็อก Metro Apps ไม่ให้ส่งトラフィคเครือข่ายไปยังคอมพิวเตอร์ในเครื่อง AppContainer Loopback Exemption Utility ปิดใช้งานข้อจำกัดนี้เพื่อการดีบักและทดสอบ - ย่อ Fiddler (อย่าปิดมัน!) และตรวจสอบการเข้าถึงเครือข่ายจากแอป Metro
สำคัญ หากคุณติดตั้งแอป Modern ใหม่ คุณจะต้องเพิ่มมันลงในรายการ Loopback Exemption ด้วยตนเอง
Fiddler ไม่เหมาะสำหรับการใช้งานจริงในสภาพแวดล้อมองค์กรเนื่องจากบางความไม่สะดวกในการปรับใช้และจัดการ แต่ในฐานะโซลูชันแก้ปัญหาชั่วคราวที่อนุญาตให้ทำงานกับแอป Metro ในการตั้งค่า VPN ถือเป็นประโยชน์ดี
ดังนั้น เราได้พิจารณาว่าจะใช้ Fiddler เพื่อให้แอป Metro เข้าถึงอินเทอร์เน็ตผ่านการเชื่อมต่อ VPN ใดๆ หรือเซิร์ฟเวอร์พร็อกซีในเครื่องได้อย่างไร