Các sự cố của OpenVPN 3 Linux đến dưới dạng lỗi phương thức D-Bus kèm một cái tên lạ, và cám dỗ là hạ phiên bản gói rồi hy vọng. Ứng dụng khách không phải một chương trình duy nhất: một giao diện dòng lệnh nói qua bus với những dịch vụ sở hữu hồ sơ, phiên, động cơ VPN và các thay đổi mạng cần đặc quyền. Quyết định dịch vụ nào trong năm cái đó sở hữu lời gọi thất bại chính là phần lớn của chẩn đoán, và nó tốn một lệnh thay vì một lần quay lại phiên bản. Những gì tiếp theo là quyết định đó, theo thứ tự mà các sự cố thường xuất hiện.

Năm chủ sở hữu sau một lệnh

Năm tiến trình là quan trọng, và mỗi cái có tên bus riêng: giao diện nhận lệnh của bạn, trình quản lý cấu hình lưu hồ sơ và chính sách truy cập của chúng, trình quản lý phiên sở hữu vòng đời phiên, phần phụ trợ chạy kết nối qua OpenVPN 3 Core Engine, và dịch vụ cấu hình mạng cài đặt giao diện, tuyến đường và thiết lập DNS. Vì thế một lỗi nêu tên một đối tượng cấu hình không phải là lỗi của phần phụ trợ, và một phần phụ trợ không khởi động không phải là thất bại xác thực. Việc xếp thông điệp vào một trong những dòng đó phải xảy ra trước khi thay đổi bất cứ điều gì, vì mọi bước sau đều phụ thuộc vào dòng nào là đúng. Đoán dòng chính là cách một bản sửa ngắn biến thành cả buổi chiều với các gói.

Hỏi bus hệ thống xem có những dịch vụ nào trước khi hỏi bất cứ điều gì khác, rồi xác nhận các thành phần đã cài đặt thống nhất về một phiên bản. OpenVPN 3 Linux đăng ký các dịch vụ đó như những unit hệ thống, nên bus cần hỏi là bus hệ thống, truy vấn phiên bản cần quyền quản trị, và danh sách tạo bằng --user đọc phiên đăng nhập của bạn, nơi các unit không bao giờ xuất hiện. Các dịch vụ được kích hoạt theo yêu cầu và một số thoát khi nhàn rỗi, nên một dịch vụ thiếu trước yêu cầu đầu tiên của bạn đơn giản là chưa được hỏi về điều gì. Ba lệnh dưới đây trả lời về sự tồn tại, phiên bản và trạng thái unit mà không mở phiên VPN.

sudo busctl list | grep -i openvpn
sudo openvpn3-admin version --services
systemctl list-units 'openvpn3*'

Mỗi danh sách thực sự chứng minh điều gì

Góc nhìn của chính ứng dụng khách là bằng chứng rẻ nhất hiện có, và mỗi góc nhìn trong đó chứng minh ít hơn vẻ ngoài. Một hồ sơ trong danh sách cấu hình cho thấy một hồ sơ đã được nhập và không nói gì về việc ai đó có được phép kết nối với nó hay không. Một phiên trong danh sách phiên cho thấy một đối tượng phiên tồn tại và không nói gì về việc xác thực từ xa đã xong hay chưa.

openvpn3 configs-list
openvpn3 sessions-list

Các đường dẫn đối tượng trong những kết quả đó chỉ những đối tượng được quản lý trên bus chứ không phải tệp, nên không thể sửa chúng, và một đường dẫn ghi lại trước đó trở nên lỗi thời ngay khoảnh khắc phiên đó ngắt kết nối. Dùng lại một đường dẫn từ ghi chú của bạn tạo ra các lỗi "no such object" không liên quan gì đến VPN. Bảng giai đoạn bên dưới tách điều mà mỗi bước của kết nối thiết lập khỏi điều nó để ngỏ, và quyết định quay lại phiên bản dựa chính xác vào sự phân biệt đó. Hãy đọc dòng khớp với bằng chứng của bạn, rồi đọc lại nội dung lỗi.

StageWhat existsWhat proves itWhat it does not prove
Profile importedA configuration object held by the configuration managerThe profile is listed by the clientThat the profile owner permits a connection
Session requestedA session object held by the session managerThe session appears in the session listThat the remote side accepted the credentials
Connect dispatchedAn asynchronous attempt on the VPN backendStatus changes arrive for that sessionThat an interface was configured
Tunnel configuredAn interface, routes and DNS settingsThe network service reports success and routes appearThat traffic reaches the peer

