ISP บล็อก UDP หรือเป็นแอปในอุโมงค์?
ISP สามารถทิ้งการขนส่ง UDP ชั้นนอกได้โดยไม่ต้องอ่านเฮดเดอร์ชั้นในที่เข้ารหัส แยกการส่งมอบชั้นนอก การส่งต่อชั้นใน และพฤติกรรมของแอปออกจากกัน
มีคนรายงานว่า VPN „บล็อก UDP“ และประโยคนี้ซ่อนข้อกล่าวอ้างสองอย่างที่ต่างกันโดยสิ้นเชิง อย่างหนึ่งเกี่ยวกับการขนส่งที่เครือข่ายเข้าถึงมองเห็นได้ อีกอย่างเกี่ยวกับแพ็กเก็ตของแอปหลังจากถูกถอดรหัสภายในอุโมงค์ อุโมงค์ที่เข้ารหัสสามารถถูกกรองจากภายนอกได้โดยไม่ต้องใช้กุญแจใด ๆ และแอป UDP ชั้นในอาจล้มเหลวด้วยเหตุผลที่ไม่เกี่ยวกับการกรองเลย ตัดสินใจว่าคุณกำลังทดสอบข้อกล่าวอ้างใดก่อนเก็บหลักฐาน
สองเฮดเดอร์ หนึ่งคำ
ในการติดตั้ง IPsec ที่ใช้ NAT-traversal แพ็กเก็ตชั้นนอกเป็น UDP ที่กำหนดแอดเดรสระหว่างปลายทั้งสองของ VPN โดยปกติที่พอร์ต 4500 ภายในนั้นเพย์โหลดที่เข้ารหัสบรรทุกทุกสิ่งที่อุโมงค์ส่งต่อ ซึ่งอาจเป็น TCP หรือ UDP เสียเอง คำว่า UDP จึงปรากฏสองครั้งด้วยความหมายและความมองเห็นที่ต่างกัน
เครือข่ายกลางเห็นเฮดเดอร์ชั้นนอกและไม่เห็นอะไรของชั้นในเลย มันสามารถอนุญาต ปรับรูปร่าง หรือทิ้งโฟลว์ชั้นนอกได้ และไม่จำเป็นต้องถอดรหัสอะไรเลย ความไม่สมมาตรนี้คือเหตุผลทั้งหมดที่ข้อกล่าวอ้างทั้งสองสับสนกัน คำเดียวกันอธิบายทั้งสิ่งที่เครือข่ายกรองและสิ่งที่แอปส่ง เขียนชั้นกำกับไว้ข้างคำทุกครั้งที่บันทึกสิ่งที่พบ และความสับสนก็หายไปเกือบหมด
เฮดเดอร์ชั้นในจะมองเห็นได้เฉพาะที่ปลายทางผู้รับ หลังการถอดรหัส จากจุดนั้นแพ็กเก็ตจะถูกส่งต่อไปเหมือนแพ็กเก็ตอื่น ๆ ภายใต้เส้นทาง นโยบาย และการกรองของปลายทางเอง สิ่งเหล่านี้เป็นการตัดสินใจแยกกันที่อุปกรณ์ต่างกันทำ
สิ่งที่เครือข่ายยังเห็นได้
การเข้ารหัสซ่อนเพย์โหลดและเฮดเดอร์การขนส่งชั้นใน ไม่ใช่ข้อเท็จจริงที่ว่าโฟลว์มีอยู่ แอดเดรสปลายทาง พอร์ต ขนาดแพ็กเก็ต และเวลา ยังคงมองเห็นได้ และเพียงพอที่จะจำแนกทราฟฟิกแบบฮิวริสติกหรือบล็อกปลายทางเฉพาะ
sudo tcpdump -ni eth0 'udp port 4500' sudo tcpdump -ni tun0 'udp port 5201'
การดักจับครั้งแรกแสดงโฟลว์ชั้นนอกบนอินเทอร์เฟซทางกายภาพ และครั้งที่สองแสดงโฟลว์ชั้นในบนอินเทอร์เฟซของอุโมงค์ การรันทั้งสองพร้อมกันตอบคำถามได้โดยตรง ถ้าโฟลว์ชั้นนอกมีอยู่แต่ชั้นในไม่มี แอปไม่เคยส่งอะไรเข้าไปในอุโมงค์เลย ถ้าทั้งสองมีอยู่และไม่มีอะไรตอบกลับ ปัญหาอยู่นอกอุโมงค์ ที่ปลายทางหรือบนเส้นทางขากลับ
RFC 3948 กำหนดการห่อหุ้ม UDP ชั้นนอก และข้อกำหนด ESP กำหนดโครงสร้างที่ได้รับการป้องกันภายใน เอกสารทั้งสองฉบับไม่ได้สัญญาว่าเครือข่ายเข้าถึงจะยอมให้โฟลว์ชั้นนอกผ่านไป จึงคุ้มค่าที่จะรันการทดสอบการเข้าถึงบนทูเพิลชั้นนอกก่อนจะมีทฤษฎีใด ๆ เกี่ยวกับชั้นใน ทูเพิลชั้นนอกที่ถูกบล็อกทำให้เกิดอุโมงค์ที่ไม่เคยเกิดขึ้น ไม่ใช่อุโมงค์ที่เกิดขึ้นแล้วสูญเสียแอปหนึ่งตัว
ทำไมแอป UDP หนึ่งตัวจึงล้มเหลวในอุโมงค์ที่ทำงานอยู่
อุโมงค์ที่บรรทุกแอปเว็บแต่ไม่บรรทุกแอป UDP มีคำอธิบายที่เป็นไปได้หลายอย่าง และการกรองโปรโตคอลชั้นในโดย ISP ไม่ใช่ข้อแรก ที่พบบ่อยที่สุดคือความครอบคลุม แอปทั้งสองไม่ได้เข้าไปในอุโมงค์เดียวกันทั้งคู่ เพราะเส้นทางไปยังปลายทาง UDP หายไปหรือกฎอุโมงค์แยกของไคลเอนต์ตัดมันออก
อย่างที่สองคือปลายทาง เซิร์ฟเวอร์ VPN ที่อนุญาตรายการโปรโตคอล ไฟร์วอลล์ที่ปลายทาง หรือบริการที่ไม่เคยฟังบนพอร์ตที่คาดไว้ ทั้งหมดจะสร้างการหมดเวลา ซึ่งดูเหมือนการบล็อกของเครือข่ายอย่างยิ่ง
อย่างที่สามคือขนาดแพ็กเก็ต แอป UDP มักส่งดาต้าแกรมที่ใหญ่กว่าคำขอเว็บ และการห่อหุ้มลด MTU ที่ใช้ได้ ดังนั้นหลังการจับมือที่สำเร็จอาจตามมาด้วยความเงียบในเพย์โหลดเต็มขนาดแรก รูปแบบนี้อ่านผิดว่าเป็นการบล็อกได้ง่าย เพราะแพ็กเก็ตเล็กผ่านไปได้และแพ็กเก็ตใหญ่หายไป การตรวจ MTU อย่างรวดเร็วตัดสินเรื่องนี้ได้ในไม่ถึงหนึ่งนาที และคำตอบมักเป็นเพย์โหลดที่เล็กลงหรือ MSS ที่แก้ไขแล้ว ไม่ใช่ฟิลเตอร์เครือข่าย
ping -M do -s 1400 -c 2 10.60.0.20 iperf3 -u -c 10.60.0.20 -p 5201 -b 1M -t 5
คำสั่งแรกทดสอบว่าแพ็กเก็ตใหญ่ผ่านเส้นทางได้หรือไม่เมื่อปิดการแบ่งส่วน ซึ่งเปิดเผยปัญหา MTU ได้อย่างรวดเร็ว คำสั่งที่สองส่งสตรีม UDP ขนาดเล็กที่จำกัดและรายงานการสูญหายและจิทเทอร์ สตรีมที่เริ่มแล้วหยุดชี้ไปที่ขนาด ไม่ใช่การบล็อก
รายงานชั้น ไม่ใช่โปรโตคอล
เขียนสิ่งที่พบในรูปแบบใดรูปแบบหนึ่งจากสามแบบ การส่งมอบชั้นนอกล้มเหลว การส่งต่อชั้นในล้มเหลว หรือแอปล้มเหลว แต่ละอย่างมีเจ้าของต่างกัน และการผสมปนเปกันจะส่งตั๋วไปยังทีมผิด
การเปลี่ยนพอร์ตภายในเครื่องไม่สามารถสร้างตัวรับที่ตรงกันที่ปลายทางไกลได้ ดังนั้นวิธีเลี่ยงฝั่งไคลเอนต์ที่ดูเหมือนช่วยได้มักเป็นหลักฐานว่าปลายทางเดิมผิด การมีโปรไฟล์ทางเลือกที่ให้มาก็พิสูจน์บางอย่างเกี่ยวกับการเข้าถึงและไม่พิสูจน์อะไรเลยว่าแอปได้รับการกำหนดค่าอย่างถูกต้องหรือไม่
แยกการอนุมานออกจากการสังเกตด้วย การวิเคราะห์ทราฟฟิกสามารถบ่งชี้ว่าโฟลว์คืออะไรโดยไม่ต้องถอดรหัส และนั่นเป็นสิ่งที่พบที่มีประโยชน์ แต่ไม่ใช่ข้อกล่าวอ้างเดียวกับการอ่านเฮดเดอร์ชั้นใน ระบุว่าคุณมีสิ่งใดจริง ๆ