Giới hạn kết nối VPN: trạng thái trực tiếp hay lịch sử được lưu giữ
Giới hạn ba kết nối cần trạng thái ô trống trực tiếp, không phải lịch sử duyệt web: cơ chế phải lưu gì, có thể bỏ gì và trạng thái đó đi đâu tiếp theo.
Ba kết nối đồng thời là một quyết định chấp nhận, và để trả lời nó cần biết những ô nào đang bị chiếm ngay bây giờ, chứ không phải điều gì đã xảy ra tháng trước. Một dịch vụ có thể từ chối phiên thứ tư từ một bảng nhỏ các bản ghi đang hoạt động và không bao giờ dựng một dòng thời gian. Đó là phát biểu về cơ chế, không phải về nhà vận hành, và sự khác biệt rất quan trọng khi bạn đọc chính sách quyền riêng tư. Mô hình dưới đây cho thấy quyết định cần gì và có thể bỏ gì.
Cơ chế: một bảng ô, không phải nhật ký
Cách triển khai đơn giản nhất liên kết một gói đăng ký với tối đa ba bản ghi phiên đang hoạt động. Mỗi phiên được chấp nhận chiếm một ô, và ô được giải phóng khi dịch vụ quyết định rằng phiên đó đã kết thúc. Bản ghi cần một danh tính đủ cụ thể để việc giải phóng một kết nối không giải phóng ô của kết nối khác; vì thế định danh phiên quan trọng hơn tên tài khoản.
Mức chiếm dụng và lịch sử là những cấu trúc dữ liệu khác nhau. Mức chiếm dụng trả lời câu hỏi có hoặc không về hiện tại, và có thể bị bỏ ngay khi phiên kết thúc. Lịch sử là một dòng sự kiện chỉ thêm vào, và nó tồn tại vì ai đó đã chọn giữ nó. Một dịch vụ có thể có một, cả hai hoặc không có gì.
Sự khác biệt là vô hình từ bên ngoài. Một giới hạn kết nối hiển thị tương thích với một bộ đếm nhỏ trong bộ nhớ, một bảng cơ sở dữ liệu dùng chung và một kho sự kiện đầy đủ có bảng điều khiển. Không có gì ở giới hạn cho bạn biết cái nào đang chạy.
| What is stored | Why it exists |
|---|---|
| Active session slots | To admit or refuse the next connection |
| Session event log | To investigate or bill later |
| Monitoring series | To watch capacity and error rates |
| Backup copies | To restore any of the above |
Vì sao mô hình trực tiếp vẫn cần phối hợp
Một kết nối bị mất có thể không được nhận ra là đã kết thúc ngay lập tức. Cổng chờ một thời gian chờ, một lỗi keepalive hoặc một lần dừng kế toán, và cho đến khi một trong số đó đến, ô vẫn bị chiếm. Người dùng kết nối lại trong khoảng thời gian đó thấy một lời từ chối không liên quan gì đến thiết bị thứ tư.
Một máy chủ khởi động lại phải đối soát trạng thái của nó, và nhiều cổng phục vụ cùng một tài khoản cần một quyết định chung. Nếu không, một tài khoản có thể vượt hạn mức bằng cách kết nối đến các vị trí khác nhau. Trạng thái dùng chung hoặc có thể khôi phục giải quyết điều đó, và trạng thái dùng chung là một yêu cầu thiết kế, không phải bằng chứng của giám sát.
Không phần nào của sự phối hợp đó cần lịch sử duyệt web. Một cổng chuyển tiếp gói tin không cần biết phiên đã truy cập những trang nào để đếm phiên, và hai dòng dữ liệu đó thường được xử lý bởi những thành phần hoàn toàn khác nhau.
Giữ một bộ đếm trong bộ nhớ cũng không làm cho các sự kiện liên quan trở nên ẩn danh. Trong khi dịch vụ chạy, một bản ghi gắn với gói đăng ký cho thấy một tài khoản có các kết nối đang hoạt động, và cả việc truy cập trạng thái đó lẫn thời gian tồn tại của nó đều đáng được hỏi.
Trạng thái đó đi đâu sau đó
Câu hỏi về quyền riêng tư không phải là máy chủ có đếm được hay không. Hãy hỏi điều gì xảy ra với một phiên đã kết thúc: bản ghi bị xóa hay trở thành một sự kiện trong chuỗi giám sát? Sau đó hỏi những thành phần nào khác đã thấy cùng sự kiện đó, vì nhật ký xác thực, bản ghi kế toán và bản sao lưu mỗi thứ đều có thể giữ một bản sao mà đường thực thi đã bỏ.
Kế toán RADIUS là ví dụ rõ ràng nhất. Một cặp Start và Stop tồn tại để hỗ trợ thanh toán và kiểm soát phiên, và nó tạo ra một bản ghi về kết nối bất kể có ai từng truy vấn nó như lịch sử hay không. Do đó một dịch vụ thực thi giới hạn thông qua kế toán theo cấu trúc giữ nhiều hơn một bảng ô.
Việc xóa cũng có hình dạng. Một bản ghi bị xóa khỏi bảng trực tiếp có thể tồn tại trong một bản sao lưu được thực hiện một giờ trước, và thời hạn lưu giữ của bản sao lưu đó là một tuyên bố chính sách riêng. Chỉ đọc kho chính sẽ cho một câu trả lời không đầy đủ.
Đặt câu hỏi theo các trường
Hướng dẫn tối thiểu hóa dữ liệu của RFC 6973 liên kết dữ liệu được thu thập và lưu trữ với mục đích được phục vụ. Khi áp dụng ở đây, câu hỏi hữu ích là nhiệm vụ chấp nhận đồng thời thực sự cần những trường nào, và mục đích nào biện minh cho việc giữ từng trường sau khi nhiệm vụ đó kết thúc.
Một tuyên bố dịch vụ chính xác tách trạng thái kết nối trực tiếp được dùng để thực thi hạn mức khỏi mọi bản ghi được giữ lại sau khi chấm dứt, và nó nêu tên các hệ thống khác trong phạm vi của lời hứa. Một câu chỉ nói rằng ba kết nối được thực thi không xác lập rằng có một kho lưu trữ hay không có.
Khi vòng đời không rõ ràng, hãy ghi nhận đó như một câu hỏi lưu giữ chưa được trả lời thay vì một phán quyết. Sự hiện diện của một giới hạn không phải bằng chứng của một lịch sử ẩn, và một lời giải thích hợp lý về trạng thái trực tiếp không phải là một cuộc kiểm toán nhà cung cấp.