หนึ่งขึ้น ศูนย์เชื่อมต่อ: บรรทัด strongSwan นั้นนับอะไร
หัวเรื่องเก่านับสมาคม IKE ไม่ใช่ซับเน็ตหรือ SA ลูก ดังนั้นอ่านคำนิยามที่โหลดและลูกที่ติดตั้งก่อน
อ่านบรรทัดสถานะที่บอกว่า Security Associations (1 up, 0 connecting) แล้วดูเหมือนรายงานของอุโมงค์หนึ่งที่ทำงานอยู่ มีสองซับเน็ตส่งทราฟฟิกผ่านมันพร้อมกัน ตัวเลขจึงดูเหมือนโกหก มันไม่ได้โกหก มันนับสมาคม IKE และหนึ่งในนั้นรองรับลูกได้หลายตัว อ่านรายการสินค้าคงคลังก่อนที่คุณจะแตะข้อเสนอหรือเส้นทาง
ทำไมหัวเรื่องกับทราฟฟิกจึงไม่ตรงกัน
เอาต์พุต stroke แบบเก่าเรียกยอดรวมว่าสมาคมความปลอดภัยและดึงมาจากตัวจัดการสมาคม IKE ทุกสมาคม IKE ที่สร้างขึ้นเพิ่มหนึ่งรายการ ไม่ว่าจะมี CHILD SA กี่ตัวอยู่ข้างใต้ พ่อแม่ IKEv2 หนึ่งตัวมักพาลูกหลายตัว หนึ่งตัวต่อคู่ตัวเลือกทราฟฟิก และตัวเลือกที่เจรจาแล้วของลูกสามารถครอบคลุมมากกว่าหนึ่งที่อยู่หรือคำนำหน้า จำนวนที่อยู่ในคอนฟิกของคุณจึงไม่มีความสัมพันธ์ตายตัวกับตัวเลขในหัวเรื่อง
เอาต์พุตสมัยใหม่บางครั้งแสดงยอดรวมแทนคำว่า “up” แบบเก่า และดีมอนที่จัดการโดย swanctl ไม่ได้ถูกขับด้วยการตั้งค่า stroke เก่าเลย อย่าถือว่าคำหรือกฎการนับเหมือนกันทุกเวอร์ชัน
เปรียบเทียบสามรายการก่อนจะเปลี่ยนอะไร
เริ่มจากสิ่งที่โหลดแล้ว จากนั้นสิ่งที่เจรจาแล้ว จากนั้นสิ่งที่เคลื่อนแพ็กเก็ตจริง นี่คือสามคำถามที่ต่างกันและแต่ละข้อมีคำสั่งของตัวเอง
swanctl --list-conns
swanctl --list-sas
รายการแรกแสดงคำนิยามการเชื่อมต่อที่ดีมอนยอมรับ รายการที่สองแสดงสมาคม IKE ที่สร้างขึ้นพร้อมลูก ซึ่งเป็นที่ที่ลำดับชั้นจริงปรากฏ คำนิยามที่มีในไฟล์แต่ไม่มีในรายการแรกไม่เคยถูกโหลด และการลองใหม่ของผู้เริ่มต้นกี่ครั้งก็แก้ไม่ได้ ถ้าคุณใช้ส่วนต่อประสานแบบเก่าแทน คู่ที่เทียบเท่าคือ ipsec statusall และรายการ swanctl เดียวกัน ขึ้นอยู่กับว่าปลั๊กอินใดเป็นเจ้าของคอนฟิก อย่าเอาเครื่องมือของดีมอนสองตัวบนโฮสต์เดียวมาปนกัน และอย่าคาดหวังคำตอบเดียวที่สอดคล้อง
swanctl --list-sas --raw | head -40
ip -s xfrm state
รูปแบบดิบเก็บตัวระบุและตัวเลือกให้เห็นสำหรับการเปรียบเทียบ และรายการสถานะเคอร์เนลแสดงสิ่งที่สแตกคิดว่าติดตั้งแล้ว เมื่อดีมอนกับเคอร์เนลไม่ตรงกัน แสดงว่าดีมอนรีสตาร์ตรอบลูกที่มีอยู่หรือออบเจ็กต์เคอร์เนลถูกลบออกไปข้างใต้
อ่านลำดับชั้น ไม่ใช้อ่านยอดรวม
พ่อแม่ที่สร้างแล้วตัวอย่างหนึ่งตัวที่มีลูกสองตัวดูเหมือนโหนดเดียวที่มีลูกสองตัวอยู่ข้างใต้ แต่ละตัวมีสถานะและโหมดของตัวเองกำกับ ดัมป์เอาต์พุตจริงและนับลูกด้วยตัวเองแทนการอ่านสรุปที่ใครบางคนวางจากแดชบอร์ด
swanctl --list-sas
swanctl --list-conns --raw | grep -A4 'accounting'
พ่อแม่หนึ่งตัวที่มีลูกติดตั้งสองตัวคืออุโมงค์สองซับเน็ตที่แข็งแรง พ่อแม่หนึ่งตัวที่มีลูกติดตั้งหนึ่งตัวและลูกที่หายไปหนึ่งตัวเป็นอีกสถานการณ์ และตัวเลือกของลูกที่หายไปคือสิ่งที่ต้องเทียบกับข้อเสนอของฝั่งไกล ระหว่างการเปลี่ยนคีย์ ลูกเก่าและตัวแทนของมันอาจปรากฏพร้อมกันในช่วงสั้น ๆ เก็บเวลากำกับไว้กับภาพสแนปช็อต เพราะการนับที่ทำกลางการเปลี่ยนคีย์ดูเหมือนการซ้ำ และการนับที่ทำหลังจากนั้นดูเหมือนการสูญหาย
โหลดแล้ว ติดตั้งแล้ว และทราฟฟิกที่ผ่านไป
ลูกที่อยู่ในสถานะติดตั้งมีพารามิเตอร์ที่เจรจาแล้วและรายการในเคอร์เนล แต่ มันอาจยังไม่ได้บรรทุกแพ็กเก็ต: ตัวเลือกอาจแคบกว่าทราฟฟิกที่คุณคาด และเส้นทางอาจส่งทราฟฟิกนั้นไปที่อื่นก่อนที่อุโมงค์จะเห็น ส่งโฟลว์ที่ตรงกับตัวเลือกที่เจรจาแล้วจากโฮสต์ที่ได้รับอนุญาต แล้วอ่านตัวนับของลูกแทนหัวเรื่อง ตัวนับที่ค้างที่ศูนย์ขณะที่คุณสร้างทราฟฟิกที่ตรงกันชี้ไปที่การกำหนดเส้นทางหรือนโยบาย ไม่ใช่ IKE
swanctl --initiate --child accounting
swanctl --list-sas --raw | grep -E 'bytes|packets'
การเริ่มลูกที่ระบุชื่อเป็นการกระทำโดยเจตนาที่มีผลลัพธ์มองเห็นได้ และมันแยก “การเชื่อมต่อว่างเพราะไม่มีใครขอ” ออกจาก “การเชื่อมต่อขึ้นไม่ได้” นโยบายกับดักตามคำขอทำงานเหมือนกรณีแรกทุกประการ ดังนั้นอ่านการตั้งค่าการเริ่มของการเชื่อมต่อก่อนจะเรียกมันว่าข้อบกพร่อง
เมื่อการนับผิดจริง ๆ
ถ้าคำนิยามหายไปจากรายการที่โหลด ให้ดูการโหลดคอนฟิกและดูว่าอินสแตนซ์ดีมอนใดกำลังทำงาน ถ้าโหลดแล้วแต่ไม่เคยเจรจา ให้เทียบข้อเสนอ บริบทการพิสูจน์ตัวตน และตัวเลือกกับคู่ตรงข้าม ทีละลูก เปลี่ยนทีละองค์ประกอบต่อการลองหนึ่งครั้งและบันทึกตัวระบุที่คุณเปลี่ยน การย้อนข้อเสนอเป็นเรื่องง่ายเมื่อรู้ว่าอันไหน แต่เป็นการเดาหลังจากการแก้ไขสามครั้งที่ไม่ได้แยกจากกัน
แก้การอ่านผิดก่อน รายงานส่วนใหญ่เกี่ยวกับอุโมงค์ที่สองที่ “หายไป” จบลงด้วยลูกที่ติดตั้งสองตัวใต้พ่อแม่หนึ่งตัว และสิ่งเดียวที่เคยเสียคือบรรทัดสรุปที่ผู้คนเชื่อแทนลำดับชั้น