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

เส้นทางหนึ่งส่งต่อแพ็กเก็ตให้คนอื่น อีกเส้นทางส่งถึงโฮสต์เอง

แพ็กเก็ตที่ส่งถึงโฮสต์จะอยู่ในโฮสต์

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

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

ทำไม ip_forward จึงไม่ใช้บังคับ

การส่งต่อควบคุมแพ็กเก็ตที่ต้องออกผ่านอินเทอร์เฟซอื่นที่ไม่ใช่ตัวที่มันเข้ามา การปิงไปยังโฮสต์เองไม่เคยใช้เส้นทางนั้น แพ็กเก็ตถูกใช้ภายในและคำตอบถูกสร้างภายใน ดังนั้นการตั้งค่า net.ipv4.ip_forward=0 จึงไม่เปลี่ยนอะไรที่นี่ และกฎในเชนส่งต่อก็ไม่เคยเห็นทราฟฟิกนั้น การควบคุมที่ถูกต้องอยู่บนเส้นทางขาเข้า จำกัดด้วยอินเทอร์เฟซขาเข้าหรือต้นทาง

นั่นคือเหตุผลที่การปิดการส่งต่อและสมมติว่าโฮสต์ถูกแยกออกจากกันทำให้เกิดความรู้สึกปลอดภัยที่ไม่จริง

อ่านตารางภายในที่ตัดสินใจ

ip rule show มักรายงานกฎที่มีลำดับความสำคัญศูนย์ซึ่งส่งการค้นหาทั้งหมดไปยังตารางภายในก่อน และ ip route show table local แสดงรายการที่อยู่ของโฮสต์เองด้วยขอบเขตภายใน ตารางนั้นรวมที่อยู่บนอินเทอร์เฟซที่ถูกปิดในทางบริหารแต่ยังคงกำหนดค่าไว้ ที่อยู่ IPv4 ที่กำหนดแบบคงที่มักอยู่รอดจากการขาดการเชื่อมต่อ และนั่นคือเหตุผลที่การปิงไปยังบริดจ์ที่ปิดอยู่ยังอาจสำเร็จและทำให้ผู้ดูแลประหลาดใจ

IPv6 แตกต่างในประเด็นนี้โดยตรง ที่อยู่ของมันมักถูกถอนเมื่อลิงก์ล่ม เว้นแต่ keep_addr_on_down ถูกตั้งไว้ เปรียบเทียบทั้งสองตระกูลแทนที่จะสมมติว่ากฎเดียวครอบคลุมทั้งคู่

เพื่อนเข้าถึงอะไรได้จริง

คำตอบจากที่อยู่ของเราเตอร์เองบนเซกเมนต์ไม่ได้บอกอะไรเกี่ยวกับเครื่องที่อยู่หลังเซกเมนต์นั้น เพื่อนไม่สามารถเข้าถึงโฮสต์หลังอินเทอร์เฟซอื่นผ่านเส้นทางนี้ได้ มันเข้าถึงได้เฉพาะที่อยู่ที่เราเตอร์เองมีเท่านั้น การทดสอบบริการบนโฮสต์ LAN แยกต่างหาก แทนการปิงที่อยู่ของเราเตอร์ คือสิ่งที่กำหนดว่าการส่งต่อได้รับอนุญาตหรือไม่

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

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

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