Máy tính xách tay kết nối, mạng nội bộ tải được, và một vài trang công cộng bị treo. Xác thực và định tuyến rõ ràng đang hoạt động, nên kích thước gói là lời giải thích còn lại. Trong một đường hầm L2TP/IPsec, MTU khả dụng nhỏ hơn mức mà bộ điều hợp vẫn công bố, và máy khách tiếp tục gửi gói kích thước đầy đủ với bit «không phân mảnh» được bật. Có thể ra lệnh cho cổng pfSense xóa bit đó, và đây là cách nhanh nhất để xác nhận chẩn đoán trước khi sửa đúng cách.

Hãy bắt đầu với những trang bị lỗi

Trước khi chạm vào bất kỳ thiết lập nào, hãy ghi lại đích nào bị lỗi và đích nào thành công. Các lần bắt tay nằm dưới giới hạn đường hầm hoàn tất bình thường, trong khi những lần truyền cần một phân đoạn kích thước đầy đủ lại dừng giữa chừng. Sự phân chia đó là dấu hiệu của vấn đề kích thước chứ không phải bộ lọc, vì một đích bị chặn sẽ lỗi khi thiết lập kết nối chứ không phải giữa trang. Cả hai quan sát đều không tốn gì và thu hẹp việc tìm kiếm ngay lập tức.

Hãy thử bằng một ping đặt bit và điều khiển kích thước tải trọng. Tải trọng lớn nhất đi qua cho bạn biết MTU thực của đường đi, và giá trị công bố của bộ điều hợp cho thấy hai bên cách nhau bao xa.

Hãy ghi cả hai con số. Bản sửa phụ thuộc vào việc con nào sai, và chính cặp số đó là thứ một bản ghi sẽ xác nhận sau này.

Bit DF làm gì khi đi ra

Đóng gói là lý do các con số khác nhau. IPsec thêm ESP, L2TP thêm một tiêu đề nữa, nên đường hầm chở ít tải trọng hơn liên kết vật lý. Windows vẫn báo 1500 byte trên bộ điều hợp và đặt «không phân mảnh» cho những gì nó gửi. Khi một gói như vậy không vừa, câu trả lời đúng từ cổng là một thông điệp ICMP yêu cầu bên gửi thu nhỏ lại. Đó là lý do một đường hầm cho qua các ping nhỏ vẫn có thể làm hỏng việc tải tệp.

Thông điệp đó thường không bao giờ đến. Một chặng nào đó có thể lọc ICMP, hoặc không gì tạo ra nó, và bên gửi lặp lại cùng kích thước cho đến khi việc truyền bỏ cuộc.

Sự im lặng là cách thể hiện bình thường ở đây, vì thế triệu chứng được đọc như chặn có chọn lọc. Không có gì trong nhật ký máy khách ghi lại một thông điệp ICMP bị thiếu.

Tùy chọn pfSense, và những gì nó không làm

Tùy chọn nằm trên trang Hệ thống, Nâng cao, Tường lửa và NAT, với nhãn «Xóa các bit DF không hợp lệ thay vì bỏ gói». Thay vì vứt bỏ một gói quá lớn mang cờ, bộ lọc gỡ cờ và để gói được chia nhỏ ở phía sau. Một gói được tính là không hợp lệ khi nó không thể đi qua giao diện ra trong một mảnh.

Tùy chọn khôi phục kết nối mà không chạm vào máy khách, nên nó phổ biến. Nó cũng là một cách lách: phân mảnh tốn CPU và làm mỗi mảnh bị mất trở nên đắt hơn.

Nó chỉ áp dụng cho lưu lượng được chuyển tiếp, không áp dụng cho lưu lượng do chính tường lửa tạo ra. Cùng trang đó có «Tắt tính năng dọn dẹp tường lửa», vốn tắt hoàn toàn việc chuẩn hóa, và đó là thay đổi rộng hơn nhiều so với nhu cầu của vấn đề này.

Một bản sửa hẹp hơn giữ TCP không bị phân mảnh

Gần như mọi luồng bị treo đều là TCP, và TCP có thể thương lượng một phân đoạn nhỏ hơn thay vì dựa vào phân mảnh. Giới hạn MSS trên giao diện đường hầm viết lại giá trị công bố trong lúc bắt tay, nên mỗi bên gửi đi thứ thực sự vừa. Đường đi sau đó hoạt động có thể dự đoán và không gói nào cần bị chia.

Điều đó để UDP cho việc dò tìm hoặc cho tùy chọn DF. Khi các trang bị lỗi là trang web thông thường, giới hạn chính là thay đổi nên được ưu tiên.

Máy khách có thể báo MTU của bộ điều hợp của chính nó qua netsh interface ipv4 show subinterfaces. Hãy so con số đó với giá trị mà máy chủ cho là đã thương lượng, vì hai bên không phải lúc nào cũng bằng nhau. Chính giá trị đó là thứ hệ điều hành thực sự dùng, bất kể cuộc thương lượng báo cáo gì.

Xác nhận bằng một bản ghi, rồi đặt lại trạng thái

Hãy ghi ở cả hai phía trước khi quyết định: một vết nơi đường hầm đi qua và một vết nơi giao diện WAN đi qua. Những gói ra đi với kích thước đầy đủ mà không có ICMP quay về chỉ ra giới hạn là tầng đúng. Những câu trả lời đến rồi chết trên đường về lại chỉ ra MTU của đường hầm.

Hãy xóa bảng trạng thái trước khi thử lại, vì các luồng hiện có giữ kích thước phân đoạn cũ. Sau đó tải trang đã lỗi và đọc chế độ xem trạng thái cho lưu lượng hai chiều thay vì các bộ đếm một phía. Nếu nó vẫn treo, hãy ghi lại thay vì thử một hộp kiểm khác.

Bài viết liên quan