Tuổi bắt tay của WireGuard không phải là thời gian chờ phiên
Bộ đếm thời gian đổi khóa điều khiển khóa, không điều khiển quyền truy cập của người dùng. Đọc latest-handshakes cho biết trạng thái giao thức của một peer, chứ không phải việc quyền của nó đã hết hạn hay chưa.
Một peer ngừng truyền lưu lượng không vì thế mà mất khóa, và một lần bắt tay mới không chứng minh rằng ai đó đã gia hạn quyền sử dụng nó. Các bộ đếm thời gian của WireGuard giữ khóa luôn mới và gói tin luôn chảy; chúng không mô phỏng một người dùng đăng xuất sau một số phút nhất định. Ba câu hỏi bị nhầm lẫn ở đây, và mỗi câu có bằng chứng khác nhau. Sự phân biệt này quyết định nên dùng công cụ nào.
Ba câu hỏi, một đầu ra lệnh
Người vận hành hỏi liệu một peer có thể kết nối được không, liệu nó đã hoạt động chưa, và liệu nó còn được phép hay không. Câu thứ nhất là trạng thái giao thức, câu thứ hai là bộ đếm lưu lượng và câu thứ ba là quyền truy cập. Chỉ hai câu đầu đọc được từ một giao diện WireGuard, và chúng thường được dùng để trả lời cả ba.
| Question | Evidence it needs | What does not answer it |
|---|---|---|
| Is the peer reachable now? | A recent handshake and a working return path | An interface that exists |
| Has it been active? | Transfer counters moving over time | A handshake timestamp alone |
| Is access still granted? | The configuration or controller that authorizes it | Any protocol timer |
Hãy đọc các hàng như ba cuộc điều tra riêng biệt. Hai hàng đầu rẻ và có thể trả lời bằng chính bộ đếm của giao diện. Hàng thứ ba cần cấu hình cấp quyền truy cập, và nó nằm ở một tệp khác hoặc một hệ thống khác. Chọn sai hàng là việc bắt một bộ đếm thời gian giao thức làm công việc của một chính sách.
Bộ đếm thời gian thực sự điều khiển điều gì
Giao thức định nghĩa các hằng số cho việc thử lại bắt tay, luân chuyển khóa vận chuyển và từ chối các gói được bảo vệ bằng khóa cũ. Chúng phản ứng với lưu lượng và trạng thái, không phản ứng với lịch hay một chính sách nói rằng một người có thể kết nối đến 17:00. Đó là lý do một peer nhàn rỗi có thể trông không hoạt động hàng giờ mà vẫn được cấp quyền.
PersistentKeepalive thường bị nhầm là thời gian chờ còn thiếu. Nó gửi các gói rỗng đã xác thực để giữ một ánh xạ NAT còn sống, và đặt nó về không sẽ dừng các gói đó mà không thu hồi gì cả.
Đọc trạng thái lúc chạy của từng peer, dùng khóa công khai thay vì phần chú thích:
wg show wg0 latest-handshakes
wg show wg0 transfer
Một lần bắt tay gần đây cho biết một lần bắt tay đã hoàn tất. Nó không cho biết rằng dịch vụ riêng phía sau đường hầm có thể truy cập được, và một dấu thời gian cũ có thể thuộc về một peer chỉ đơn giản là im lặng.
Vì sao một peer nhàn rỗi không phải là một peer đã đăng xuất
WireGuard không có đối tượng phiên với điểm bắt đầu và điểm kết thúc. Một peer là một khóa công khai với các địa chỉ được phép, và lần bắt tay bảo vệ lưu lượng của nó được thay thế khi cần mà không có bất kỳ lần đăng nhập nào người dùng nhìn thấy. Coi việc không có lưu lượng gần đây là đăng xuất sẽ đảo ngược mô hình.
Nếu lời phàn nàn thực sự là kết nối thất bại sau khi để nhàn rỗi, nguyên nhân thường ở chỗ khác: một ánh xạ NAT đã hết hạn, một thiết bị đã ngủ, hoặc một tường lửa đã bỏ trạng thái. Hãy kiểm tra bằng cách gửi lưu lượng từ phía bên kia và bắt đầu một luồng mới, rồi so sánh điều gì thay đổi.
Đặt thời hạn ở nơi quyền truy cập sống
Nếu quyền truy cập phải kết thúc vào một thời điểm cụ thể, thời hạn thuộc về thứ cấp quyền truy cập. Một bộ điều khiển phát hành cấu hình peer có thể yêu cầu phê duyệt được gia hạn trước khi trao một cấu hình mới, và đó là thuộc tính của bộ điều khiển chứ không phải một tham số ẩn trên giao diện.
Với các peer được quản lý thủ công, việc xóa phải đến được hai nơi: giao diện đang chạy và cấu hình đã lưu. Xóa peer chỉ khi đang chạy sẽ bị đảo ngược bởi một lần khởi động lại hoặc một vòng đối soát, thứ khôi phục danh tính mà bạn tưởng đã hết hạn:
sudo wg set wg0 peer <public-key> remove
sudo wg-quick save wg0
Sau đó hãy kiểm tra ranh giới thay vì nhãn. Xác nhận rằng peer bị từ chối sau thời hạn, xác nhận rằng đường gia hạn hoạt động, và xác nhận rằng trạng thái sống sót qua một lần tải lại trình quản lý. Tuổi bắt tay là một tín hiệu vận hành hữu ích, và nó không phải là bản ghi truy cập.