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

อุโมงค์เชื่อมต่อใหม่ แล้วก็ไม่มีอะไรออกไป

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

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

อธิบายข้อยกเว้นที่คุณตั้งใจจริง

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

คำสั่งด้านล่างแสดงรูปแบบสำหรับปลายทาง IPv4 UDP หนึ่งจุดบนอัปลิงก์แบบมีสาย แทนที่ทั้งสองค่าด้วยค่าที่คุณตรวจสอบกับการติดตั้งใช้งานแล้ว

sudo ufw allow out on enp3s0 proto udp to 192.0.2.44 port 1194
sudo ufw status verbose

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

รีเฟรชเป็นเวิร์กโฟลว์เดียว

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

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

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

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

เลิกใช้การอนุญาตเก่าอย่างตั้งใจ

การลบคือจุดที่มีความเสี่ยงมากที่สุด เพราะกฎเก่าเป็นสิ่งเดียวที่ทำงานอยู่ตอนนี้ หากการติดตั้งผู้สมัครล้มเหลว อย่าดำเนินการต่อและอย่าลบรายการที่ยังรับส่งข้อมูลอยู่ หากการลบเองล้มเหลว ให้บันทึกการอนุญาตที่ล้าสมัยว่าเป็นสิ่งที่ล้าสมัย แทนที่จะประกาศว่านโยบายเป็นปัจจุบัน

ทบทวนทั้งหมดซ้ำเมื่ออัปลิงก์เปลี่ยนจาก Ethernet เป็น Wi-Fi เมื่อการขนส่งเปลี่ยน หรือเมื่อบริการหมุนเวียนไปหลายที่อยู่ กฎที่เจาะจงอินเทอร์เฟซควรหยุดตรงกันหลังการเปลี่ยนเครือข่าย และพฤติกรรมนั้นถูกต้องแม้จะดูเหมือนการถดถอย

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

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