Dịch vụ OpenVPN thất bại với hồ sơ mà GUI mở được: năm bước kiểm tra
Cùng một hồ sơ, trình khởi chạy khác nhau. Hãy kiểm tra thư mục làm việc, tài khoản dịch vụ, thuộc tính tệp được mã hóa, chủ sở hữu, rồi đến lớp bao.
Hai trình khởi chạy mở cùng một hồ sơ trên một máy, và chỉ GUI kết nối được. Tệp vẫn nguyên vẹn và bộ cài có lẽ không sao; khác biệt nằm ở ngữ cảnh mà mỗi trình khởi chạy trao cho openvpn.exe. Thư mục làm việc, danh tính tài khoản và thuộc tính tệp đều đi kèm ngữ cảnh đó. Hãy kiểm tra theo đúng thứ tự ấy và dừng ở mục đầu tiên giải thích được lỗi.
Xác nhận trình khởi chạy nào thất bại
Bắt đầu bằng việc chứng minh sự phân đôi. Nếu GUI kết nối được còn dịch vụ thì không với cùng đường dẫn hồ sơ, tệp đang được ai đó đọc được và câu hỏi trở thành ai đọc nó và từ đâu. Nếu cả hai đều thất bại, hồ sơ đã hỏng và không điều nào ở đây áp dụng. Ghi lại tên dịch vụ và chính xác hồ sơ mà nó được bảo nạp.
Một dịch vụ trỏ tới thư mục tự khởi động của chính nó có thể không nạp tệp bạn đang mở trong trình soạn thảo. Hãy so sánh đường dẫn trong cấu hình dịch vụ với đường dẫn trong GUI, từng ký tự một, vì một tên thư mục ở cuối hoặc một chữ cái ổ đĩa khác là đủ để đẩy bạn sang nhánh sai.
Đường dẫn tương đối được phân giải ở đâu
Hồ sơ tham chiếu ca.crt hoặc một tập lệnh phụ chỉ bằng tên trần sẽ yêu cầu tra cứu tương đối với nơi tiến trình đang đứng. GUI khởi động trong thư mục cấu hình nên những tên đó phân giải được. Một dịch vụ do trình quản lý dịch vụ khởi chạy không có điểm xuất phát như vậy, và việc tra cứu thất bại trước khi bất kỳ chứng chỉ nào được đọc. Đó là lý do cùng một hồ sơ chạy được ở trình khởi chạy này mà không chạy được ở trình kia.
Hãy cho lớp bao một thư mục để khởi động, hoặc biến mọi tham chiếu thành tuyệt đối. Tái tạo ngữ cảnh của GUI trên dòng lệnh trông như sau:
openvpn --cd "C:\VPN\profiles\office" --config "C:\VPN\profiles\office\office.ovpn"
Tăng mức chi tiết cho lệnh đó sẽ hiện ra đường dẫn chính xác đã được thử. Hãy làm việc này trước khi đổi quyền, vì tệp thiếu và việc đọc bị từ chối cần cách sửa khác nhau. Nhật ký mặc định không phân biệt hai trường hợp. Một cờ thêm vào tiết kiệm được một giờ đoán mò.
Khi danh tính dịch vụ không đọc được
Dịch vụ chạy dưới một danh tính hệ thống, không phải bạn. Một ACL cấp toàn quyền cho người dùng của bạn và không cho ai khác sẽ thất bại ở đó trong khi vẫn chạy hoàn hảo trong phiên của bạn. Hồ sơ đặt trên ổ đĩa ánh xạ hoặc thư mục chia sẻ có xác thực cũng thất bại vì lý do đó. Hãy xác nhận quyền của tệp trước khi nhìn sang bất cứ thứ gì khác.
Bước kiểm tra gồm việc đọc quyền hiệu lực cộng với một lần đọc thử dưới danh tính dịch vụ. Chạy phần đầu từ dấu nhắc đã nâng quyền:
icacls "C:\VPN\profiles\office\office.ovpn"
Sau đó thử đúng phép đọc ấy dưới danh tính dịch vụ, chẳng hạn bằng psexec -s -i của Sysinternals, và xem tệp có mở được không. Nếu không, mọi sửa đường dẫn đều vô ích. Hãy sửa ACL hoặc chuyển hồ sơ đến vị trí mà danh tính dịch vụ đọc được.
Mã hóa ở mức tệp là trường hợp thứ hai, hiếm hơn. Hồ sơ được đánh dấu thuộc tính Encrypting File System sẽ được giải mã trong suốt cho người dùng đã mã hóa nó và vẫn không đọc được với tài khoản dịch vụ. Đó là lý do cùng một tệp mở được trong trình soạn thảo của bạn mà không mở được dưới dịch vụ.
Thuộc tính này hiện ra từ dấu nhắc đã nâng quyền, và việc kiểm tra nó không mở hồ sơ. Chạy cả hai lệnh và đọc kết quả:
cipher /s:"C:\VPN\profiles\office"
attrib "C:\VPN\profiles\office\office.ovpn"
Xóa thuộc tính làm tệp đọc được, đồng thời gỡ bỏ lớp bảo vệ mà nó mang theo. Nếu hồ sơ phải tiếp tục được bảo vệ, hãy đặt vật liệu bí mật ở nơi danh tính dịch vụ có quyền cấp rõ ràng thay vì dựa vào mã hóa theo từng người dùng. Cách bố trí đó sống sót qua việc đổi mật khẩu, và khiến quyền truy cập có thể được người khác ngoài người đã mã hóa tệp rà soát.
Quyết định ai sở hữu đường hầm
GUI có thể hỏi mật khẩu và đọc chứng chỉ từ kho người dùng của bạn. Dịch vụ không làm được cả hai, nên hồ sơ phụ thuộc vào một bí mật tương tác sẽ không bao giờ khởi động mà không có người, dù đường dẫn có được sửa thế nào. Giới hạn đó là một quyết định thiết kế, không phải lỗi cần lách. Hãy chọn một chủ sở hữu trước khi thay đổi bất cứ điều gì khác.
Nếu đường hầm phải sẵn sàng trước khi đăng nhập, hãy cho dịch vụ một nguồn thông tin xác thực không cần người và bản sao hồ sơ riêng. Nếu nó chỉ cần tồn tại khi bạn ngồi ở bàn, hãy giữ nó trong GUI và xóa bản sao của dịch vụ. Có cả hai cùng lúc chính là cấu hình sinh ra xung đột bộ điều hợp và tuyến trùng lặp.
Xung đột đó thường được chẩn đoán là lỗi cấu hình chứ không phải hai chủ sở hữu tranh nhau một bộ điều hợp. Nhật ký sự kiện sẽ cho thấy một tiến trình không mở được thiết bị TAP, trông như vấn đề quyền và không phải. Hãy đếm số chủ sở hữu trước.
Lớp bao dịch vụ thực sự khởi chạy cái gì
Điểm vào của dịch vụ là một lớp bao nhỏ, đọc các tham số đã lưu của chính nó rồi khởi chạy openvpn.exe. Khi dòng lệnh trong nhật ký sự kiện không khớp với kỳ vọng của bạn, chính những giá trị đó là thứ cần xem. Cài lại sẽ đặt chúng về mặc định và phá hủy bằng chứng. Hãy đọc chúng trước.
Các giá trị nằm trong sổ đăng ký dưới khóa riêng của dịch vụ, và sc qc hiển thị đường dẫn tệp nhị phân mà trình quản lý dịch vụ sẽ khởi chạy. Hãy so sánh đường dẫn đó với cấu hình đã lưu của lớp bao trước khi sửa bất kỳ bên nào.
Thay lớp bao bằng một tập lệnh do bạn kiểm soát thì xâm lấn hơn, nhưng nó gộp dòng lệnh hiệu lực vào một tệp dễ đọc. Kết thúc bằng một lần khởi động lại, rồi đọc nhật ký theo từng hồ sơ cho đến khi dòng khởi động thành công đầu tiên xuất hiện. Trạng thái dịch vụ “đang chạy” chỉ có nghĩa là lớp bao chưa thoát, điều này cũng đúng khi tiến trình con của nó chết ngay lập tức.