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

สามคำถาม เอาต์พุตคำสั่งเดียว

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

QuestionEvidence it needsWhat does not answer it
Is the peer reachable now?A recent handshake and a working return pathAn interface that exists
Has it been active?Transfer counters moving over timeA handshake timestamp alone
Is access still granted?The configuration or controller that authorizes itAny protocol timer

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

ตัวจับเวลาควบคุมอะไรจริง ๆ

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

PersistentKeepalive มักถูกเข้าใจผิดว่าเป็นเวลาหมดอายุที่ขาดหายไป มันส่งแพ็กเก็ตว่างที่ผ่านการพิสูจน์ตัวตนเพื่อรักษาการแมป NAT ให้คงอยู่ และการตั้งค่าเป็นศูนย์จะหยุดแพ็กเก็ตเหล่านั้นโดยไม่เพิกถอนสิ่งใด

อ่านสถานะขณะทำงานของแต่ละพีร์ โดยใช้คีย์สาธารณะแทนความคิดเห็น:

wg show wg0 latest-handshakes
wg show wg0 transfer

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

ทำไมพีร์ที่ไม่ได้ใช้งานจึงไม่ใช่พีร์ที่ออกจากระบบ

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

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

วางกำหนดเวลาไว้ที่ที่การอนุญาตอยู่

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

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

sudo wg set wg0 peer <public-key> remove
sudo wg-quick save wg0

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

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