Lời gọi kết nối trả về trước khi đường hầm tồn tại

Lời gọi kết nối trao cho bạn một phiên để theo dõi rồi trả về, vì thế một lời gọi có vẻ thành công mà sau đó là im lặng là trạng thái trung gian bình thường chứ không phải mâu thuẫn. Giao diện vẫn phải theo dõi các thay đổi trạng thái và trả lời mọi yêu cầu tương tác. Một hồ sơ cần thông tin đăng nhập mà không nhận được trả lời sẽ chờ trong trạng thái trông giống hệt phần phụ trợ bị treo. Trạng thái chờ đó đáng được nhận ra, vì nó đưa người ta đến nhầm thành phần.

Trong khi một lần thử đang chạy, hãy theo dõi danh sách phiên và nhật ký của chính giao diện cho hồ sơ đó. Một phiên không bao giờ rời trạng thái ban đầu sẽ nêu tên thành phần đã dừng, và nhật ký thường nêu tên nó ngay trong vài dòng đầu. Hãy để tên hồ sơ trong tầm tay, vì lệnh nhật ký nhận một hồ sơ chứ không phải đường dẫn phiên, thêm một lý do để đọc lại danh sách thay vì dùng lại đường dẫn.

openvpn3 sessions-list
openvpn3 log --config <profile> --level 6

Đọc nhật ký của một thành phần mà không mở phiên

Khi giao diện không báo cáo điều gì hữu ích, hãy đến thành phần đã ghi lại sự cố thay vì bắt đầu một kết nối khác. Với một trình ghi systemd-journald đã cấu hình, góc nhìn nhật ký có phạm vi của quản trị viên đọc các sự kiện của một thành phần mà không chạm vào chính sách bus và không mở phiên, điều này quan trọng vì một chẩn đoán làm thay đổi hệ thống mà nó đang đo thì chứng minh được rất ít. Hãy lọc theo unit chứ không theo thẻ syslog: các unit dịch vụ riêng lẻ không bảo đảm một định danh chung, nên một truy vấn theo thẻ có thể trả về trang trống trong khi chính unit đã ghi lại sự cố.

Ghi lại bốn trường trước khi nhờ ai đó giúp: tên đầy đủ của lỗi, dịch vụ và đối tượng liên quan, dấu thời gian, và phiên bản các gói đã cài. Đó là những gì người bảo trì cần, và không điều nào trong đó đòi phải dán hồ sơ hay thông tin đăng nhập vào phiếu. Mở rộng chính sách truy cập bus để làm lỗi im đi không phải là chẩn đoán, nó xóa mất ranh giới vốn đang nêu tên thành phần thay cho bạn. Nội dung riêng tư của hồ sơ nằm ngoài các báo cáo chia sẻ vì cùng lý do với thông tin đăng nhập.

journalctl -u 'openvpn3-service-*' -n 50 --no-pager
openvpn3-admin journal --service <name>

Sửa ranh giới đã từ chối

Mỗi dòng của bản đồ có bản sửa riêng, và các dòng không thay thế lẫn nhau. Một thao tác bị từ chối trên hồ sơ là câu hỏi về chính sách và quyền sở hữu, trong khi một phần phụ trợ không kích hoạt là câu hỏi về dịch vụ và đóng gói. Máy chủ từ chối xác thực không phải cả hai, nên đổi mật khẩu nhiều lần không sửa được một vấn đề kích hoạt cục bộ. Chọn sai bản sửa chính là cách một vấn đề chính sách biến thành một lần cài lại.

Sau khi thay đổi gói, hãy xác minh một bản cài đặt nhất quán và được hỗ trợ thay vì chép một tệp nhị phân cũ vào chỗ cũ. Quay lại phiên bản có kiểm soát là câu trả lời chính đáng cho một hồi quy đã xác nhận, miễn là các gói còn tương thích và có một đường về bảo trì được hỗ trợ. Hãy lập đường đó trước khi dịch vụ thôi khởi động, chứ không phải sau.

Một nền tảng khác có thể dùng chung thư viện lõi VPN đó mà không dùng chung các dịch vụ bus của Linux, nên một sự cố trông giống vậy trên Windows không nói gì về sự cố này. Tổng quan D-Bus ghi lại các đường dẫn đối tượng được mở cho cấu hình và phiên, và đó là phần kiến trúc mà chẩn đoán này dựa vào. Đọc một lần, và lỗi tiếp theo sẽ đến với một thành phần đã gắn sẵn vào nó.

Bài viết liên quan