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

ดูว่าอินเทอร์เฟซอุโมงค์พาอะไรจริง ๆ

TUN ส่งแพ็กเก็ต IP ให้โฮสต์ ส่วน TAP ส่งเฟรม Ethernet การออกแบบแบบเราเตอร์ใช้อย่างแรก ซึ่งหมายความว่าแพ็กเก็ตที่มาถึงหลังการถอดรหัสไม่มีเฮดเดอร์ชั้นเชื่อมโยงเลย จึงไม่มีแท็ก 802.1Q ให้อ่าน ไม่มีอะไรถูกปอกระหว่างทาง เพราะแท็กไม่เคยเข้าไปในอุโมงค์ แพ็กเก็ตชั้นในเริ่มที่เฮดเดอร์ IP ของมัน ดังนั้นทุกฟิลด์ที่กฎซึ่งรู้จัก VLAN คาดหวังก็ไม่มีอยู่เลย

ยืนยันชนิดของอินเทอร์เฟซก่อนจะโต้แย้งเรื่องการดักจับ เพราะอุปกรณ์ TAP ในการติดตั้งเดียวกันจะทำงานต่างออกไปและชักนำไปสู่ข้อสรุปที่ผิด

ip -d link show tun0
tcpdump -i tun0 -nn -e -c 20

คำสั่งแรกพิมพ์ชนิดของอุปกรณ์และแฟล็กของมัน คำสั่งที่สองพิมพ์เฮดเดอร์ชั้นเชื่อมโยงของยี่สิบแพ็กเก็ตแรก และบนอุปกรณ์ TUN เอาต์พุตเริ่มที่ IP โดยไม่มีบล็อก Ethernet ซึ่งเป็นคำอธิบายทั้งหมดในหน้าจอเดียว

การเลือก TAP ก็ไม่ได้คืนแท็ก อุปกรณ์ TAP ส่งเฟรมไปยังบริดจ์ และสิ่งที่เกิดขึ้นกับแท็กขึ้นอยู่กับการกรอง VLAN ของบริดจ์และการเป็นสมาชิกที่กำหนดค่าไว้ของพอร์ต นั่นเป็นการตัดสินใจออกแบบแยกต่างหากที่มีโหมดล้มเหลวของตัวเอง

ยืนอยู่ที่ใดที่หนึ่งในสามแห่งและยอมรับสิ่งที่มันมองเห็นได้

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

สามตำแหน่งนั้นตอบคำถามสามข้อที่ต่างกัน และการดักจับครั้งเดียวไม่อาจเป็นทั้งสามพร้อมกันได้

tcpdump -i eth0 -nn -e 'vlan' -c 10
tcpdump -i tun0 -nn -c 10

เรียกใช้คู่คำสั่งและเปรียบเทียบ คำสั่งแรกแสดงเฟรมที่ติดแท็กและ ID ของ VLAN ในตำแหน่งที่ลิงก์สาขาทำทรังค์ไปยังโฮสต์ ส่วนคำสั่งที่สองแสดงบทสนทนาเดียวกันเป็น IP ธรรมดาหลังการเปลี่ยนเส้นทาง หากคำสั่งแรกไม่คืนอะไรเลย ให้ตรวจสอบว่าพอร์ตของโฮสต์เป็นพอร์ตเข้าถึงหรือไม่ เพราะเมื่อเป็นเช่นนั้นสวิตช์ได้ถอดแท็กออกแล้ว และการดักจับใดบนโฮสต์ก็จะไม่แสดงมันอีก

แทนที่แท็กที่หายไปด้วยการแมปที่คุณปกป้องได้

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

เชื่อถืออินเทอร์เฟซและบริบทการเปลี่ยนเส้นทางที่คุณควบคุม ไม่ใช่ป้ายที่ไคลเอนต์ให้มา ฟิลด์เฮดเดอร์ที่คู่ค้าสามารถตั้งได้ไม่ใช่หลักฐานของการเป็นสมาชิก และกฎตรวจสอบที่ถือว่ามันเป็นเช่นนั้นก็ถูกข้ามได้ง่าย

ip route get 10.20.30.40
ip -br addr show

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

ตรวจสอบเส้นทางขากลับและเพย์โหลดก่อนที่จะเชื่อถือผลลัพธ์

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

การกู้คืนแพ็กเก็ต IP ชั้นในก็ไม่ได้ถอดรหัสเซสชัน HTTPS ที่อยู่ข้างใน หากคำถามนโยบายเกี่ยวกับเนื้อหาไม่ใช่โฟลว์ ตำแหน่งของเซนเซอร์ต้องขยับอีกครั้ง และการตัดสินใจนั้นเป็นของเอกสารออกแบบเดียวกัน

การขยายทรังค์ที่ไม่จำกัดไปจนถึงเซนเซอร์เพียงเพื่อให้ฟิลด์ VLAN ปรากฏขึ้นจะขยายขอบเขตเครือข่ายโดยไม่ตอบคำถามเดิม เลือกตำแหน่งสำหรับข้อมูลที่นโยบายต้องการ บันทึกสิ่งที่มันมองไม่เห็น และทบทวนทางเลือกเมื่อคำถามเปลี่ยนไป

บทความที่เกี่ยวข้อง