Bạn có các triệu chứng của sự cố MTU : một số kết nối TCP bị đóng băng, ít nhiều có thể lặp lại cho một lệnh hoặc URL cụ thể nhưng không có mẫu tổng thể dễ nhận thấy. Một triệu chứng cụ thể là các phiên ssh tương tác hoạt động tốt nhưng việc truyền tệp hầu như luôn thất bại. Hơn nữa, pppoe là người gây ra vấn đề MTU số một cho người dùng gia đình. Vì vậy, tôi kê toa kiểm tra MTU.
Nó là gì?
Các m aximum t ransmission u nit là kích thước tối đa của một gói dữ liệu qua một liên kết mạng. MTU thay đổi từ phương tiện vận chuyển sang phương tiện vận chuyển, ví dụ Ethernet có dây và wifi (802.11) có các MTU khác nhau và các liên kết ATM (chiếm hầu hết các cơ sở hạ tầng đường dài) đều có MTU riêng.
PPPOE là một giao thức được đóng gói, có nghĩa là mỗi gói bao gồm một vài byte tiêu đề theo sau là gói bên dưới - vì vậy nó làm giảm kích thước gói tối đa theo kích thước của tiêu đề.
IP cho phép các bộ định tuyến phân mảnh các gói nếu chúng phát hiện ra rằng chúng quá lớn cho bước nhảy tiếp theo, nhưng điều này không phải lúc nào cũng hoạt động. Về lý thuyết, MTU thích hợp nên được phát hiệntự động , nhưng điều này cũng không phải lúc nào cũng hoạt động. Cụ thể, Google cho biết rằng Trình quản lý mạng không luôn luôn hành động đúng với thông tin MTU thu được từ khám phá MTU, nhưng tôi không biết phiên bản nào bị ảnh hưởng hoặc trường hợp sử dụng có vấn đề là gì.
Làm thế nào để đo lường nó.
Nếu bạn có tracepath
từ iputils Linux , hãy chạy tracepath 8.8.8.8
để xem MTU qua đường dẫn đến máy chủ DNS của Google. Nếu phiên bản của bạn traceroute
có một --mtu
tùy chọn, hãy chạy traceroute -n --mtu 8.8.8.8
. Xem Khám phá MTU giữa tôi và IP đích để có thêm tùy chọn.
Thiếu công cụ tự động, bạn có thể đo bằng tay. Hãy thử gửi các gói ping có kích thước nhất định đến các máy chủ bên ngoài đáp ứng với chúng, ví dụ ping -c 1 -s 42 8.8.8.8
(trên Linux; trên các hệ thống khác, tìm tài liệu về ping
lệnh của bạn ). Các gói của bạn sẽ vượt qua được với các giá trị đủ nhỏ là 42 (nếu 42 không hoạt động, có thứ gì đó đang chặn ping.). Đối với các giá trị lớn hơn, gói sẽ không được thông qua. 1464 là một giá trị tối đa điển hình nếu phần cơ sở hạ tầng giới hạn là mạng Ethernet cục bộ của bạn. Nếu bạn may mắn, khi bạn gửi một gói quá lớn, bạn sẽ thấy một thông báo như thế nào Frag needed and DF set (mtu = 1492)
. Nếu bạn không may mắn, chỉ cần tiếp tục thử nghiệm giá trị cho đến khi bạn tìm thấy mức tối đa là bao nhiêu, sau đó thêm 28 ( -s
chỉ định kích thước tải trọng và có thêm 28 byte tiêu đề). Xem thêmCách tối ưu hóa kết nối Internet của bạn bằng MTU và RWIN trên các diễn đàn Ubuntu.
Cách đặt nó (thay thế 1454 bằng MTU bạn đã xác định và eth0
bằng tên giao diện mạng của bạn)
- Là một lần (Linux): chạy
ifconfig eth0 mtu 1454
- Vĩnh viễn (Debian và các công cụ phái sinh như Ubuntu, nếu không sử dụng Trình quản lý mạng): Chỉnh sửa
/etc/network/interfaces
. Ngay sau mục nhập cho giao diện mạng của bạn (sau lệnh iface eth0 …
), hãy thêm một dòng với pre-up ifconfig $IFACE mtu 1454
. Ngoài ra, nếu địa chỉ IP của bạn là tĩnh, bạn có thể thêm mtu 1454
tham số vào lệnh iface eth0 inet static
.
Vĩnh viễn (Debian và các công cụ phái sinh như Ubuntu, có hoặc không có Trình quản lý mạng): Tạo tập lệnh được gọi /etc/network/if-pre-up.d/mtu
với nội dung sau và làm cho nó có thể thực thi được trên thế giới ( chmod a+rx
):
#!/bin/sh
ifconfig $IFACE mtu 1454
Thêm tài nguyên