NetworkManager hay wg-quick: ai sở hữu các tuyến WireGuard của bạn?
Hai trình quản lý có thể cùng nhận một liên kết WireGuard, và cấu hình bạn đã sửa có thể không phải là cấu hình đang có hiệu lực. Tìm chủ sở hữu từ các tuyến, quy tắc và trạng thái giao diện.
Bạn đổi AllowedIPs trong tệp WireGuard, khởi động lại đường hầm, và bảng định tuyến trông y hệt như trước. Phản ứng thường gặp là xóa tuyến gây phiền và đi tiếp, cách này hiệu quả cho đến khi lần kết nối lại tiếp theo đặt nó trở lại. Tệp bạn đã sửa không nhất thiết là đối tượng đã tạo ra trạng thái bạn đang thấy. Hai trình quản lý có thể chạy cùng một giao thức trên một máy, và chỉ một trong số họ sở hữu giao diện tại mỗi thời điểm.
Lầm tưởng: chỉ có một cấu hình WireGuard trên máy
wg-quick đọc một tệp trong /etc/wireguard/ và dựng giao diện khi bạn đưa nó lên. NetworkManager lưu một hồ sơ kết nối theo định dạng keyfile riêng và hiển thị nó khi kích hoạt, và việc nhập một tệp wg-quick sao chép các giá trị vào hồ sơ đó thay vì liên kết tới nó. Sửa bản gốc sau đó không thay đổi gì, vì hồ sơ không còn đọc nó nữa. Vì vậy cùng một danh sách đồng đẳng và khóa có thể tồn tại hai lần, với bản sao thứ hai đang có hiệu lực.
Một dấu hiệu đáng nhớ: những thay đổi sống sót qua lần khởi động lại nhưng không qua lần nhập lại đến từ một kho lưu trữ, và những thay đổi biến mất khi khởi động lại đến từ kho kia.
Một ví dụ thực tế làm rõ sự phân chia. Hãy so sánh nmcli connection show với systemctl status wg-quick@wg0, rồi kiểm tra các tuyến thực sự treo trên giao diện nào. Nếu dịch vụ đã chết và giao diện đang lên, hồ sơ là thứ đang làm việc, bất kể tệp nói gì.
Lầm tưởng: các quy tắc định tuyến là một phần của WireGuard
Thiết bị WireGuard trong nhân biết các đồng đẳng và khóa, và nó không biết gì về định tuyến theo chính sách. Những ip rule mục và bảng bổ sung bạn thấy đều do công cụ đã đưa giao diện lên cài đặt. wg-quick có thể thêm một fwmark và một bảng riêng cùng các quy tắc trỏ tới nó, trong khi NetworkManager cài các tuyến qua cài đặt ipv4 của riêng nó và để DNS cho backend phân giải mà hệ thống dùng. Cùng một đường hầm, tác dụng phụ khác nhau.
Hãy đọc ip rule và ip route show table all trước khi thay đổi bất cứ điều gì, và ghi lại mỗi tuyến nằm trong bảng nào. Một số bảng bạn không cấu hình là gợi ý mạnh về công cụ đã tạo ra nó.
Lầm tưởng: xóa tuyến là một cách sửa
Một tuyến bị xóa khi đang chạy là tuyến mà chủ sở hữu sẽ cài lại ở lần kích hoạt tiếp theo, và việc kích hoạt có thể xảy ra mà không có bạn: máy tính thức dậy, liên kết chập chờn, dịch vụ khởi động lại hoặc tự kết nối của NetworkManager. Đó là lý do cùng một tuyến quay lại và vì sao cách xử lý tạm thời có cảm giác không đáng tin chứ không phải sai. Trước tiên hãy xác định trình quản lý, sau đó thay đổi đầu vào mà trình quản lý đó thực sự đọc.
Kết nối lại và khởi động lại dịch vụ liên quan là phép thử phân biệt một bản sửa thật với một bản chỉ trông gọn gàng.
Chọn một chủ sở hữu và loại bỏ cái còn lại
Chọn trình quản lý mà triển khai của bạn hỗ trợ, rồi vô hiệu hóa việc kích hoạt cạnh tranh thông qua điều khiển được ghi nhận của nó thay vì hy vọng nó sẽ nằm im. Một dịch vụ wg-quick bị che hoặc một hồ sơ NetworkManager bị xóa là rõ ràng; để cả hai được bật và cho chúng chạy đua thì không. Giữ lại quyền truy cập đang hoạt động trước khi vô hiệu hóa bất cứ thứ gì, vì giao diện mang phiên từ xa của bạn có thể chính là thứ bạn sắp gỡ bỏ.
Sau thay đổi, xác minh lưu lượng được bao gồm và loại trừ, rồi DNS, rồi khởi động lại một lần. Nếu trạng thái sống sót qua lần khởi động lại với một trình quản lý, bạn có một chủ sở hữu thay vì một sự trùng hợp.
Nguyên tắc chung đáng nhớ cả ngoài WireGuard: khi một cài đặt cứ quay lại, hãy ngừng xóa kết quả và tìm quy trình đang liên tục tạo ra nó.