WireGuard không có thương lượng MTU. Nó mã hóa mọi thứ giao diện đưa cho nó và gửi kết quả đi, và nếu gói tin được đóng gói vượt quá đường đi, nó bị bỏ hoặc phân mảnh ở đâu đó mà bạn không thấy. Ai đó phải chọn MTU của giao diện, và người đó chính là công cụ đã đưa giao diện lên.

Có ba ứng viên, và rất dễ nhầm lẫn chúng.

Ba nơi giá trị có thể đến từ

Giá trị có thể được đặt rõ ràng trong cấu hình giao diện, được công cụ thiết lập tính từ thông tin tuyến đường, hoặc do bất kỳ trình quản lý mạng nào sở hữu giao diện đặt. Một lệnh gọi wg thông thường không làm điều nào trong số đó, vì wg chỉ quản lý khóa và peer. MTU sống trên giao diện mạng, đó là lý do ip link show wg0 là nơi bạn đọc nó.

Nếu không chắc trường hợp nào áp dụng, hãy đọc MTU trước, rồi tìm ra ai đã khởi động giao diện.

Quyết định dựa trên ai vận hành giao diện

Nếu wg-quick khởi động nó, một dòng MTU rõ ràng sẽ thắng, nếu không nó sẽ tính một giá trị. Nếu một trình quản lý mạng khởi động nó, hồ sơ của trình quản lý đó quyết định. Nếu môi trường chạy container hoặc ứng dụng khách của nhà cung cấp khởi động nó, hãy đọc tài liệu của họ thay vì giả định hành vi của wg-quick.

Quyết định không phải là con số nào tốt nhất về mặt trừu tượng. Mà là thành phần nào bạn thực sự có thể cấu hình.

Phép tính mặc định làm gì

wg-quick tra tuyến đến điểm cuối của peer, lấy MTU của giao diện ra đó và trừ đi chi phí đóng gói. Với tiêu đề ngoài IPv4 thì khoảng 60 byte; với IPv6 khoảng 80. Kết quả được giới hạn để một đường đi 1500 byte cho ra 1420 thay vì một giá trị chỉ chạy trên một họ địa chỉ. Đó là giá trị mặc định hợp lý, không phải đo đạc đường đi của bạn.

Nó không thể biết về một đường hầm sau này, một liên kết di động hay một đường ICMP bị lọc.

Giới hạn này che giấu một câu hỏi thật. Nếu đường đi của bạn thực sự là 9000 byte từ đầu đến cuối, thì 1420 bỏ hiệu năng lại trên bàn, và nếu đường đi là 1400, thì 1420 đã quá lớn. Giá trị mặc định là một thỏa hiệp, và phải được đối xử như vậy.

Khi đường đi thay đổi dưới chân bạn

Một laptop di chuyển từ Ethernet sang Wi-Fi rồi sang điểm phát sóng điện thoại vẫn giữ MTU giao diện mà nó khởi đầu. Đường đi bên ngoài có thể giờ nhỏ hơn, và không gì thương lượng lại. Các đường hầm lồng nhau làm tệ hơn, vì mỗi lớp trừ chi phí của riêng nó từ cùng một ngân sách. Giá trị chạy được ở văn phòng không phải giá trị chạy được ở sân bay.

Một handshake gần đây chứng minh các khóa hoạt động. Nó không chứng minh gì về việc các gói lớn có vừa hay không.

Thử một con số mỗi lần

Giữ nguyên ứng dụng và đích đến, đổi một giá trị và đo. ping -M do -s 1372 thử một gói 1400 byte với bit DF được bật, và đó là dạng thử nghiệm bạn muốn. Nếu yêu cầu nhỏ chạy được còn yêu cầu lớn bị kẹt, bạn có vấn đề kích thước chứ không phải định tuyến.

Chỉ đổi MTU. Điều chỉnh nhiều tùy chọn gói cùng lúc không cho bạn biết cái nào quan trọng.

Và đừng mong một thay đổi MTU sửa được tuyến quay về bị thiếu, một quy tắc chuyển tiếp hay một lỗi DNS. Những thứ đó cũng tạo ra triệu chứng không có lưu lượng, và chúng có bài kiểm tra riêng. Hướng dẫn wg-quick ghi lại việc lựa chọn tự động.

Bài viết liên quan