OpenVPN trên Windows khởi động khi đăng nhập chứ không phải khi khởi động máy?
Lối tắt khởi động mở một ứng dụng máy tính để bàn, không phải dịch vụ tự động. Kiểm tra xem chủ sở hữu đọc nguồn hồ sơ nào trước khi di chuyển tệp.
Các đường hầm chỉ xuất hiện sau khi ai đó đăng nhập thường được khởi chạy bởi phiên của người đó, không phải bởi dịch vụ tự động. Thủ phạm thông thường là một lối tắt khởi động chạy openvpn-gui.exe, và đây không phải là bản cài đặt bị hỏng. Lối tắt khởi chạy một ứng dụng máy tính để bàn bên trong phiên người dùng, với hồ sơ của người dùng đó, các kho chứng chỉ của người dùng đó và khả năng của người dùng đó để trả lời một lời nhắc. Không điều nào trong số đó làm cho kết nối độc lập với một người đã đăng nhập, và đó chính xác là điều mà một đường hầm trước khi đăng nhập yêu cầu.
Triệu chứng thường có ba nguyên nhân
Ba mẫu trông giống nhau từ bên ngoài và có cách khắc phục khác nhau. Mẫu thứ nhất là chủ thể thực thi là phiên người dùng thay vì dịch vụ, tức là trường hợp lối tắt khởi động. Mẫu thứ hai là một hồ sơ nằm ở nơi dịch vụ không nhìn tới, nên dịch vụ khởi động, không tìm thấy gì và thoát sạch. Mẫu thứ ba là một hồ sơ mà dịch vụ tìm thấy và khởi động, nhưng thông tin đăng nhập của nó cần một tương tác mà không dịch vụ nào có thể cung cấp.
Để xác định trường hợp nào áp dụng cần hai lần đọc: dịch vụ được cấu hình để chạy gì và nó có thể thấy những tệp nào. Cả hai đều là một lệnh mỗi thứ, và không thứ nào làm gián đoạn một kết nối đang chạy.
Dịch vụ tự động thực sự đọc gì
Dịch vụ tự động Community là một trình bao quét thư mục khởi động tự động đã cấu hình, thường là config-auto bên trong bản cài đặt, và khởi chạy một tiến trình OpenVPN cho mỗi hồ sơ phù hợp mà nó tìm thấy. Một hồ sơ hiển thị trong menu GUI của người dùng thay vào đó nằm dưới hồ sơ chuyển vùng của người dùng đó, trong một thư mục mà tài khoản dịch vụ không đọc. Hướng dẫn dịch vụ Windows mô tả việc phát hiện đó, và đáng đọc trước khi sao chép bất cứ thứ gì, vì thư mục đích là một thuộc tính của bản cài đặt chứ không phải một quy ước cố định. Do đó việc sao chép một tệp vào thư mục GUI không thay đổi gì cho dịch vụ, và việc sao chép nó vào mọi thư mục có tên config tạo ra bản trùng lặp thay vì một cách khắc phục.
Get-Service OpenVPNService | Select-Object Status, StartType
Get-CimInstance Win32_Service | Where-Object Name -eq 'OpenVPNService' | Select-Object PathName, StartName
gci 'C:\Program Files\OpenVPN\config-auto'
Lệnh cuối cùng liệt kê những gì trình bao sẽ thực sự thấy, đây là cách nhanh nhất để xác nhận rằng một hồ sơ đang ở sai chỗ. Dòng thứ hai cũng hiển thị tài khoản mà dịch vụ chạy dưới, và tài khoản đó quyết định những đường dẫn tệp và kho chứng chỉ nào có thể truy cập được.
Tại sao đăng nhập trên máy tính để bàn hoạt động còn khởi động khi khởi động máy thì không
Thành công trên máy tính để bàn có thể che giấu sự phụ thuộc vào đầu vào trong một thời gian dài. GUI có thể thu thập cụm mật khẩu khóa, mật khẩu tài khoản hoặc yếu tố thứ hai trong một hộp thoại, vì nó chạy trong một phiên tương tác có máy tính để bàn hiển thị. Dịch vụ chạy trong một phiên không có máy tính để bàn, nên yêu cầu nhập liệu không có nơi nào để xuất hiện, và kết nối thất bại sau một khoảng thời gian chờ trông hoàn toàn không giống một vấn đề thông tin đăng nhập.
Truy cập tệp tuân theo cùng một quy tắc. Một khóa riêng được lưu dưới hồ sơ người dùng, hoặc một chứng chỉ trong kho cá nhân của người dùng, không khả dụng cho một dịch vụ chạy dưới danh nghĩa máy. Hãy so sánh đường dẫn tuyệt đối, quyền và lựa chọn chứng chỉ mà mỗi bên thực hiện thay vì giả định rằng cùng một tệp hồ sơ nghĩa là cùng một môi trường.
Một tác vụ được lên lịch đặt chạy bất kể người dùng có đăng nhập hay không cũng thừa hưởng một hạn chế tương tự. Nó có thể khởi chạy tệp thực thi GUI thành công mà vẫn tạo ra một tiến trình không bao giờ có được thông tin đăng nhập, nên sự hiện diện của một tiến trình trong trình quản lý tác vụ không phải là bằng chứng của một đường hầm đang hoạt động.
Chọn một chủ thể và kiểm tra vòng đời thực tế
Đối với một kết nối thuộc về một người đã đăng nhập, hãy dùng hành vi tự khởi động được GUI hỗ trợ và để dịch vụ ra ngoài. Đối với một đường hầm phải tồn tại trước khi bất kỳ ai đăng nhập, hãy cấu hình dịch vụ, đặt hồ sơ ở nơi trình bao đọc nó, và dùng một cơ chế thông tin đăng nhập không cần giám sát được hỗ trợ như khóa không có cụm mật khẩu tương tác hoặc tệp thông tin đăng nhập đã được ghi tài liệu.
Get-Content 'C:\Program Files\OpenVPN\log\openvpn.log' -Tail 40
Get-WinEvent -LogName Application -MaxEvents 20 | Where-Object ProviderName -like '*OpenVPN*'
Hãy kiểm tra vòng đời quan trọng: khởi động lại máy mà không ai đăng nhập, sau đó kết nối lại sau khi thay đổi mạng. Giữ một chủ thể cho kết nối, vì hai cơ chế khởi động cạnh tranh thường tạo ra hai phiên bản tranh nhau cùng các tuyến đường và cùng phiên máy chủ, điều này khó chẩn đoán hơn bất kỳ cơ chế nào riêng lẻ.