Cập nhật không giám sát là chính sách hợp lý cho một máy chủ mà bạn đến qua VPN của chính nó, đồng thời chúng là một điểm hỏng hóc duy nhất do bạn tự tạo ra. Thao tác gói khởi động lại dịch vụ, đường hầm sụp, và đường quản trị bạn đang dùng biến mất cùng với nó. Có hai mô hình phục hồi, và lựa chọn giữa chúng phụ thuộc vào một điều kiện: bạn có một đường vào không đi qua thứ đang được cập nhật hay không.

Hai mô hình phục hồi, một điều kiện quyết định

Mô hình thứ nhất tin vào bản cập nhật và giả định bạn có thể kết nối lại sau đó. Nó hiệu quả khi VPN là một trong nhiều cách đến máy chủ và khi sự cố đường hầm không lấy đi khả năng chẩn đoán nó của bạn. Mô hình thứ hai đặt sẵn một đường độc lập, thường là bảng điều khiển của nhà cung cấp dịch vụ lưu trữ, và coi đường hầm là thứ mà việc bảo trì dễ làm hỏng nhất. Cả hai mô hình đều có thể biện hộ, và chỉ một trong hai cần công việc từ trước.

Điều kiện quyết định thì dễ nói và cũng dễ bỏ qua. Nếu mọi đường quản trị tới máy đều đi qua dịch vụ đang được cập nhật, bạn không có mô hình phục hồi nào cả, chỉ có một kỳ vọng. Hãy nói to điều đó trong buổi xem xét thay đổi.

Kiểm tra điều kiện đó mất mười phút và phải diễn ra trước bản cập nhật không giám sát đầu tiên, không phải trong lúc sự cố. Mở bảng điều khiển khi mọi thứ đang chạy, xác nhận thông tin đăng nhập còn hiệu lực, rồi đóng lại. Xác nhận bảng điều khiển mở đúng máy chủ bạn nghĩ. Sau đó xác nhận đăng nhập mà bạn thực sự dùng lúc 3 giờ sáng vẫn hoạt động.

Phần cuối đó quan trọng hơn vẻ ngoài của nó. Một tài khoản bảng điều khiển có mật khẩu được đổi sáu tháng trước và chưa từng xác minh không phải là đường phục hồi; nó là một tài liệu mô tả một đường như vậy.

Điều mà bản sao lưu không khôi phục

Kho lưu cấu hình là bản ghi các tệp, và một bản cập nhật thay đổi nhiều hơn tệp. Trạng thái gói, mô-đun nhân, liên kết đơn vị đã bật và quy tắc tường lửa được áp dụng bằng công cụ riêng đều sống ngoài thư mục cấu hình, và một lần khôi phục bỏ qua chúng tạo ra một máy trông như đã cấu hình mà không chuyển tiếp.

What changedRestored by a configuration backupNeeds its own action
Service unit or startup orderingPartly, if the unit file was includedPackage state and enabled links
Kernel module or interface supportNoKernel or module rollback, or a boot-time decision
Peer or device authorizationOnly if the backup predates the revocationA deliberate decision about which peers return
Firewall rules applied outside the configOnly if they were capturedReplaying and verifying each rule

Việc cấp quyền xứng đáng có dòng riêng. Một bản sao lưu chụp trước khi thiết bị bị xâm nhập được gỡ bỏ sẽ vui vẻ khôi phục quyền truy cập của thiết bị đó. Quay lại nó trong lúc sự cố là cách một sự cố thành hai, và quyết định khôi phục nên được đưa ra với các peer rõ ràng như với tệp.

Cơ chế hoàn nguyên cũng quan trọng. Sao chép một tệp thực thi cũ lên tệp do gói quản lý không phải là cách đảo ngược được hỗ trợ của một thay đổi gói, và nó để cơ sở dữ liệu gói mô tả một trạng thái mà hệ thống tệp không khớp. Hãy dùng đường hạ cấp của chính trình quản lý gói hoặc ảnh chụp nhanh mà nhà cung cấp đưa ra. Một lần hạ cấp mà cơ sở dữ liệu gói ghi lại là lần bạn có thể lặp lại.

Không điều nào ở đây phản đối bản sao lưu. Nó ủng hộ việc biết lớp nào mà mỗi thành phần bao phủ, vì kiểu hỏng của một lần khôi phục một phần khó hiểu hơn sự cố ban đầu. Hãy ghi lớp bên cạnh mỗi bản sao lưu trong runbook.

Điểm kiểm soát, cập nhật, rồi xác minh từ bên ngoài

Ghi lại trạng thái trước thay đổi theo dạng bạn có thể so sánh sau này: các phiên bản đã cài, các đơn vị dịch vụ liên quan, các socket đang lắng nghe và danh sách peer hiện tại. Bốn lệnh bao phủ phần lớn điều đó trên một máy chủ Linux.

systemctl list-units --type=service | grep -E 'openvpn|wg-quick'
ss -lunp | grep -E ':51820|:1194'
journalctl -u wg-quick@wg0 --since '-10 min'

Lệnh thứ nhất cho biết có những đơn vị nào và chúng có đang chạy không, lệnh thứ hai xác nhận trình lắng nghe thực sự được gắn, và lệnh thứ ba cho bạn lời kể của chính dịch vụ về vài phút gần nhất. Không lệnh nào chứng minh một máy khách có thể kết nối, vì thế bước tiếp theo diễn ra ngoài máy chủ. Hãy giữ những số đọc đó làm cơ sở so sánh.

Xác minh từ một mạng không dùng đường hầm: xác thực một máy khách được cấp quyền, phân giải một tên, và đến một ứng dụng dự định. Một dòng trạng thái cục bộ nói giao diện đã lên là phát biểu về giao diện, không phải về định tuyến, khóa hay chính sách cho phép một peer.

Sau đó hãy cố ý kiểm tra đường kết nối lại. Khởi động lại dịch vụ một lần và xác nhận đường hầm trở lại mà không cần can thiệp thủ công, vì một dịch vụ chỉ khởi động đúng khi khởi động máy sẽ làm bạn bất ngờ vào thời điểm tệ nhất.

Khi nó hỏng, hãy dùng đường bạn đã kiểm thử

Trình tự phục hồi không hào nhoáng và nó hiệu quả: đến máy chủ qua đường độc lập, đọc nhật ký của chính dịch vụ, và khôi phục điểm kiểm soát cụ thể tương ứng với hỏng hóc. Chỉ thay đổi một thứ mỗi lần thử để lần đọc nhật ký tiếp theo có ý nghĩa.

Hãy chống lại thôi thúc thực hiện vài thay đổi không ghi lại để lấy lại kết nối. Một cái máy được sửa bằng năm chỉnh sửa đồng thời thì sau đó không thể giải thích, và bản cập nhật tiếp theo sẽ đưa trở lại thay đổi thực sự chịu tải.

Sau đó hãy quyết định chính sách lâu dài bằng bằng chứng. Nếu bản cập nhật phơi ra một phụ thuộc mà không ai ghi lại, cách sửa là tài liệu và một bài kiểm thử, không phải tắt cập nhật. Nếu nó phơi ra một dịch vụ không thể khởi động lại sạch sẽ, cách sửa nằm ở đơn vị, không phải ở lịch.

Việc so sánh được giải quyết gọn gàng ngay khi điều kiện có tên. Một đường độc lập biến cập nhật không giám sát thành rủi ro có thể quản lý. Sự thiếu vắng nó biến chính sách đó thành một lần gián đoạn theo kế hoạch với thời gian phục hồi chưa biết, và không lượng tự động hóa nào thay đổi phép tính đó.

Bài viết liên quan