Bộ đếm bắt tay được cập nhật, giao diện vẫn giữ địa chỉ của nó, và gói ping sang phía bên kia không đi đến đâu. Sự kết hợp đó khiến người ta bối rối, bởi một cuộc bắt tay đang chạy trông như bằng chứng rằng đường hầm đã sẵn sàng. Không phải vậy: đường hầm có thể đã được thương lượng đầy đủ mà vẫn không có tuyến nào đưa lưu lượng vào trong, và đó là hai công việc riêng biệt do hai phần trạng thái riêng biệt đảm nhận. Cách sửa phụ thuộc hoàn toàn vào việc thiếu cái nào trong hai, nên bước đầu tiên là tìm ra điều đó.

wg-quick làm cả hai mà không cần ai yêu cầu. Phần hỗ trợ WireGuard tích hợp của NetworkManager cũng cài tuyến cho peer theo mặc định, điều này thu hẹp nghi phạm vào một tùy chọn bị tắt, một bảng định tuyến khác, hoặc một cấu hình được nhập qua thứ khác.

Xác nhận đường hầm trước khi đuổi theo tuyến

wg show in ra giao diện, peer, điểm cuối và tuổi của lần bắt tay gần nhất, còn ip addr show xác nhận địa chỉ có mặt. Một cuộc bắt tay gần đây nghĩa là khóa, điểm cuối và đường UDP đều hoạt động. Mọi thứ hỏng đều nằm ở hạ nguồn của chúng: định tuyến, lọc hoặc phân giải tên.

Sau đó hỏi nhân xem nó sẽ làm gì với một đích thật thay vì một đích giả định: ip route get 10.42.7.9. Câu trả lời nêu tên giao diện ra và địa chỉ nguồn mà gói tin sẽ mang. Khi nó nêu tên card mạng vật lý, gói tin không bao giờ đi vào đường hầm, dù cuộc bắt tay trông khỏe đến đâu.

AllowedIPs vừa là bộ lọc vừa là danh sách tuyến

Các tiền tố trong AllowedIPs làm hai việc. Chúng chọn peer nào chở một đích ra ngoài, và chúng kiểm tra địa chỉ nguồn của gói tin vào, đó chính là ranh giới của định tuyến theo khóa mã hóa. Trong wg-quick chúng còn điều khiển việc cài tuyến tự động, và chính hành vi thêm đó giải thích vì sao cùng một cấu hình chạy được từ terminal mà không chạy được từ ứng dụng khách trên máy tính để bàn.

Trong trường hợp đằng sau bài viết này, cấu hình được nhập qua một plugin của bên thứ ba chứ không qua phần hỗ trợ tích hợp, và giao diện khởi động mà không có tuyến tiền tố. Liệt kê bảng sẽ thấy ngay: ip route show chỉ chứa tuyến kết nối của địa chỉ giao diện, và không có gì cho dải từ xa.

Hỏi xem các tuyến peer có được bật hay không

Đọc thiết lập trước khi thay đổi bất cứ thứ gì: nmcli -f wireguard.peer-routes,ipv4.route-table connection show work-wg. Khi peer-routes hiển thị no, cách sửa được hỗ trợ là nmcli connection modify work-wg wireguard.peer-routes yes, sau đó kết nối lại. Thay vào đó, thêm một tuyến tĩnh chỉ chạy được đến lần kích hoạt tiếp theo rồi lặng lẽ biến mất. Sự biến mất đó chính là manh mối: một tuyến cứ trở lại như một câu đố mỗi sáng không phải do cấu hình cài đặt.

Nếu tùy chọn đã được bật, hãy kiểm tra xem tiền tố có sống trong bảng khác không bằng ip route show table all | grep 10. Một tuyến trong bảng không phải bảng chính không hề thiếu, nó chỉ vô hình với một phép tra cứu chỉ xem bảng chính. Hãy sửa định tuyến theo chính sách thay vì chồng thêm một mục trùng lặp lên trên.

Thêm tiền tố vào kết nối, không phải vào hệ thống đang chạy

Trong trình biên tập kết nối, trang WireGuard giữ peer và AllowedIPs của nó, còn trang IPv4 giữ các tuyến bổ sung. Một tuyến thêm vào đó sẽ sống qua các lần kết nối lại vì nó thuộc về cấu hình. Trên dòng lệnh, tương đương là gắn thêm một tuyến vào kết nối theo dạng cổng rỗng, rồi hạ và nâng kết nối để thay đổi được áp dụng.

Chọn tiền tố hẹp nhất bao phủ các máy chủ bạn cần. Sao chép ví dụ /8 của nhà cung cấp có thể nuốt mất những dải nội bộ tình cờ nằm trong đó, và những sự cố phát sinh trông như đường hầm hỏng chứ không phải tuyến quá rộng.

Đường hầm chia tách do danh sách tiền tố quyết định

Không có công tắc cho đường hầm chia tách; danh sách tiền tố chính là quyết định. Một peer có một dải cho LAN văn phòng và một dải cho mạng phòng thí nghiệm sẽ gửi đúng những đích đó qua đường hầm và để mặc mọi thứ còn lại. Một máy chủ đơn lẻ cần /32, còn những dải chồng lấn ở hai nơi cần tiền tố máy chủ cho đến khi ai đó đánh số lại một mạng con.

Chọn không gửi gì qua đường hầm đẩy cùng quyết định đó đến giới hạn của nó: một danh sách tối thiểu giữ liên kết ở trạng thái hoạt động trong khi lưu lượng thường vẫn đi theo đường quen thuộc. Hãy viết ý định ra giấy, nếu không người đọc sau sẽ coi danh sách ngắn là một sơ suất và sốt sắng mở rộng nó.

Một chủ sở hữu cho bảng tuyến

wg-quick và NetworkManager đều tin rằng mình sở hữu các tuyến của giao diện. Nhập một cấu hình viết cho wg-quick rồi sau đó cũng khởi động dịch vụ wg-quick, bạn sẽ nhận được những mục trùng lặp hoặc xung đột mà hành vi phụ thuộc vào việc cái nào chạy sau cùng. Hãy chọn một chủ sở hữu và bỏ cái kia: nếu NetworkManager quản lý kết nối, hãy tắt unit wg-quick cho giao diện đó, và đừng bao giờ thêm cấu hình thứ hai cho cùng một thiết bị.

Khi việc chia tách phải theo một card mạng vật lý thay vì một đích, bạn đã chuyển sang định tuyến theo chính sách, và định tuyến theo chính sách cũng cần một tác giả duy nhất. Hãy kiểm chứng bằng cách lặp lại ip route get, rồi chạm tới một máy chủ bên trong tiền tố từ xa bằng thứ in ra địa chỉ nguồn mà nó đã chọn. Kiểm tra IPv6 và DNS riêng nếu cấu hình mang một trong hai.

Bài viết liên quan