Ứng dụng VPN của nhà cung cấp so với NetworkManager: ai sở hữu trạng thái?
Một hồ sơ đặt tên cho plugin, không phải hành vi của ứng dụng khách nhà cung cấp. Lập bản đồ ai sở hữu đăng ký, DNS, chặn và cập nhật trước khi chuyển một máy tính xách tay được quản lý.
Nhập một hồ sơ không giống như thay thế một ứng dụng khách. NetworkManager lưu một loại plugin cùng với dữ liệu và bí mật riêng của plugin, và chính plugin sở hữu loại đó quyết định kết nối có thể làm gì. Mọi thứ mà ứng dụng của nhà cung cấp chồng lên trên, từ đăng ký đến chặn thường trực, đều sống bên ngoài tệp. Việc chuyển đổi có an toàn hay không phụ thuộc vào việc bạn thực sự dựa vào lớp nào trong số đó.
Tệp đặt tên cho một plugin, không phải một bộ tính năng
Tài liệu tham chiếu cài đặt VPN của NetworkManager mô tả một loại dịch vụ chọn plugin, cùng với một từ điển dữ liệu không trong suốt và một từ điển bí mật mà chỉ plugin diễn giải. Hồ sơ là một hợp đồng với một cách triển khai, không phải mô tả hành vi mà bất kỳ ứng dụng khách nào cũng có thể tái tạo. Hai ứng dụng khách có thể nói cùng một giao thức mà vẫn khác nhau ở điều chúng thương lượng và đường dữ liệu chúng kích hoạt. Tên giao thức cho bạn biết đường hầm là gì, không bao giờ cho biết ứng dụng khách xung quanh làm gì với nó.
Vậy hãy so sánh yêu cầu thay vì lớp bọc. Câu hỏi không phải là phương án thay thế có kết nối được không, vì thường là được; mà là liệu mọi yêu cầu từng khiến ứng dụng khách ban đầu được chấp nhận có sống sót qua lần chuyển đổi. Hãy viết những yêu cầu đó ra trước khi cài đặt bất cứ thứ gì, nếu không việc so sánh sẽ biến thành cuộc săn tìm thứ vỡ trước.
Ứng dụng của nhà cung cấp thêm gì quanh đường hầm
Ứng dụng khách của nhà cung cấp thường gói chung đăng ký và kiểm tra tư thế thiết bị, một luồng yếu tố thứ hai với giao diện riêng, chặn thường trực, kênh cập nhật và công cụ hỗ trợ. Một phần trong đó nằm cạnh giao thức, và một phần là sản phẩm riêng chỉ chia sẻ bộ cài. NetworkManager có thể thay thế đường hầm và việc định tuyến của nó, và các tập lệnh điều phối có thể kích hoạt hành động khi trạng thái kết nối thay đổi. Nhưng nó không tái tạo động cơ chặn, quy trình gia hạn chứng chỉ hay giả định về việc người dùng nào được phép dựng kết nối.
Nhiều thành phần hơn không có nghĩa là an toàn hơn, và ít hơn không có nghĩa là yếu hơn. Câu hỏi là thành phần nào thực thi chính sách mà bạn được yêu cầu tuân theo. Nếu một kiểm toán viên hỏi điều gì chặn lưu lượng khi đường hầm sụp, câu trả lời phải nêu tên một thứ thực sự làm điều đó, và một hồ sơ chỉ kết nối không phải là câu trả lời đó.
Nơi quyền sở hữu thực sự khác biệt
Hãy đọc đây như một bản đồ sở hữu chứ không phải danh sách kiểm tra, vì những thất bại bên dưới là lỗ hổng sở hữu và không lượng cấu hình ứng dụng khách nào lấp được chúng. Mỗi hàng nêu tên lớp, phía thường giữ nó hiện nay, và nơi lỗ hổng xuất hiện trước tiên.
| Layer | Vendor application | NetworkManager connection | Where the gap shows up |
|---|---|---|---|
| Enrollment and posture | built into the client | absent unless something else supplies it | a managed device fails its next posture check |
| Address and resolver authority | the client sets both | the plugin plus dispatcher scripts | names resolve through the wrong resolver after a state change |
| Blocking on drop | a bundled engine | nothing by default | traffic continues in the clear after the tunnel dies |
| Upgrade path | the vendor's own channel | the distribution package and its plugin | a plugin update changes behaviour with no vendor note |
| Diagnostics and support | vendor tooling with client state | journal and dispatcher output | support cannot see why negotiation failed |
Ghép mỗi hàng với một quan sát bạn có thể lặp lại, không phải cảm giác về ứng dụng khách. Một tên được phân giải qua trình phân giải dự định, một tuyến biến mất khi đường hầm dừng, và một kết nối bị chặn sau khi mô phỏng đứt là ba quan sát cùng nhau bao phủ phần lớn bảng. Viết quan sát bên cạnh yêu cầu mà nó chứng minh, và giữ lại những cái đã thất bại, vì quan sát thất bại là phần duy nhất của hồ sơ dự đoán sự cố tiếp theo.
Chuyển đổi mà không chồng lấn quyền sở hữu
Chạy đồng thời ứng dụng khách của nhà cung cấp và một kết nối NetworkManager cho cùng một dịch vụ là cách phổ biến nhất khiến những so sánh này đi sai. Cả hai đều cài tuyến, cả hai đều có thể đặt DNS, và cả hai đều có thể chạm vào trạng thái tường lửa. Điều bạn đo khi đó là một cách bố trí thứ ba không khớp với hành vi được ghi chép của cả hai ứng dụng khách.
nmcli -f NAME,UUID,TYPE connection show
nmcli connection show work --show-secrets | grep -E "^vpn\."
journalctl -u NetworkManager -b --since "10 min ago"Lệnh đầu tiên cho biết hồ sơ có phải loại VPN hay không. Lệnh thứ hai hiển thị loại dịch vụ của plugin và những bí mật nào được lưu, điều này quan trọng khi khóa được mong đợi từ một tác nhân thay vì từ tệp. Nhật ký là nơi một plugin đã tải nhưng không thương lượng được sẽ nói điều đó. Nếu không cái nào trong ba cái cho thấy vấn đề, lỗ hổng nằm ở các lớp chính sách phía trên đường hầm chứ không phải ở kết nối.
Ngắt kết nối ứng dụng khách cũ trước khi bật kết nối mới, giữ nguyên điểm cuối và tài khoản, và ghi lại thành phần nào sở hữu tuyến, cài đặt trình phân giải và chặn. Chính ghi chú đó ngăn bản cập nhật tiếp theo kết thúc với hai chủ sở hữu.