Dựng VPN IKEv2 trong PowerShell bằng chứng chỉ máy
Vị trí chứng chỉ, tiền tố tuyến và thông tin EAP là những nơi script IKEv2 thất bại. Dựng đường hầm trong PowerShell và kiểm tra từng giai đoạn riêng.
Windows có sẵn một máy khách IKEv2 mà PowerShell điều khiển từ đầu đến cuối, nên một đường hầm hoạt động không cần GUI và không cần phần mềm bên thứ ba. Gần như mọi thất bại đến từ ba nơi: chứng chỉ đã đi đâu, các tiền tố tuyến được viết thế nào và phương thức EAP đã chọn mong đợi gì. Xử lý theo đúng thứ tự đó, vì mỗi thứ đều kiểm tra được trước khi thứ tiếp theo bắt đầu và một lỗi muộn sẽ che lấp lỗi sớm hơn.
Đường hầm dùng chứng chỉ máy tồn tại để khởi động trước khi bất kỳ ai đăng nhập, vì thế danh tính thường phải nằm trong kho của máy chứ không phải kho của người dùng.
Chứng chỉ trước, đường hầm sau
Hai lần nhập là quan trọng. Danh tính máy khách vào Cert:\LocalMachine\My qua Import-PfxCertificate, và CA cấp phát vào Cert:\LocalMachine\Root qua Import-Certificate. Một chứng chỉ lá đơn lẻ không chứng minh được chuỗi nào, nên bỏ qua lần nhập thứ hai khiến việc xác minh không còn cơ sở. Ngoài sự hiện diện, khóa riêng phải được đính kèm và tài khoản máy phải được phép đọc nó. Get-ChildItem Cert:\LocalMachine\My liệt kê những gì đã đến; hãy so sánh dấu vân tay thay vì chủ thể, vì các chủ thể gần giống nhau là chuyện thường.
Kiểm tra mục đích khóa mở rộng trước khi triển khai. Xác thực máy khách là yêu cầu thông thường cho danh tính máy IKEv2, và phía bên kia phải tin cậy CA đã ký nó. Một danh tính trong kho của người dùng không tồn tại đối với kết nối trong bối cảnh máy.
Tạo hồ sơ và các tuyến của nó
Add-VpnConnection -Name "Office IKEv2" -ServerAddress vpn.example.com -TunnelType Ikev2 -EncryptionLevel Required -AuthenticationMethod MachineCertificate -AllUserConnection ghi hồ sơ. Tham số -AllUserConnection công bố hồ sơ trong danh bạ điện thoại toàn cầu, phù hợp với máy dùng chung hoặc máy do dịch vụ quản lý; hãy bỏ nó cho một người dùng. Bất kể địa chỉ nào bạn truyền vào đều phải khớp với tên DNS trong chứng chỉ của máy chủ, nếu không lỗi sẽ xuất hiện sau khi đường hầm đã lên. Sau đó các tiền tố được thêm lần lượt bằng Add-VpnConnectionRoute, và chỉ những tiền tố mà thiết kế thực sự cần.
IPv6 có một điểm lạ: Windows từ chối ::/0 làm tuyến VPN, nên ::/1 và 8000::/1 cùng nhau bao phủ đúng không gian địa chỉ đó. Việc định tuyến một tiền tố cũng không cấp gì tại tường lửa từ xa, nên danh sách tiền tố và chính sách tường lửa vẫn là hai tài liệu riêng.
Thông tin xác thực thuộc về phương thức xác thực
Hồ sơ chứng chỉ máy hoàn toàn không cần bí mật người dùng, trong khi hồ sơ EAP-MSCHAPv2 thì cần. Trong trường hợp thứ hai, mô-đun VPNCredentialsHelper cung cấp Set-VpnConnectionUsernamePassword, và nó muốn văn bản thuần: $cred.Password là một SecureString, nên hãy mở gói trước bằng GetNetworkCredential().Password. Cài mô-đun ở mọi nơi lệnh chạy, không chỉ trên máy trạm nơi nó được soạn. EAP-TLS hoặc một phương thức tùy chỉnh hoàn toàn không dùng lệnh này; thay vào đó chúng nhận một XML cấu hình EAP.
rasdial "Office IKEv2" nâng kết nối từ một shell, và đó là cách nhanh nhất để thấy kết quả ở tiền cảnh thay vì trong nhật ký sự kiện.
Điều mà một đường hầm đã kết nối không chứng minh
Trạng thái đã kết nối bao gồm trao đổi IKE và bước xác thực, và không gì hơn. Hành vi DNS, đường tới một máy chủ nội bộ và tường lửa từ xa đều vẫn chưa được chứng minh. Hãy làm việc từ trong ra: bộ điều hợp đường hầm, rồi tra tuyến cho một địa chỉ riêng, rồi một dịch vụ mà bạn được phép dùng. Quan sát đầu tiên thất bại chỉ ra tầng cần điều tra.
Khi thay đổi hồ sơ, hãy xóa hồ sơ trước bằng Remove-VpnConnection -Name "Office IKEv2" -Force trước khi tạo lại; nếu không, cài đặt và tuyến cũ vẫn tồn tại qua lần chỉnh sửa. Nếu vẫn không kết nối, hãy so sánh dấu vân tay ghi trong hồ sơ với dấu có trong kho, vì Windows có thể giữ tham chiếu tới một danh tính đã bị thay thế trong khi chủ thể không đổi.
Giữ dấu vân tay, phương thức EAP và danh sách tuyến bên cạnh hồ sơ. Cùng nhau chúng giải thích phần lớn những gì hỏng về sau.