กดบัตรคอนไม่ได้ แถมโดน “กาน้ำชา” ปฏิเสธ — เรื่องวุ่น ๆ ของ Error 418 ที่ไม่ใช่ฝีมือแฮกเกอร์จีน | MCT
Engineering Culture

กดบัตรคอนไม่ได้ แถมโดน “กาน้ำชา” ปฏิเสธ — เรื่องวุ่น ๆ ของ Error 418 ที่ไม่ใช่ฝีมือแฮกเกอร์จีน

ว่าด้วยดราม่ากดบัตร BTS วันที่ 12 มิถุนาที่ผ่านมา — ที่จุดเริ่มต้นคือ error ขี้เล่นตัวหนึ่ง แต่จุดจบเกือบถึงสคบ.

MCT Engineering อ่าน 5 นาที Error 418 · WAF · Load Testing
418
I’m a teapot
HTTP Status Code · HTCPCP · RFC 2324
ไม่ใช่แฮกเกอร์จีน ไม่ใช่ระบบพัง — แค่กาน้ำชาที่ทำหน้าที่ของมัน
แต่บทเรียนที่ซ่อนอยู่เบื้องหลังนั้นสำคัญมาก

วันที่ 12 มิถุนาที่ผ่านมา ใครที่นั่งลุ้นกดบัตรคอนเสิร์ต #BTS_WORLDTOUR_BANGKOK คงได้เห็นดราม่าร้อน ๆ บนแอป X กันสด ๆ มีผู้ใช้รายหนึ่งกดบัตรไม่ได้ หน้าจอเด้ง error ขึ้นมาเป็นเลข 418 พร้อมข้อความว่า request ของคุณ “ดูเหมือนการโจมตี” พอลองเปิด inspect ดูในซอร์สโค้ดก็เจอข้อความภาษาจีนว่า “访问被拦截!” — การเข้าถึงถูกปิดกั้น

เท่านั้นแหละค่ะ จากพฤติกรรมที่เห็นก็พอเดาได้ว่าเจ้าตัวไม่ได้คลุกคลีกับสายไอทีนัก เพราะสรุปออกมาว่า “โดนโปรแกรมเมอร์จีนบล็อกไม่ให้คนไทยกดบัตร” แล้วเรื่องก็ลุกลาม มีคนต่อยอดไปอีกว่าเลข 418 คือหลักฐานว่า “โดนคนจีนแฮก” จนถึงขั้นมีคนประกาศจะไปฟ้องสคบ. กันเลยทีเดียว

ก่อนจะไปถึงศาล ขอชวนมาแกะทีละประเด็นก่อน เพราะเรื่องนี้สนุกกว่าที่คิด และจบลงด้วยบทเรียนที่ทุกทีมพัฒนาระบบควรรู้

01Error 418 คืออะไร? ทำไมมันถึงตลก

นี่อาจเป็น error ที่น่ารักที่สุดในประวัติศาสตร์อินเทอร์เน็ต เพราะ 418 ไม่ได้แปลว่าโดนแฮก ไม่ได้แปลว่าระบบพัง แต่แปลว่า “I’m a teapot” — ฉันเป็นกาน้ำชา

ที่มาของ Error 418

เรื่องมันเริ่มจากวันที่ 1 เมษายน 1998 หรือวัน April Fools’ Day ที่เหล่าวิศวกรอินเทอร์เน็ตออกเอกสารมาตรฐานปลอม ๆ ฉบับหนึ่ง เขียนเป็นตุเป็นตะถึงโปรโตคอลชื่อ HTCPCP (Hyper Text Coffee Pot Control Protocol) — โปรโตคอลสำหรับ “สั่งชงกาแฟผ่านอินเทอร์เน็ต” ในเอกสารระบุไว้อย่างจริงจังว่า ถ้าคุณส่งคำสั่งชงกาแฟไปยังอุปกรณ์ที่เป็น กาต้มชา มันต้องตอบกลับด้วยรหัส 418 เพื่อบอกว่า “ชงกาแฟให้ไม่ได้หรอก เพราะฉันเป็นกาน้ำชา (I’m a teapot.)”

ใช่ค่ะ ทั้งหมดนี้คือมุกตลกวันเมษาหน้าโง่ แต่ชาวอินเทอร์เน็ตดันรักมุกนี้มาก ถึงขนาดที่เมื่อมีความพยายามจะถอด 418 ออกจากมาตรฐานในภายหลัง ก็เกิดแคมเปญ “Save 418” ขึ้นมาปกป้องจนสำเร็จ ทุกวันนี้ 418 เลยยังมีชีวิตอยู่ในฐานะ easter egg ที่นักพัฒนาทั่วโลกหยิบมาใช้

แล้วภาษาจีนใน inspect มาจากไหน? คำตอบอยู่ในรูปที่แชร์กันนั่นเองค่ะ — ใน source ระบุชัดว่า Server คือ CloudWAF ซึ่งเป็นบริการ Web Application Firewall ของ Huawei Cloud และ WAF ตัวนี้ถูกออกแบบมาให้ตอบ request ที่มันมองว่าน่าสงสัยด้วยรหัส 418 พร้อมหน้า error ภาษาจีนสำเร็จรูป ตามเอกสารทางการของ Huawei เลยค่ะ ไม่ใช่โปรแกรมเมอร์จีนคนไหนมานั่งบล็อกคนไทยแบบ manual แน่นอน

