WireGuard vẫn dùng điểm cuối cũ sau khi DNS thay đổi
Tên được phân giải thành địa chỉ mới trong khi giao diện vẫn dùng địa chỉ mà nó lấy được lúc khởi động. Hãy so sánh cả hai, sau đó khởi động lại qua trình quản lý của nó.
Đường hầm ngừng truyền lưu lượng sau khi bản ghi DNS của máy chủ dịch chuyển, trong khi tên vẫn phân giải đúng từ chính máy đó. Hai sự thật này không mâu thuẫn. Cấu hình WireGuard chứa một điểm cuối, và công cụ phân giải tên vào đúng thời điểm nó áp dụng cấu hình đó, nên giao diện đang chạy có thể tiếp tục dùng địa chỉ mà nó lấy được vài giờ trước. Hãy kiểm tra giao diện đang dùng gì trước khi thay khóa hoặc chạm vào dải của đường hầm.
Tên chỉ được phân giải một lần, không liên tục
Cấu hình WireGuard cơ bản nhận một điểm cuối làm địa chỉ và cổng, và công cụ dựng giao diện phân giải tên máy chủ ngay tại thời điểm đó. Không có gì trong giao thức cơ bản hỏi DNS theo lịch, và ứng dụng khách có thể thêm hành vi làm mới của riêng nó lên trên. Ghi lại địa chỉ đã phân giải, họ địa chỉ và cổng bên cạnh tên giúp khoảng trống đó hiện ra. Không có bản ghi ấy, cấu hình trông vẫn đúng trong khi giao diện đang nói chuyện với nơi khác.
Có một lần cập nhật tự động thực sự, và đáng biết vì nó giống việc làm mới DNS nhưng không phải. Điểm cuối của một peer có thể dịch chuyển khi lưu lượng được xác thực đúng đến từ một địa chỉ mới, đó là chuyển vùng chứ không phải phân giải tên. Nó đi theo peer, nên không thể phát hiện một máy chủ mới không liên quan mà điểm cuối cũ chưa từng liên hệ.
So sánh bản ghi với địa chỉ đang dùng
Hỏi tên đã ghi tài liệu qua trình phân giải mà ứng dụng khách dùng, rồi hỏi giao diện xem nó giữ điểm cuối nào. Hai câu trả lời ấy chính là phép so sánh quyết định phần còn lại của trang này:
dig +short vpn.example.net
wg show wg0 endpoints
wg show wg0 latest-handshakes
Các lệnh con show mà những dòng này dùng được ghi trong trang hướng dẫn wg(8). Hãy so sánh cả họ địa chỉ, không chỉ địa chỉ, vì một bản ghi đã có mục IPv6 là một phép so sánh khác với bản ghi có địa chỉ IPv4 thay đổi. Nếu điểm cuối khác bản ghi, giao diện đang chạy trên thông tin cũ và tên chưa bao giờ là vấn đề. Nếu chúng khớp nhau mà đường hầm vẫn lỗi, hãy chuyển sang trình lắng nghe và các quy tắc thay vì hồ sơ.
Dấu thời gian bắt tay nằm trong khối đó vì chỉ điểm cuối không cho biết peer có tới được hay không. Một dấu thời gian cũ bên cạnh điểm cuối đúng là vấn đề đường đi, không phải vấn đề phân giải, và sự khác biệt đó thay đổi thứ bạn chạm vào tiếp theo.
Khởi động lại qua trình quản lý của giao diện
Sau khi xác nhận điểm cuối đã cũ, hãy làm mới nó qua cơ chế sở hữu giao diện thay vì sửa cấu hình đang chạy. Với giao diện do wg-quick khởi động, đó là hạ xuống và nâng lên, với một unit systemd là khởi động lại, và với giao diện do trình quản lý sở hữu là thay đổi được thực hiện trong trình quản lý đó, vì chỉnh sửa lúc đang chạy sẽ bị ghi đè ở lần áp dụng sau:
wg-quick down wg0 && wg-quick up wg0
systemctl restart wg-quick@wg0
Sau đó xác nhận rằng trình lắng nghe thay thế và danh tính của nó đúng là dịch vụ bạn định dùng. Việc dịch chuyển DNS không phải thay đổi danh tính, nên nó không bao giờ nên là dịp để tin một khóa mà bạn chưa xác minh. Nếu giao diện giờ báo địa chỉ mới mà vẫn không có bắt tay, lỗi đã chuyển sang đường mạng mới hoặc trình lắng nghe, đó là tiến bộ chứ không phải cùng một lỗi hai lần.
Bắt tay trước, sau đó là đường dữ liệu
Hãy tách hai kết quả trước khi chọn danh sách kiểm tra. Một bắt tay thành công dưới một ứng dụng thất bại là vấn đề đường dữ liệu: tuyến, tiền tố được phép hoặc DNS bên trong đường hầm. Một bắt tay không bao giờ xảy ra là vấn đề khả năng tới hoặc danh tính ở điểm cuối. Trộn cả hai tạo ra báo cáo mà không ai tái lập được và nhật ký thay đổi có ba chỉnh sửa không liên quan.
Ghi lại tên, địa chỉ đã phân giải, điểm cuối đang dùng và việc bắt tay đã hoàn tất hay chưa. Bốn sự thật đó trả lời câu hỏi mà lỗi này cứ đặt ra, và biến lần xuất hiện tiếp theo thành một lần kiểm tra hai phút. Việc bảo trì tên và việc tiếp nhận phía khách vẫn là hai công việc riêng: sửa bản ghi không thực hiện việc tiếp nhận, và khởi động lại giao diện không sửa được bản ghi vẫn còn sai.