Vì sao một peer WireGuard đã xóa lại quay về sau khi khởi động lại
Hai trạng thái giữ danh sách peer: giao diện đang chạy và thứ ghi nó lúc khởi động. Hãy gỡ nó khỏi cả hai, và kiểm tra SaveConfig trước khi sửa bất cứ thứ gì.
Danh tính biến mất khỏi giao diện đang chạy và thay đổi trông như đã xong. Sau khi dịch vụ khởi động lại, nó quay về, khiến người ta đọc thành WireGuard phớt lờ lệnh. Điều thực sự xảy ra đơn giản hơn: cấu hình lúc khởi động vẫn còn peer đó.
Hai trạng thái giữ danh sách ấy. Việc thu hồi chỉ thật khi cả hai đều mất nó.
wg set thực sự thay đổi điều gì
Lệnh wg set wg0 peer <public-key> remove sửa giao diện đang chạy trong nhân. Nó không ghi gì xuống đĩa. Tệp cấu hình, hồ sơ NetworkManager hay trạng thái đã lưu của router vẫn nguyên vẹn. Đó là thiết kế, không phải lỗi.
Sự tách biệt ấy là có chủ ý, vì công cụ không hề biết ai sở hữu giao diện. Một lệnh lúc chạy phải an toàn với giao diện do thứ khác quản lý. Nó không thể đoán bản sao bền vững nằm ở đâu. Hệ quả dễ nói: việc gỡ bỏ lúc chạy vốn dĩ là tạm thời.
Vì thế peer quay lại ở lần khởi động kế tiếp, và quay lại cùng các tiền tố được phép ban đầu. Mọi thứ được định tuyến qua nó cũng được tạo lại. Một danh tính tưởng như đã bị thu hồi do đó có thể tới được các đích cũ sau khi nạp lại. Không điều gì trong đầu ra lúc chạy đã cảnh báo ai.
Tìm kẻ ghi trước khi sửa một tệp
Giao diện có một chủ sở hữu. Đó có thể là wg-quick đọc tệp, NetworkManager áp dụng hồ sơ, cấu hình giao diện của chính router, hay điểm vào của một container tạo lại giao diện khi khởi động. Sửa một tệp mà chủ sở hữu không bao giờ đọc thì không tạo ra thay đổi bền vững nào.
Hãy bắt đầu từ giao diện đang chạy và xác định các khóa công khai, vì tên và địa chỉ là định danh yếu hơn chính khóa. Sau đó so danh sách ấy với cấu hình đã lưu mà chủ sở hữu thực sự đọc.
wg show wg0 peers
wg show wg0 allowed-ips
systemctl status wg-quick@wg0 --no-pager
ls -l /etc/wireguard
Một giao diện đang sống mà danh sách peer và nội dung tệp không khớp nhau chính là toàn bộ chẩn đoán. Cấu hình đã lưu thắng khi khởi động, còn trạng thái lúc chạy thua. Hãy so cả hai trước khi đổi bất kỳ bên nào.
Cái bẫy SaveConfig
wg-quick thêm một nếp gấp bắt những người sửa tệp bằng tay. Khi SaveConfig được bật, hành vi tắt máy đã được ghi chép của nó ghi trạng thái lúc chạy hiện tại đè lên tệp cấu hình.
Điều đó đảo ngược chiều bền vững thông thường. Bạn gỡ một peer khỏi tệp, rồi dịch vụ dừng. Trạng thái đang chạy được ghi đè lên bản sửa của bạn và phục hồi peer bạn vừa xóa.
Vì thế thứ tự quan trọng: sửa tệp khi giao diện đang xuống, hoặc tắt SaveConfig trước khi sửa, rồi bật giao diện lại và xác nhận điều gì đã được nạp. Sửa bằng tay khi giao diện đang lên là một cuộc đua với lần ghi lúc tắt.
Đổi cả hai trạng thái, rồi nạp lại
Lúc chạy, gỡ peer theo khóa. Trong cấu hình đã lưu, gỡ đúng khối đó qua thao tác được chủ sở hữu hỗ trợ, thay vì sửa quanh nó.
Sau đó xem lại peer đã mang theo gì. Một mạng được định tuyến từng thuộc danh tính bị thu hồi nên được gán lại một cách có chủ ý hoặc gỡ bỏ, chứ không bị peer được sửa tiếp theo thừa hưởng trong im lặng.
Giữ một đường khôi phục mở nếu cổng vào cũng mang quyền truy cập quản trị của bạn. Một lần khởi động lại gỡ nhầm peer là sự cố tự gây ra. Điều tương tự cũng đúng với lần khởi động lại gỡ nhầm tuyến đường.
Một bài kiểm tra đạt trông thế nào
Nạp lại hoặc khởi động lại dịch vụ, rồi đọc lại danh sách peer. Khóa cũ phải vắng mặt, và những peer bạn muốn giữ phải vẫn còn và hoạt động.
wg show wg0 peers
wg show wg0 allowed-ips
sudo wg-quick down wg0 && sudo wg-quick up wg0
wg show wg0 peers
Ở nơi tình huống cho phép, hãy xác nhận danh tính cũ không còn tới được các tài nguyên trước đây của nó. Một danh sách giao diện gọn gàng trước khi khởi động lại là nửa bài kiểm tra. Nửa còn lại là điều danh tính vẫn có thể làm sau đó.
Nếu một trình quản lý cứ khôi phục peer, hãy ngừng lặp lại việc gỡ bỏ ở mức thấp. Hãy sửa bản kiểm kê mà kẻ ghi đó đọc, vì cho tới lúc đó mỗi lần khởi động lại là một lời mời nữa cho danh tính xuất hiện trở lại.