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

สำหรับการเชื่อมต่อที่ GUI จัดการ คำสั่งที่มีประโยชน์คือข้อความถึง GUI ไม่ใช่สัญญาณถึง openvpn.exe

ขั้นแรก ระบุเจ้าของ

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

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

จากนั้นส่งคำสั่งตัดการเชื่อมต่อของเจ้าของเอง

หากติดตั้ง GUI ไว้ที่พาธในตัวอย่างและมีโปรไฟล์ชื่อ office คำสั่งทั้งหมดคือบรรทัดเดียว:

"C:\Program Files\OpenVPN\bin\openvpn-gui.exe" --command disconnect office

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

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

ตรวจสอบว่าไม่มีอย่างอื่นล่ม

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

taskkill /F /IM openvpn.exe แย่กว่าในสองทาง มันเลือกโปรเซสตามชื่อไฟล์เรียกทำงานและบังคับให้สิ้นสุด จึงไม่ได้แสดงชื่อโปรไฟล์หรือลำดับการตัดการเชื่อมต่อปกติของเจ้าของ การเรียกสิ่งนั้นว่าการปิดอย่างเรียบร้อยคือการซ่อนปัญหาทั้งสองไว้หลังสถานะออกเดียว

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

ยืนยันสถานะ ไม่ใช่รหัสออก

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

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

สิ่งที่ควรใส่ในบันทึก

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

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

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