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

ไคลเอนต์เบื้องหน้าและไคลเอนต์แบบดีมอน

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

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

SIGUSR1 ไม่ใช่การตัดการเชื่อมต่อ แต่ขอให้ไคลเอนต์เริ่มอุโมงค์ใหม่

อินสแตนซ์ systemd

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

systemctl list-units 'openvpn-client@*'
systemctl stop [email protected]

อ่าน ExecStart ของ unit เมื่อคุณไม่แน่ใจว่าอินสแตนซ์โหลดโปรไฟล์ใด

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

โปรไฟล์ NetworkManager

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

nmcli connection show --active
nmcli connection down uuid actual-uuid

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

เอกสารอ้างอิงคำสั่งของตัวจัดการอธิบายวิธีเลือกเป้าหมาย down

เซสชัน OpenVPN 3

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

openvpn3 sessions-list
openvpn3 session-manage --path /net/openvpn/v3/sessions/... --disconnect

การตัดการเชื่อมต่อทุกเซสชันเป็นการกระทำที่แตกต่าง และควรเป็นความตั้งใจ

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

สิ่งที่ต้องตรวจสอบภายหลัง

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

ip -brief address
ip route get 10.8.0.1

การลบอินเทอร์เฟซด้วยมือไม่ได้หยุดเจ้าของ และทำให้การทำความสะอาดค้างอยู่ครึ่งทาง

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

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