Khởi động lại ứng dụng, hỏi trình quản lý về trạng thái kết nối, và nó báo đã ngắt kết nối trong khi menu hệ thống hiển thị rõ một đường hầm đang hoạt động. Hoặc một lệnh gọi lưu trả về lỗi không giải thích gì, hoặc một bí mật chia sẻ bị tuyên bố là thiếu vài giây sau khi được gán. Ba triệu chứng, một cơ chế: trình quản lý là một khung nhìn trên kho lưu trữ của hệ thống, và khung nhìn được đọc là rỗng cho đến khi ai đó tải nó.

Trước khi gỡ lỗi bất kỳ điều gì trong số này, hãy xác định bạn nên dùng API nào. Đường hầm IPsec hoặc IKEv2 của hệ thống phù hợp với trình quản lý tích hợp; một giao thức mà hệ thống không triển khai cần nhà cung cấp đường hầm với cách xử lý gói riêng của bạn, và không tổ hợp trường nào thay đổi điều đó.

Trình quản lý là khung nhìn trên kho lưu trữ

Tạo hoặc lấy trình quản lý, yêu cầu nó tải tùy chọn của mình và để trình xử lý hoàn tất kết thúc trước khi đọc trạng thái hoặc thay đổi cài đặt giao thức. Khi nhiệm vụ là liệt kê các cấu hình đã lưu, hãy dùng lệnh gọi cho mọi biến thể thay vì dùng lại một phiên bản cho hai mục đích. Trước khi quá trình tải đến, trạng thái thường không hợp lệ, và việc coi không hợp lệ là tắt chính là lỗi khiến ứng dụng trông sai chỉ sau khi khởi động lại.

Việc ghi tuân theo cùng thứ tự. Một lần lưu thử trên trình quản lý chưa bao giờ tải gì có thể thất bại mà không có thông báo hữu ích, vì không có danh tính đã lưu để áp dụng thay đổi. Tải, sửa, lưu, rồi đọc lại trạng thái. Đối tượng mà hệ thống kết nối là hồ sơ đã lưu, không phải đối tượng bạn đang sửa trong bộ nhớ.

Thay đổi trạng thái chỉ đến khi bạn đang quan sát

Sau khi tùy chọn được tải, trạng thái đi qua đã ngắt kết nối, đang kết nối, đã kết nối, đang xác nhận lại và đang ngắt kết nối. Khởi tạo giao diện bằng một lần đọc, rồi lắng nghe thông báo thay đổi thay vì thăm dò bằng bộ hẹn giờ. Thăm dò hoạt động ở tiền cảnh và nói dối ở hậu cảnh, và đó là cách ứng dụng mắc kẹt với một vòng xoay không bao giờ kết thúc.

Thông báo chỉ đến khi ứng dụng ở tiền cảnh. Bất cứ thứ gì duy trì trạng thái ở hậu cảnh sẽ trông cũ sau khi khởi động lại, vì vậy hãy làm mới khi khởi chạy và một lần nữa khi ứng dụng trở lại tiền cảnh. Nếu một nhà cung cấp sở hữu đường hầm, hãy điều khiển nó qua đối tượng phiên tương ứng; thuộc tính kết nối đơn giản không mô hình hóa vòng đời của nhà cung cấp.

Bí mật là tham chiếu, không phải chuỗi

Báo cáo thiếu một bí mật chia sẻ hiếm khi có nghĩa là không ai đã gán. Đối tượng giao thức muốn một tham chiếu: một cho mật khẩu người dùng và một cho khóa chia sẻ trước của IPsec. Truyền nil, hoặc một tham chiếu dẫn xuất từ mục chuỗi khóa sai, cho cùng khiếu nại như một ô trống. Lỗi nêu triệu chứng và giấu nguyên nhân, đó là lý do mọi người nhập lại cùng một bí mật nhiều lần.

Trước tiên hãy ghi bí mật dưới dạng mục mật khẩu chung, rồi đọc lại một tham chiếu bền vững tới nó. Một tham chiếu bền vững tồn tại qua lần khởi động lại, khác với con trỏ giữ trong bộ nhớ, và đó là biểu diễn mà hồ sơ tuần tự hóa. Chọn một lớp trợ năng vẫn cho phép truy cập sau khi thiết bị đã được mở khóa, nếu không một đường hầm phải kết nối lại trên màn hình khóa sẽ thất bại xác thực với một bí mật hoàn toàn hợp lệ.

Phần mở rộng có khung nhìn chuỗi khóa riêng

Phần mở rộng mạng là một tiến trình riêng, nên quyền truy cập chuỗi khóa mặc định của ứng dụng không tới được nó. Cấp cho cả hai mục tiêu cùng một nhóm truy cập chuỗi khóa trong quyền của chúng, lưu mục một lần bên trong nhóm đó và để mỗi tiến trình đọc nó. Không có nhóm, phần mở rộng không tìm thấy gì và báo lỗi thông tin xác thực mà ứng dụng không thể tái tạo.

Nếu nhà cung cấp được cấu hình qua đối tượng cấu hình nhà cung cấp của nó, đừng cũng nhúng bí mật vào trong ứng dụng. Hai bản sao trôi dạt khỏi nhau, và sự trôi dạt hiện ra như thông tin xác thực kém chứ không phải như trùng lặp. Một widget hoặc tiến trình thứ hai báo trạng thái khác có cùng lời giải thích: mỗi bên cần nhóm, và mỗi bên phải tải tùy chọn trước khi đọc.

Khớp API với giao thức

Trình quản lý tích hợp mang các đối tượng giao thức IPsec và IKEv2. Nó không trở thành ứng dụng khách SSL VPN chung qua các trường bổ sung, và một hồ sơ không khớp có thể lưu sạch sẽ mà vẫn không bao giờ kết nối. Hãy quyết định bạn thuộc nhóm nào trước khi điều tra trạng thái, vì lỗi trạng thái và giao thức không được hỗ trợ trông giống nhau từ bên ngoài.

Cho lần khởi động lại tiếp theo, danh sách kiểm tra rất ngắn: tải tùy chọn, đọc trạng thái, giữ đăng ký thay đổi ở tiền cảnh, xây dựng lại tham chiếu từ nhóm chia sẻ, và xác nhận đối tượng giao thức khớp với API bạn đã triển khai. Chạy qua danh sách đó mất một phút; đoán mò về nó mất cả một buổi chiều.

Bài viết liên quan