Đóng cửa sổ terminal không giống như đóng một đường hầm, và giết một tiến trình không giống như dừng một dịch vụ. Trên Linux, lệnh thực sự ngắt kết nối phụ thuộc vào thành phần nào đã khởi động kết nối và do đó sở hữu vòng đời của nó. So sánh dưới đây bao gồm bốn cách bố trí bạn dễ gặp nhất, và mã định danh mà mỗi cách cần.

Máy khách nền trước và máy khách đã daemon hóa

Máy khách được khởi động thủ công trong terminal thuộc về terminal đó. Ctrl+C gửi một ngắt, máy khách tháo gỡ giao diện của nó, và đường hầm kết thúc. Không cần thông báo cho bất cứ thứ gì khác.

Máy khách được khởi động qua lớp bọc shell và để chạy nền không thuộc về ai cụ thể, và đó chính là trường hợp người ta với tay tới killall. Trước tiên hãy tìm tiến trình, xác nhận dòng lệnh của nó có nhắc đến hồ sơ bạn muốn, rồi gửi tín hiệu kết thúc thông thường. Một tiến trình được giám sát bị giết dưới trình giám sát của nó sẽ chỉ đơn giản được khởi động lại, vì vậy việc xác định chủ sở hữu quan trọng hơn việc chọn tín hiệu. Chỉ gửi tín hiệu cho nhóm tiến trình khi bạn đã xác nhận không có đường hầm nào khác chia sẻ nhóm đó.

SIGUSR1 không phải là ngắt kết nối; nó yêu cầu máy khách khởi động lại đường hầm.

Các phiên bản systemd

Khi một unit sở hữu kết nối, unit chính là đối tượng cần dừng. Các phiên bản mẫu như openvpn-client@office mang tên hồ sơ, và dừng mục tiêu mẫu thay vì phiên bản có thể ảnh hưởng đến mọi máy khách trên máy chủ.

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

Đọc ExecStart của unit khi bạn không chắc phiên bản đã nạp hồ sơ nào.

Một unit được bật sẽ trở lại ở lần khởi động tiếp theo, đây là một quyết định riêng so với việc dừng nó ngay bây giờ. Chỉ tắt nó sau khi bạn đã quyết định kết nối không nên trở lại, và ghi lại quyết định đó ở nơi quản trị viên tiếp theo sẽ tìm thấy.

Hồ sơ NetworkManager

Hồ sơ do NetworkManager quản lý không phải là một tiến trình mà bạn có thể gửi tín hiệu. Trình quản lý sở hữu vòng đời, và đối tượng cần tác động là kết nối đang hoạt động, được nhận diện bằng UUID chứ không phải tên hiển thị. Đọc danh sách đang hoạt động trước cũng cho thấy liệu có một đường hầm thứ hai đang chạy dưới một tên bạn không ngờ tới.

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

Tên hiển thị lặp lại, và tên tệp hồ sơ không phải là mã định danh của nó, vì vậy hãy sao chép UUID từ danh sách. Nếu kết nối quay lại ngay lập tức, có thứ gì đó đang kích hoạt nó: một mục secondaries trên kết nối cơ sở, một tập lệnh dispatcher, hoặc một cờ tự động kết nối. Dừng kết nối của trình quản lý là bước đầu tiên đúng, và việc kích hoạt lại là câu hỏi tiếp theo. Đừng xóa hồ sơ để dừng việc kích hoạt lại, vì điều đó cũng xóa thông tin đăng nhập mà bạn có thể cần vào ngày mai.

Tài liệu tham khảo lệnh của trình quản lý mô tả cách chọn mục tiêu down.

Phiên OpenVPN 3

OpenVPN 3 Linux sử dụng mô hình phiên thay vì một tiến trình cho mỗi đường hầm. Bạn xem các phiên mà dịch vụ biết, rồi tác động lên một đường dẫn phiên. Đường dẫn là mã định danh, và nó không thể thay thế bằng tên cấu hình.

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

Ngắt mọi phiên là một hành động khác, và nó nên có chủ đích.

Cùng một máy chủ có thể giữ phiên của nhiều người dùng, vì vậy hãy liệt kê trước khi hành động và xác nhận chủ sở hữu của phiên bạn sắp kết thúc.

Cần xác minh gì sau đó

Kiểm tra ba điều sau bất kỳ lần dừng nào trong số này: danh sách kết nối đang hoạt động không còn đường hầm, giao diện đã biến mất, và tra cứu tuyến cho một địa chỉ nội bộ không còn chọn thiết bị đường hầm. Sau đó quyết định điều gì xảy ra ở lần khởi động tiếp theo.

ip -brief address
ip route get 10.8.0.1

Gỡ giao diện bằng tay không dừng chủ sở hữu, và để việc dọn dẹp dang dở.

Ngắt kết nối ngay, ngăn lần tự khởi động tiếp theo, và cho phép lưu lượng không phải VPN sau đó là ba lựa chọn riêng biệt. Hãy thực hiện từng lựa chọn một cách rõ ràng.

Bài viết liên quan