Một liên kết OpenVPN dùng khóa tĩnh có phục vụ được nhiều máy khách không?
Chế độ khóa tĩnh nối hai đầu mút. Thêm client-to-client không biến nó thành máy chủ nhiều máy khách; việc đó cần chế độ TLS và danh tính cho từng thiết bị.
Chế độ khóa tĩnh nối đúng hai đầu mút, và đó là thiết kế của nó, không phải một giới hạn mà ai đó quên gỡ bỏ. client-to-client là một tùy chọn chuyển tiếp trong chế độ máy chủ, nên thêm nó vào một cấu hình --secret không thay đổi gì về số máy khách có thể kết nối. Quyết định không phải là thêm cờ nào, mà là việc triển khai cần một liên kết điểm-điểm hay một dịch vụ nhiều máy khách. Nếu nhiều thiết bị phải kết nối độc lập, chế độ bảo vệ sẽ thay đổi và mỗi thiết bị nhận một danh tính.
Hai đầu mút, một khóa và không có trạng thái cho từng máy khách: hình dạng đó là toàn bộ câu chuyện của chế độ này.
Chế độ khóa tĩnh dùng để làm gì
Trong chế độ bí mật, hai đầu mút dùng chung một tệp khóa, và khóa đó bảo vệ lưu lượng trực tiếp. Không có bắt tay, không trao đổi chứng chỉ và không có phiên cho từng máy khách, vì không có máy khách theo nghĩa máy chủ, chỉ có hai điểm cuối.
Chế độ này vẫn hữu ích cho một cặp máy cố định với quy trình luân chuyển khóa được ghi lại, và OpenVPN 2.6 đánh dấu nó là lỗi thời chính vì chế độ TLS bao phủ những trường hợp đó với thuộc tính tốt hơn. Điều nó không thể làm là phân biệt thiết bị này với thiết bị khác đang kết nối, vì việc sở hữu tệp chính là toàn bộ câu chuyện xác thực. Thêm thiết bị thứ ba nghĩa là chia sẻ cùng khóa đó với nó, sau đó hai thiết bị đầu không còn phân biệt được nó với chính chúng.
Đó là lý do giới hạn hai đầu mút mang tính cấu trúc chứ không phải một thiết lập có thể thay đổi.
Vì sao client-to-client không phải mảnh còn thiếu
client-to-client kiểm soát việc các máy khách đã kết nối có được trao đổi lưu lượng qua máy chủ hay không. Nó không nhận máy khách, không gán danh tính và không tạo chế độ máy chủ chưa được cấu hình, và trong cấu hình khóa tĩnh không có danh sách máy khách để nó quản lý.
Sự nhầm lẫn phổ biến khác liên quan đến vật liệu tls-crypt hoặc tls-auth. Một máy chủ TLS có thể chia sẻ một trong những khóa đó cho tất cả máy khách, vì nó bảo vệ kênh điều khiển thay vì chứng minh từng máy khách là ai. Khóa kênh điều khiển dùng chung trong chế độ TLS là một đối tượng khác với khóa dữ liệu tĩnh dùng chung, dù cả hai đến dưới dạng tệp trông giống nhau.
Việc chọn giữa các chế độ quy về hai câu hỏi. Có cần hơn một thiết bị kết nối độc lập không, và việc triển khai có cần thu hồi theo từng thiết bị không? Không cho cả hai giữ chế độ khóa tĩnh khả thi; có cho một trong hai chỉ về TLS. Không có lựa chọn thứ ba nơi máy khách thứ hai được nhận mà không có danh tính riêng.
Xây dựng máy chủ nhiều máy khách
Một máy chủ nhiều máy khách cần chế độ TLS, chứng chỉ phía máy chủ và danh tính cho từng máy khách. Trình trợ giúp máy chủ thiết lập nhóm địa chỉ và chế độ nhiều máy khách, nhưng nó không cung cấp cấu hình TLS, neo tin cậy hay chứng chỉ máy khách để việc tiếp nhận có ý nghĩa.
Đăng ký từng thiết bị qua tổ chức chứng chỉ hiện có thay vì sao chép thông tin đăng nhập của một máy khách. Chính các danh tính riêng biệt làm cho việc thu hồi, định tuyến theo từng máy khách và nhật ký hữu ích trở nên khả thi, và một chứng chỉ máy khách dùng chung làm sụp đổ cả ba.
Nếu việc triển khai xác thực người dùng qua thư mục bên ngoài hoặc yếu tố thứ hai, thiết kế đó giữ nguyên. Chuyển sang chế độ máy chủ TLS quyết định cách các đầu mút chứng minh thân phận ở tầng đường hầm, và nó không áp đặt phần phụ trợ tài khoản. Hãy giữ hai quyết định tách biệt để thay đổi ở một bên không âm thầm đổi bên kia.
Sau đó hãy quyết định chính sách chuyển tiếp một cách có chủ đích. client-to-client bật lưu lượng giữa các máy khách trên đường máy chủ trong không gian người dùng, điều nhiều triển khai mong muốn và một số không được có. Đó là công tắc chính sách, không phải cơ chế danh tính, và nên bật vì thiết kế yêu cầu chứ không phải vì một hướng dẫn có nó.
Kiểm tra rằng các máy khách thực sự độc lập
Kết nối hai máy khách và xác nhận chúng nhận địa chỉ khác nhau và xuất hiện với danh tính khác nhau trong nhật ký của máy chủ. Sau đó thu hồi một máy và xác nhận máy còn lại vẫn hoạt động, đây là phép thử thực tế rằng danh tính không bị chia sẻ.
Hãy thử dịch vụ được phép giữa các đầu mút và một dịch vụ phải tiếp tục bị chặn. Hai lần đăng nhập thành công chứng minh việc tiếp nhận, không phải cách ly, và sự khác biệt này quan trọng khi triển khai phải tách các nhóm người dùng.
Cuối cùng, hãy đọc chế độ máy chủ từ cấu hình đang chạy chứ không phải từ trí nhớ. Cấu hình khóa tĩnh với các tùy chọn thêm vẫn là một liên kết điểm-điểm, và một máy chủ TLS đúng đắn là cách sắp xếp duy nhất trong đó nhiều máy khách thực sự là các đầu mút riêng biệt.
Nếu nhật ký hiển thị một tên chung cho mọi thiết bị, vấn đề không phải là chế độ. Vấn đề là quy trình đăng ký.