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

ในตั๋วเหล่านี้มักมีสองอย่างผิดพร้อมกัน คือมีการยกเว้นคอมโพเนนต์ผิดตัว และไม่มีการจำกัดการยกเว้นให้แคบลงในภายหลัง

หาโปรเซส ไม่ใช่หน้าต่าง

ทำซ้ำการทำงานที่ล้มเหลวและระบุโปรเซสหรือแพ็กเกจที่เป็นเจ้าของการเชื่อมต่อขณะที่มันเกิดขึ้น บน Windows นี่เป็นคำถามที่ต่างจากหน้าต่างใดมีโฟกัส เพราะการถ่ายโอนเบื้องหลังอาจมีบริการที่ทำงานภายใต้ตัวตนของตัวเองเป็นตัวกลาง บน Linux และ macOS การแยกแบบเดียวกันปรากฏเป็นโปรเซสตัวช่วยและเดมอนของระบบ

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

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

มอง DNS เป็นเส้นทางของมันเอง

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

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

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

อย่าขยายตัวช่วยที่ใช้ร่วมกัน

บริการที่ใช้ร่วมกันทำงานให้หลายแอปพลิเคชัน การยกเว้นมันเพื่อซ่อมลำดับงานเดียวจึงเปลี่ยนทราฟฟิกที่ไม่เกี่ยวข้องด้วย Background Intelligent Transfer Service บน Windows เป็นตัวอย่างที่ดีของรูปแบบนี้ คือเป็นโครงสร้างพื้นฐานที่หลายแอปพลิเคชันใช้ได้ และตัวตนของมันไม่ใช่ตัวตนของแอปที่ร้องขอการถ่ายโอน

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

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

ทดสอบลำดับงานทั้งหมด ไม่ใช่ขั้นตอนที่ล้มเหลว

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

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

ทิ้งเหตุผล ไม่ใช่รายชื่อ

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

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

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