“คนที่กดบัตรไม่ได้วันนั้น ไม่ได้โดนแฮกค่ะ — แค่โดนกาน้ำชาปฏิเสธ”

02แล้วทำไมถึงกดบัตรไม่ได้ล่ะ?

อันนี้คือประเด็นที่เป็นเรื่องเทคนิคจริง ๆ และเจ็บปวดกว่ามุกกาน้ำชาเยอะ

ISP ในไทยจำนวนมากใช้เทคนิคแชร์ IP — ผู้ใช้หลายร้อยหลายพันคนออกอินเทอร์เน็ตผ่าน IP สาธารณะ เบอร์เดียวกัน ในวันปกติไม่มีใครรู้สึกอะไร แต่ลองนึกภาพวันกดบัตรคอนดูนะคะ แฟนคลับนับพันที่ใช้เน็ตเจ้าเดียวกัน กดปุ่มเดียวกัน ในวินาทีเดียวกัน

ผู้ใช้หลายพัน
แฟนคลับนับพัน ใช้ ISP เดียวกัน → ออกอินเทอร์เน็ตผ่าน IP เดียวกัน
WAF มองเห็น
Request หลักพันจาก IP เดียว ในวินาทีเดียวกัน — หน้าตาเหมือน DDoS เป๊ะ
ผลลัพธ์
Block ทั้ง IP แฟนคลับบริสุทธิ์โดนบล็อกยกยวง → Error 418

ในสายตาของ WAF ภาพที่เห็นคือ request มหาศาลพุ่งมาจาก IP เดียวพร้อมกัน ซึ่งหน้าตาเหมือนการโจมตีแบบ DDoS เป๊ะ ๆ ระบบเลยทำหน้าที่ของมันอย่างซื่อสัตย์ คือบล็อกทิ้งทั้ง IP ผลคือคนบริสุทธิ์ที่แค่อยากเจอศิลปินโดนบล็อกกันยกยวง ไม่ใช่เพราะใครกลั่นแกล้ง แต่เพราะระบบป้องกันแยกไม่ออกว่านี่คือแฟนคลับหรือบอท

03เรื่องแบบนี้ป้องกันได้ไหม?

ได้ค่ะ และนี่คือเหตุผลที่การทดสอบระบบก่อนวันจริงไม่ใช่แค่การยิง load ใส่เซิร์ฟเวอร์เฉย ๆ

⚠️Load Test ที่ดีต้องจำลอง “พฤติกรรมจริงของผู้ใช้จริง” ซึ่งรวมถึงข้อเท็จจริงที่ว่า traffic จากเมืองไทยจะกระจุกตัวมาจาก IP ไม่กี่เบอร์ของ ISP รายใหญ่ ถ้าทีมทดสอบจำลองสถานการณ์นี้ก่อนวันเปิดขาย ก็จะเจอตั้งแต่ในสนามซ้อมเลยว่า WAF ตั้งกฎเข้มเกินไปจนบล็อกลูกค้าตัวเอง

แล้วจะได้ปรับจูนกันก่อน เช่น:

  • ผ่อนเกณฑ์ rate limit ต่อ IP เปลี่ยนไปนับที่ session หรือ device แทน
  • หรือเตรียมหน้ารอคิวที่รับแรงกระแทกแทนการบล็อกดื้อ ๆ

เพราะปัญหาแบบนี้ไม่มีทางเจอจากการเปิดเว็บทดสอบกันเองในออฟฟิศ มันจะโผล่มาเฉพาะตอนที่คนเป็นหมื่นแห่เข้ามาพร้อมกันเท่านั้น และอย่างที่รู้กัน — มันจะพังตรงจุดที่ส่งผลกระทบมากที่สุดเสมอ

“ระหว่างเจอปัญหาตอนซ้อม กับเจอปัญหาตอนแฟนคลับทั้งประเทศกดบัตรพร้อมกัน อย่างแรกคือบทเรียน อย่างหลังคือดราม่าบน X”

04ทิ้งท้าย

ดราม่าครั้งนี้ไม่มีแฮกเกอร์จีน ไม่มีแผนการร้าย มีแค่ระบบที่ไม่ได้ถูกซ้อมรับมือ traffic แบบไทย ๆ กับ error ขี้เล่นตัวหนึ่งที่ดันไปโผล่ผิดที่ผิดเวลา

ก็อยากฝากถึงทุกทีมที่ดูแลระบบขายบัตรไว้ว่า ลงทุนกับ Load Test สักหน่อยก่อนวันจริง แล้ววันเปิดขายคุณจะได้นั่งจิบชาดูกราฟอย่างสบายใจ

ดีกว่าปล่อยให้ระบบของคุณเป็นฝ่ายตอบลูกค้าว่า “ขอโทษนะคะ ฉันเป็นแค่กาน้ำชา” 🫖