Hồ sơ WireGuard bị sao chép: vì sao cả hai thiết bị đều lỗi
Hồ sơ sao chép nhân đôi khóa, không phải thiết bị. Hãy xem nhật ký bắt tay, xác nhận danh tính dùng chung, rồi cấp hồ sơ thứ hai đúng cách.
Đường hầm chạy tốt trên máy tính xách tay, nên tệp cấu hình được chép sang điện thoại và máy tính bảng, và giờ các lần bắt tay cứ đến rồi đi trên cả ba. Không có gì bị gõ sai và cấu hình máy chủ không bị sửa. Hồ sơ WireGuard không phải là tài khoản có mật khẩu để nhiều thiết bị dùng chung; nó là một cặp khóa, và chỉ nửa công khai mới nhận diện một peer. Sao chép tệp là sao chép danh tính, nên máy chủ giờ cố duy trì một quan hệ điểm cuối cho nhiều thiết bị đều tự nhận là một. Từ phía máy chủ không có thiết bị thứ hai nào để nhận ra, chỉ có một peer mà địa chỉ cứ đổi liên tục.
Bắt đầu với nhật ký bắt tay trên từng thiết bị
Mở ứng dụng khách trên từng thiết bị và ghi lại thời điểm bắt tay gần nhất cùng điểm cuối hiện tại trước khi thay đổi bất cứ điều gì. Trong một cấu hình khỏe mạnh, các giá trị đó ổn định khi thiết bị đang được dùng; với danh tính bị nhân bản, dấu thời gian thay phiên nhau, và điểm cuối ghi trên máy chủ có thể mô tả một thiết bị khác với thiết bị đang giữ hồ sơ. Chính sự thay phiên đó là dấu hiệu, và nó giải thích vì sao triệu chứng trông như kết nối chập chờn chứ không phải lỗi cấu hình. Các thiết bị không hỏng; chúng đang ngắt lời nhau.
Hãy đọc ngay trên chính các thiết bị, để mỗi quan sát gắn với một máy cụ thể. Dấu thời gian chép từ một cuộc trò chuyện hỗ trợ sẽ mất mối liên kết đó và sau này rất ít giá trị.
Xác nhận xem hai thiết bị có dùng chung một danh tính không
So sánh khóa công khai, tuyệt đối không so khóa riêng. Khóa công khai được dẫn xuất từ khóa riêng, nên hai hồ sơ chứa cùng khóa riêng sẽ tạo ra cùng khóa công khai và không thể phân biệt với máy chủ. Nếu hai thiết bị báo cùng một khóa công khai thì vấn đề đã rõ và không mức chỉnh keepalive nào giúp được. Hai khóa khác nhau với các lần bắt tay chập chờn chỉ sang nơi hoàn toàn khác, vì thế việc so sánh phải đến trước mọi thay đổi.
wg show wg0 public-key
wg show wg0 latest-handshakes
wg show wg0 endpoints
wg show wg0 transfer
Những lệnh này chỉ in ra vật liệu công khai và bộ đếm, và đó là tất cả những gì một cuộc trao đổi hỗ trợ cần. Một mục peer trên máy chủ với một khóa công khai và một điểm cuối cứ di chuyển giữa hai mạng là kết quả mong đợi của việc nhân bản, vì gói tin đã xác thực từ nguồn mới sẽ cập nhật nơi lưu lượng được gửi đến. Hành vi đó là giao thức chạy đúng như thiết kế, nên rất dễ bị nhầm với sự cố mạng.
Cấp danh tính thứ hai đúng cách
Tạo một cặp khóa mới trên thiết bị cần nó, rồi thêm khóa công khai thu được vào máy chủ như một peer riêng với các địa chỉ được phép của chính nó. Khóa riêng nên được tạo trên thiết bị và ở lại đó; một khóa được tạo ở nơi khác rồi dán vào đã đi qua ít nhất một chỗ thừa, và chuyến đi đó giờ là một phần của câu chuyện tin cậy.
umask 077
wg genkey > newdevice.key
wg pubkey < newdevice.key
Phía máy chủ cần khóa công khai cùng một phép gán địa chỉ được phép không trùng với thiết bị gốc. Một hồ sơ giữ địa chỉ đường hầm cũ nhưng trình khóa mới sẽ tạo ra một peer mà máy chủ có thể chấp nhận rồi định tuyến sai, một lỗi tinh vi hơn lần bắt tay bị từ chối. Hãy kiểm tra phép gán địa chỉ trước khi kết nối, không phải sau lần mất gói gây bối rối đầu tiên.
Loại bỏ bản sao mà không làm hỏng bản gốc
Khi danh tính mới hoạt động, hãy gỡ hồ sơ đã chép khỏi vùng lân cận của thiết bị gốc thay vì xóa mục máy chủ mà bản gốc vẫn dùng. Nếu bản sao có thể đã bị lộ, hãy thu hồi ngay rồi cấp lại; sự tiện lợi không phải lý do để một bí mật dùng chung tiếp tục lưu hành.
Một dịch vụ được quản lý thực sự hỗ trợ nhiều thiết bị cho mỗi gói đăng ký sẽ nói rõ điều đó và cấp thông tin đăng nhập riêng từ giao diện của chính nó. Việc sao chép thủ công một hồ sơ không bao giờ là mô hình đó, kể cả khi thương hiệu của dịch vụ gợi ý thiết bị không giới hạn.
Kiểm tra cả hai thiết bị riêng rẽ và cùng lúc
Trước tiên xác minh từng thiết bị một mình: bắt tay, bộ đếm truyền tải nhích lên và một đích mà chỉ đường hầm mới tới được. Sau đó chạy cả hai cùng lúc và quan sát cách máy chủ nhìn các điểm cuối; hai khóa khác nhau phải tạo ra hai mục peer ổn định chứ không phải một mục nhảy loạn.
Giữ các khóa công khai mới cùng ghi chú triển khai và ghi lại thiết bị nào giữ khóa nào. Không có danh sách đó, người tiếp theo sao chép hồ sơ sẽ lặp lại đúng lỗi ấy, và các lần bắt tay thay phiên lại bị đổ cho mạng.