ฟิลเตอร์ไลต์เฮาส์ของ Nebula กับไฟร์วอลล์: แต่ละชั้นบล็อกอะไร
รายการที่อนุญาตของไลต์เฮาส์เลือกว่าปลายทางในชั้นล่างรายการใดที่เพียร์ประกาศหรือลองใช้ กฎไฟร์วอลล์ควบคุมทราฟฟิกใน overlay หลังแฮนด์เชก
มองแฮนด์เชกของ Nebula จากด้านที่ผิด แล้วกลไกทั้งสองจะดูใช้แทนกันได้ ตัวหนึ่งตัดสินว่าโหนดจะบอกไลต์เฮาส์เรื่องที่อยู่ใดและจะลองที่อยู่ระยะไกลใด อีกตัวตัดสินว่าอะไรผ่านได้เมื่ออุโมงค์มีอยู่แล้ว ฟิลเตอร์สามารถหยุดการเชื่อมต่อได้ก่อนที่กฎไฟร์วอลล์ข้อใดจะถูกประเมิน และกฎไฟร์วอลล์ไม่สามารถทำให้ปลายทางที่การค้นพบลบออกไปกลับมามีชีวิตได้ สองชั้นตอบคำถามต่างกัน และลำดับที่มันทำงานคือกุญแจ
ติดตามการเชื่อมต่อหนึ่งรายการผ่านสี่ขั้นตอน คือ ที่อยู่ภายในที่ประกาศ ปลายทางระยะไกลที่พิจารณา แฮนด์เชก และทราฟฟิกใน overlay แต่ละขั้นมีคอนฟิกของตัวเองและลายเซ็นความล้มเหลวของตัวเอง
เริ่มจากที่อยู่ภายในที่โหนดประกาศ
local_allow_list กรองที่อยู่ภายในของโฮสต์นี้ก่อนที่จะถูกรายงานไปยังไลต์เฮาส์ รายการอาจเป็นช่วงที่อยู่ และคอนฟิกยังรองรับรูปแบบชื่ออินเทอร์เฟซด้วย สิ่งนี้มีประโยชน์เมื่อโฮสต์มีบริดจ์ของคอนเทนเนอร์หรืออินเทอร์เฟซอุโมงค์เพิ่มเติมที่ไม่ควรกลายเป็นปลายทางของเพียร์
ไล่ดูอินเทอร์เฟซของโฮสต์แล้วถามว่าอันใดที่เพียร์ระยะไกลเข้าถึงได้จริง ที่อยู่บริดจ์ของ Docker เป็นเรื่องภายในของโฮสต์นั้นและไร้ประโยชน์สำหรับเพียร์ในเครือข่ายอื่น การประกาศมันทำให้การค้นพบสูญเปล่าและอาจส่งเพียร์ไปยังที่อยู่ที่ไม่เคยตอบกลับ สิ่งใดที่เพียร์ไม่สามารถเราเตอร์ไปถึงได้คือเสียงรบกวนในคำตอบของไลต์เฮาส์
รายการอนุญาตที่แคบปลอดภัยกว่ารายการบล็อกที่กว้างในที่นี้ หากมีเฉพาะรายการอนุญาต ส่วนที่เหลือซึ่งไม่ได้ระบุจะถูกกันออก การเพิ่มรายการบล็อกภายหลังจะเปลี่ยนตรรกะเริ่มต้นและต้องมีการตรวจทานของตัวเอง การเปลี่ยนแปลงนั้นสมควรได้รับการพิจารณาค่าเริ่มต้นอีกครั้ง
จากนั้นสังเกตการเลือกปลายทางระยะไกล
remote_allow_list กรองที่อยู่ที่โฮสต์นี้จะพิจารณาสำหรับเพียร์ระยะไกลระหว่างแฮนด์เชก ใช้กับที่อยู่ในชั้นล่าง ไม่ใช่ที่อยู่ใน overlay ที่เพียร์จะใช้หลังจากอุโมงค์ขึ้นแล้ว
ช่วงส่วนตัวอาจใช้งานได้เต็มที่ในเครือข่ายสำนักงานที่ใช้ร่วมกัน และไร้ความหมายเมื่อโฮสต์ทั้งสองอยู่ในเครือข่ายที่ไม่เกี่ยวข้องกันซึ่งทั้งคู่ใช้ 10.0.0.0/8 ฟิลเตอร์ช่วยให้คุณเลือกเส้นทางที่เราเตอร์ได้และไม่สนใจความบังเอิญ
เมื่อเพียร์เชื่อมต่อไม่ได้ ให้เทียบที่อยู่ที่กำลังลองกับกฎที่ตรงกับมัน เปิดบันทึกแฮนด์เชกและอ่านที่อยู่ระยะไกลที่เลือกไว้ บรรทัดบันทึกระบุปลายทางที่รอดจากการกรอง ซึ่งมีประโยชน์กว่ารายการที่อยู่ที่เพียร์มี
ฟิลเตอร์ชื่ออินเทอร์เฟซฝั่งที่ประกาศสามารถลบปลายทางออกได้ก่อนที่ฝั่งที่รับจะเห็นด้วยซ้ำ ตรวจสอบทั้งสองโหนดเมื่อมีเพียงทิศทางเดียวที่ล้มเหลว
หลังแฮนด์เชก กฎการเข้าถึงของ overlay มีผล
กฎไฟร์วอลล์ของ Nebula ทำงานภายใน overlay หลังจากอุโมงค์ถูกสร้างขึ้น กฎเหล่านี้จับคู่โฮสต์ กลุ่ม พอร์ต และโปรโตคอล และตัดสินว่าแพ็กเก็ตจะเข้าหรือออกจากโฮสต์ภายในได้หรือไม่ กฎเหล่านี้ไม่ได้เลือกปลายทางในชั้นล่าง
การแยกนี้อธิบายการวินิจฉัยผิดที่พบบ่อย ผู้ดูแลเพิ่มกฎไฟร์วอลล์สำหรับพอร์ตหนึ่งและยังเชื่อมต่อไม่ได้ เพราะฟิลเตอร์ไลต์เฮาส์ลบปลายทางเดียวที่เข้าถึงได้ออกไป ผู้ดูแลอีกคนเปิดฟิลเตอร์ที่อยู่และยังไปไม่ถึงบริการ เพราะไฟร์วอลล์ของ overlay ปฏิเสธพอร์ตนั้น
อ่านความล้มเหลวที่ชั้นที่ถูกต้อง แฮนด์เชกที่ไม่เคยเสร็จสิ้นชี้ไปที่การค้นพบ การกรองปลายทาง หรือเส้นทางเครือข่าย แฮนด์เชกที่เสร็จสิ้นแล้วตามด้วยการเชื่อมต่อบริการที่ถูกปฏิเสธหรือถูกทิ้งชี้ไปที่ไฟร์วอลล์ของ overlay หรือแอปพลิเคชัน
อ่านค่าเริ่มต้นเมื่อผสมการอนุญาตกับการบล็อก
คอนฟิกของไลต์เฮาส์รองรับรายการอนุญาตเท่านั้น บล็อกเท่านั้น และแบบผสม และค่าเริ่มต้นสำหรับส่วนที่เหลือซึ่งไม่ได้ระบุแตกต่างกันระหว่างรูปแบบเหล่านี้ รายการผสมต้องมีค่าเริ่มต้นที่ชัดเจนสำหรับตระกูลที่อยู่ การถือว่าส่วนที่เหลือทำงานเหมือนคอนฟิกก่อนหน้าคือทางที่ปลายทางที่ทำงานอยู่หายไปอย่างเงียบ ๆ
lighthouse:
local_allow_list:
interfaces:
docker0: false
remote_allow_list:
192.168.0.0/16: true
default: false
ถือว่าค่าเริ่มต้นเป็นส่วนหนึ่งของกฎ ไม่ใช่ข้อความแม่แบบ หากค่าเริ่มต้นของตระกูลคือบล็อก ที่อยู่ทุกรายการที่ไม่ได้ระบุจะถูกกันออก รวมถึงช่วงสำนักงานใหม่ที่เพิ่มหลังจากเขียนคอนฟิกแล้ว
บันทึกว่าที่อยู่ใดตั้งใจให้เข้าถึงได้และทดสอบจากทั้งสองด้าน ฟิลเตอร์ที่ใช้ได้กับคู่เพียร์หนึ่งอาจล้มเหลวกับอีกคู่ที่มีเส้นทางร่วมกันเพียงเส้นเดียวใช้ที่อยู่ที่รายการกันออก
ใช้ relay เมื่อไม่มีปลายทางตรงที่เข้าถึงได้
หากปลายทางที่เป็นไปได้ทุกรายถูกกรองออกหรือเข้าถึงไม่ได้ คำตอบไม่ใช่รายการอนุญาตที่กว้างขึ้นซึ่งรับที่อยู่ที่คุณไม่ไว้วางใจกลับมา คอนฟิก relay ของ Nebula มีเส้นทางเพียร์ทางเลือกเมื่อการเชื่อมต่อโดยตรงทำไม่ได้
Relay แก้ปัญหาการขนส่งและการค้นพบ ไม่ใช่การอนุญาต และไม่ได้ขยายไฟร์วอลล์ ไฟร์วอลล์ของ overlay ยังคงตัดสินว่าบริการใดใช้ได้ และ relay ไม่เปลี่ยนการกรองของไลต์เฮาส์ให้เป็นกลไกควบคุมการเข้าถึง
ทดสอบเส้นทาง relay โดยปิดปลายทางตรงและยืนยันว่าบริการที่ตั้งใจยังทำงานในขณะที่บริการที่ไม่ตั้งใจไม่ทำงาน การทดสอบครั้งเดียวนั้นแยกการแก้ไขการขนส่งจากการเปลี่ยนนโยบายและทำให้สองชั้นซื่อสัตย์