VPN mới xuất hiện, xác thực hoạt động, và một VPN của bên thứ ba đã sống trên máy hai năm biến mất trong cùng lần khởi động lại đó. Không gì trong nhật ký triển khai nhắc đến nó, vì không gì trong quá trình triển khai xử lý nó. Gói cài đã thay thế sổ điện thoại toàn cục, và kết nối kia là một mục trong tệp đó. Đây là một thao tác sao chép đang hành xử đúng như một thao tác sao chép phải hành xử.

Cách khắc phục không phải là một bản sao tốt hơn. Mà là không sao chép tệp.

Sổ điện thoại thực sự chứa gì

Sổ điện thoại là vật chứa các định nghĩa kết nối, không phải hồ sơ. Các mục theo người dùng nằm dưới hồ sơ người dùng, và các mục cho mọi người dùng nằm dưới đường dẫn ProgramData ở cấp máy, vì thế một lần triển khai ghi tệp đó sẽ chạm đến mọi người dùng cục bộ cùng lúc. Cùng tệp đó cũng mang các mục do nhà cung cấp khác tạo ra, và thiệt hại kèm theo đến từ đó.

Định nghĩa kết nối cũng không phải toàn bộ câu chuyện. Tuyến đường, chính sách DNS, vật liệu CA tin cậy và danh tính do những chủ sở hữu riêng cung cấp.

Xác định phạm vi nào sở hữu hồ sơ

Liệt kê cả hai phạm vi trước khi viết bất cứ điều gì. Get-VpnConnection trả về các mục của người dùng hiện tại và Get-VpnConnection -AllUserConnection trả về các mục ở cấp máy, và cùng một tên có thể tồn tại ở cả hai với thiết lập khác nhau. Hãy quyết định phạm vi nào thuộc về lần triển khai của bạn và ghi lại, vì cập nhật sai phạm vi sẽ để người dùng kết nối qua hồ sơ cũ trong khi thay đổi của bạn nằm trong một tệp không ai đọc. Một tác vụ theo lịch chạy dưới quyền SYSTEM cũng thấy một tập hồ sơ khác với người dùng đã đăng nhập.

Đặt tên cho chủ sở hữu là bước ngăn kỹ sư tiếp theo lặp lại việc sao chép toàn bộ tệp.

Tạo hoặc cập nhật kết nối có tên, không gì khác

Với một hồ sơ Windows gốc, Add-VpnConnection tạo một mục, và -AllUserConnection chọn phạm vi cấp máy. Hãy chạy nó trước với -WhatIf, để bản xem trước rơi vào bản ghi của bạn chứ không phải vào khiếu nại của người dùng:

Add-VpnConnection -Name 'Office VPN' -ServerAddress 'vpn.example.com' -TunnelType Ikev2 -AuthenticationMethod Eap -EapConfigXmlStream $approvedEapXml -AllUserConnection -WhatIf

EAP XML phải đến từ một nơi hợp pháp: được xuất từ một hồ sơ tham chiếu đang hoạt động, hoặc được công cụ quản trị của bạn tạo cho cổng kết nối thực. Không có thiết lập tin cậy máy chủ đúng, hồ sơ hoặc kết nối nhầm thứ, hoặc thất bại ở mọi nơi, và cả hai đều không phải là một lần triển khai thành công.

Khi mục đã tồn tại, hãy so sánh các thiết lập và cập nhật nó bằng Set-VpnConnection thay vì xóa rồi tạo lại. Xóa là cách một cấu hình đang hoạt động mất đi những trường không ai ghi lại, và là cách các mục không liên quan bị cuốn vào một đợt dọn dẹp rộng.

Kiểm tra xem có hệ thống quản trị thứ hai sẽ đặt lại hồ sơ cũ ở lần làm mới chính sách kế tiếp. Các đợt thử nghiệm thường thất bại ở đây nhiều hơn là ở bản thân cmdlet.

Thử nghiệm trên một máy đã có VPN khác

Chọn một máy thử có mục cấp máy không liên quan, triển khai, rồi xác minh ba điều: hồ sơ mới xuất hiện trong phạm vi dự định, xác thực đến được một tài nguyên riêng, và mục không liên quan vẫn kết nối. Triển khai thêm hai lần nữa và xác nhận rằng lần chạy thứ hai chỉ thay đổi hồ sơ mà nó sở hữu. Lần kiểm tra thứ ba đó bắt được một gói idempotent với mục của chính nó và phá hủy mọi thứ khác.

Việc gỡ bỏ tuân theo cùng quy tắc: Remove-VpnConnection -Name 'Office VPN' -AllUserConnection cho một mục nghỉ hưu và để phần còn lại của tệp yên.

Giữ sẵn cấu hình dự định trước đó, để một lần hoàn nguyên có phạm vi nghĩa là nhập lại một hồ sơ thay vì khôi phục toàn bộ trạng thái máy.

Bài viết liên quan