Từ Access Server sang Community OpenVPN: những gì phải xây lại
Access Server lưu chính sách; Community OpenVPN yêu cầu bạn tự viết. Lập bản đồ danh tính, tuyến đường và thu hồi trước khi sao chép một chứng chỉ.
Access Server và Community OpenVPN nói cùng một giao thức và gần như không còn gì khác giống nhau. Quá trình bắt tay, thương lượng mật mã và mặt phẳng dữ liệu của đường hầm tương thích, nên máy khách thường kết nối được với cả hai mà không cần sửa hồ sơ. Điều khác biệt là ai sở hữu cấu hình: một sản phẩm mang theo tầng quản lý ghi và thực thi chính sách, sản phẩm kia đưa cho bạn một tệp cấu hình và một bộ móc rồi chờ bạn quyết định.
Sự khác biệt đó chính là kế hoạch di trú. Mọi thứ sản phẩm cũ quyết định thay bạn đều phải trở thành một quyết định rõ ràng ở đâu đó trong triển khai mới.
Nơi hai triển khai thôi có thể thay thế nhau
Trong Access Server, giao diện quản trị web sở hữu người dùng, nhóm, quyền theo từng người dùng, việc cấp chứng chỉ và gói hồ sơ mà một người tải về. Tiến trình nền bên dưới được cấu hình bởi tầng đó, nên dịch vụ đang chạy là sản phẩm của trạng thái được lưu mà bạn hiếm khi sửa tay. Trong Community OpenVPN, tệp cấu hình chính là trạng thái: nó nêu tên bộ lắng nghe, tổ chức cấp chứng chỉ, móc xác thực và mọi tùy chọn được đẩy xuống, và không gì viết lại nó thay bạn. Cùng một cỗ máy TLS vì thế nằm dưới hai mô hình sở hữu rất khác nhau.
Một bản đồ ngắn khiến khoảng trống trở nên cụ thể. Người dùng và nhóm chỉ tồn tại trong cơ sở dữ liệu cũ cho đến khi bạn tạo lại chúng. Gói hồ sơ trở thành một tệp cấu hình cộng với chứng chỉ do bạn tự phân phát. Quyền theo từng người dùng trở thành chỉ thị trong client-config-dir. Giao diện quản trị trở thành tiến trình bạn chọn để cấp chứng chỉ và sửa tệp.
Hãy viết bản đồ đó ra trước khi chạm vào máy chủ. Mỗi dòng bạn không điền được là một tính năng bạn sắp mất, và mất đi trong im lặng chính là cách một cuộc di trú trở thành sự cố hai tuần sau đó.
Danh tính không chuyển theo các tệp chứng chỉ
Chứng chỉ từ tổ chức cũ có thể được phân tích đúng trong dịch vụ mới mà vẫn là danh tính sai, vì sản phẩm cũ ghép chúng với trạng thái tài khoản mà sản phẩm mới không thấy. Trước tiên hãy quyết định xem triển khai mới xác thực chỉ bằng chứng chỉ, bằng một plugin chạm tới PAM hoặc RADIUS, hay bằng sự kết hợp, rồi kiểm tra rằng mỗi lựa chọn giữ được các thuộc tính bạn cần. Một chứng chỉ dùng chung mà không có danh tính theo từng người dùng là một thông tin đăng nhập cho tất cả những ai giữ nó. Việc thu hồi cũng phải hoạt động từ ngày đầu, nghĩa là trong Community OpenVPN cần một tệp CRL được crl-verify tham chiếu cùng một tiến trình tái tạo nó.
Hãy lên kế hoạch đăng ký trước khi chuyển đổi, không phải sau. Chứng chỉ mới, một đường thu hồi đã kiểm thử và một cách được ghi lại để vô hiệu hóa một người là điều kiện tiên quyết, không phải việc làm sau. Nếu xác thực đa yếu tố đến từ tích hợp của sản phẩm cũ, hãy nêu rõ phương án thay thế, vì một plugin chưa cài đặt sẽ thất bại theo hướng đóng vào đúng thời điểm tệ nhất.
Định tuyến và phân giải tên đi theo người viết cấu hình
Tuyến đường, thiết lập DNS và hành vi đường hầm đầy đủ là các tùy chọn được đẩy xuống ở cả hai sản phẩm, nhưng chỉ một bên tính toán chúng thay bạn. Trong Community OpenVPN bạn tự viết các chỉ thị push, tự quyết định redirect-gateway thuộc về máy chủ hay máy khách, và xác nhận rằng trên máy chủ có chuyển tiếp và NAT. Một cuộc bắt tay hoàn tất không cho bạn biết gì về chuyển tiếp, dịch địa chỉ hay những tuyến đường mà máy khách thực sự nhận được.
Hành vi theo từng máy khách cần client-config-dir cùng một tệp được đặt tên theo common name của chứng chỉ máy khách, và một cặp site-to-site cần các mục iroute cho những tiền tố phía sau. Nếu đặt tên sai, các tùy chọn bị bỏ qua mà không báo lỗi. Hãy thử với một máy khách không phải môi trường thật trong bể địa chỉ riêng của nó, rồi đọc địa chỉ được cấp, các tuyến đường nhận được và thiết lập trình phân giải mà nó kết thúc.
Sắp xếp việc chuyển đổi để dịch vụ cũ có thể quay lại
Chạy bộ lắng nghe mới trên cổng hoặc địa chỉ khác, và để bộ cũ tiếp tục phục vụ lưu lượng trong khi bạn chứng minh phương án thay thế. Hai tiến trình nền trên cùng một socket không phải là kế hoạch quay lui.
Chuyển từng nhóm một, cùng chứng chỉ, bể địa chỉ và tuyến đường của nhóm đó, và diễn tập đường quay về thay vì phát hiện nó giữa một sự cố. Một cuộc quay lui chỉ hoạt động nếu dừng dịch vụ mới trước vẫn là quay lui, nhưng phải được kiểm thử khi không có gì đang cháy.
Cuối cùng, liệt kê những tính năng không có tương đương trực tiếp và quyết định số phận từng cái bằng văn bản: tải hồ sơ tự phục vụ, cờ quyền theo từng người dùng, chính giao diện quản trị, báo cáo kết nối trực tiếp. Thay chúng bằng một quy trình thủ công có ghi chép là câu trả lời chính đáng. Để trống dòng đó thì không.
Công việc hoàn tất khi một người chưa từng thấy cổng cũ có thể đăng ký, kết nối, tới địa chỉ nội bộ dự kiến và bị thu hồi một cách gọn gàng. Mọi thứ trước đó là chuẩn bị.