Có người yêu cầu kết nối lại máy khách VPN, và yêu cầu đó có thể mang ba nghĩa khác nhau. Nó có thể là bỏ một phiên đã xác thực, báo cho mọi máy khách rằng một máy chủ UDP sắp biến mất, hoặc khởi động lại chính daemon. Mỗi cách có bán kính ảnh hưởng khác nhau, và chọn sai sẽ biến một bản sửa cho một người dùng thành sự cố dịch vụ. Phạm vi là quyết định, và lệnh suy ra từ đó.

Hãy hỏi ai sẽ bị ảnh hưởng trước khi hỏi dùng cách điều khiển nào.

Một phiên bản: giao diện quản lý

Một giao diện quản lý đã cấu hình có thể liệt kê các phiên bản đang kết nối và bỏ đúng một trong số đó. Mỗi phiên mang một định danh máy khách, và client-kill CID nhắm vào chính định danh đó thay vì một tên chung. Hãy đọc định danh đang sống từ đầu ra trạng thái hiện tại, vì một giá trị sao chép từ nhật ký cũ trỏ tới phiên không còn tồn tại. Bỏ phiên bản chỉ kết thúc kết nối đó và không gì khác.

Nó không bảo đảm có kết nối mới. Việc máy khách có quay lại hay không phụ thuộc vào cài đặt thử lại, các mục từ xa còn lại, yêu cầu xác thực và việc ứng dụng giám sát còn chạy hay không. Máy khách quay lại nhận được định danh mới, và đó là lý do so sánh định danh là cách duy nhất đáng tin cậy để phân biệt cái cũ với cái mới.

Thông báo thoát UDP không phải lệnh cho từng máy khách

explicit-exit-notify là một chỉ thị cấu hình về các sự kiện thoát và khởi động lại. Trên máy khách UDP, nó báo cho phía đối tác rằng phiên đang kết thúc, và đối số số học điều khiển số lần thông báo được lặp lại. Khi máy chủ chạy qua UDP, nó gửi thông điệp điều khiển khởi động lại tới các máy khách đang kết nối, và các giá trị được ghi trong tài liệu phân biệt việc kết nối lại cùng máy chủ với việc chuyển sang mục từ xa khác. Đó là tín hiệu vòng đời với đối tượng rộng.

Không có gì trong đó chọn một máy khách tùy ý vào một thời điểm tùy ý. Coi nó như nút kết nối lại sẽ chạm tới mọi phiên đang kết nối cùng lúc.

Tín hiệu tác động lên tiến trình, không phải lên phiên

SIGUSR1 yêu cầu một tiến trình đang chạy khởi động lại kết nối của nó mà không đọc lại cấu hình, và các tùy chọn bền vững quyết định điều gì sống sót qua lần khởi động lại đó. SIGHUP đi xa hơn: nó đọc lại tệp cấu hình và mở lại các tài nguyên của mình. SIGTERM và SIGINT yêu cầu tắt máy có trật tự. Đây là các thao tác ở cấp tiến trình: trên một máy chủ nhiều máy khách, chúng ảnh hưởng tới mọi phiên mà tiến trình mang theo, không chỉ phiên được nêu trong phiếu.

Khi tiến trình chạy dưới một trình quản lý dịch vụ, hãy dùng chính điều khiển của trình quản lý thay vì gửi tín hiệu tới một PID bạn tìm thấy trong danh sách tiến trình. Hãy đọc unit để xem trình quản lý gửi tín hiệu nào, vì khởi động lại và nạp lại làm những việc khác nhau với cùng một daemon.

Xác định phạm vi trước khi chọn cách điều khiển

Ba câu hỏi giải quyết điều đó. Ai sẽ bị ảnh hưởng: một người dùng, mọi máy khách của một máy chủ, hay daemon và mọi thứ nó mang theo. Điều gì phải tồn tại: cấu hình, trạng thái đường hầm, hay không cái nào. Ai có thẩm quyền: tích hợp quản lý, chủ sở hữu dịch vụ, hay nhà vận hành mạng người điều khiển thông báo thoát. Hãy trả lời những điều đó và chỉ một cách điều khiển phù hợp.

Thêm một bộ lắng nghe điều khiển không xác thực để có nút kết nối lại trao cho bất kỳ ai chạm tới cổng nhiều thứ hơn cả nút đó.

Hãy kiểm tra phiên mới, không phải việc ngắt kết nối

Sự kiện ngắt kết nối chứng minh phiên cũ đã kết thúc. Nó không nói gì về một phiên mới đang xác thực, nhận địa chỉ, cài đặt tuyến đường hay tới được tài nguyên mà người dùng cần. Hãy kiểm tra định danh mới, rồi trạng thái đường hầm, rồi một tài nguyên thật. Ba bước đó là khác biệt giữa kết nối lại và một kết nối hoạt động.

Hãy ghi phạm vi vào biên bản thay đổi. 'Tôi đã kết nối lại máy khách' không phải là mô tả khi máy khách là một trong bốn mươi trên một máy chủ dùng chung.

Bài viết liên quan