ป้ายกำกับ: VS Code

  • เจอปัญหาเข้า code.visualstudio.com ไม่ได้ สุดท้ายต้นเหตุคือ IPv6

    เจอปัญหาเข้า code.visualstudio.com ไม่ได้ สุดท้ายต้นเหตุคือ IPv6

    ช่วงนี้เจอปัญหาแปลก ๆ กับอินเทอร์เน็ตของค่ายหนึ่ง คือไม่สามารถเข้า code.visualstudio.com ผ่าน Chrome และ Firefox ได้ แต่กลับเข้าได้ปกติผ่าน Safari

    ตอนแรกคิดว่าเป็นปัญหาที่ Browser แต่พอลองไปเรื่อย ๆ ก็พบว่าไม่ใช่

    ลองติดต่อ Call Center ก็ทำได้ค่อนข้างยาก และคำแนะนำที่ได้รับก็มีเพียงให้รีเซ็ต Router ซึ่งไม่ได้ช่วยแก้ปัญหาอะไร

    เริ่มไล่หาสาเหตุ

    ลองตรวจสอบเส้นทางด้วย traceroute

    IPv4

    traceroute code.visualstudio.com
    

    IPv6

    traceroute6 code.visualstudio.com
    

    ผลที่ได้ดูเหมือนจะปกติทั้งคู่

    จากนั้นลองทดสอบด้วย curl

    curl -4 -I https://code.visualstudio.com
    

    IPv4 ตอบกลับปกติ

    HTTP/2 200
    

    แต่เมื่อบังคับให้ใช้ IPv6

    curl -6 -I https://code.visualstudio.com
    

    กลับได้ผลลัพธ์

    curl: (35) Recv failure: Connection reset by peer
    

    ตรงนี้ทำให้เริ่มสงสัยว่าปัญหาน่าจะเกี่ยวกับ IPv6 มากกว่า Browser

    ผลกระทบที่เจอ

    ที่บ้านผมมี Raspberry Pi ทำหน้าที่เป็น Server และบางครั้งก็ใช้ VS Code Remote SSH เข้าไปทำงาน

    ปัญหาคือ VS Code ฝั่ง Client จะพยายามดาวน์โหลด VS Code Server ลงบนเครื่องปลายทาง แต่เมื่อเชื่อมต่อผ่าน IPv6 ก็โหลดไม่สำเร็จ ทำให้ใช้งาน Remote SSH ไม่ได้

    ทางแก้ชั่วคราวคือต้องปิด IPv6 บน Server หรือบังคับให้ใช้งานผ่าน IPv4

    อีกเรื่องที่นึกขึ้นได้คือ เมื่อปีที่แล้วผมเคยเจอปัญหาคล้ายกันกับเกม HELLDIVERS 2 ซึ่งสุดท้ายก็ต้องปิด IPv6 ถึงจะเล่นได้ตามปกติ

    ลองวิเคราะห์เพิ่มเติม

    ผมลองถาม Claude พร้อมแนบผลการทดสอบไป ได้คำอธิบายประมาณนี้

    สาเหตุที่เป็นไปได้

    1. Azure Front Door ไม่รับ IPv6 TLS Handshake จาก IP ของคุณ
    2. ISP อาจมีปัญหาเรื่อง IPv6 Routing ไปยัง Azure
    3. Azure บาง PoP อาจมีปัญหากับ IPv6 ชั่วคราว

    จาก Log ที่เห็น

    • TCP เชื่อมต่อไปยัง code.visualstudio.com ผ่าน IPv6 ได้
    • ส่ง TLS Client Hello ได้
    • Server ตอบกลับด้วย Server Hello
    • หลังจากนั้นการเชื่อมต่อถูก Reset ระหว่าง TLS Handshake

    สรุปคือ TCP เชื่อมต่อได้ แต่การเชื่อมต่อถูกตัดระหว่าง TLS Handshake ซึ่งไม่น่าจะเป็นปัญหาของ Browser หรือเครื่องผู้ใช้

    หากการวิเคราะห์นี้ถูกต้อง ก็มีความเป็นไปได้ว่าปัญหาอยู่ระหว่าง IPv6 Routing ของ ISP กับ Azure Front Doorมากกว่าจะเป็นปัญหาที่เครื่องฝั่งผู้ใช้

    สรุป

    จากที่ทดสอบมา ผมพบว่า

    • Safari ยังเข้า code.visualstudio.com ได้
    • Chrome และ Firefox เข้าไม่ได้
    • IPv4 ใช้งานได้ปกติ
    • IPv6 จะถูกตัดการเชื่อมต่อระหว่าง TLS Handshake (Connection reset by peer)
    • VS Code Remote SSH ได้รับผลกระทบ เพราะดาวน์โหลด VS Code Server ไม่สำเร็จผ่าน IPv6
    • ก่อนหน้านี้ก็เคยเจอปัญหาลักษณะคล้ายกันกับ HELLDIVERS 2 ซึ่งแก้ได้ด้วยการปิด IPv6

    เลยอยากสอบถามว่ามีใครใช้อินเทอร์เน็ตค่ายเดียวกัน หรือเคยเจออาการแบบนี้บ้างไหมครับ?

    ถ้าใครเคยเจอ รบกวนแชร์ด้วยว่าเป็น ISP ไหน และมีวิธีแก้ที่ดีกว่าการปิด IPv6 หรือเปล่า จะได้ลองทดสอบเพิ่มเติมครับ