ฉันพบปัญหาแปลกๆ เกี่ยวกับการเชื่อมต่อผ่านสายกับเราเตอร์บน LAN ซึ่งทราฟฟิก TCP หลุดและบันทึกเป็นแพ็กเก็ตแยกส่วน
สถานการณ์จำลองมีการตั้งค่า MTU ที่ 1500 บนไคลเอนต์เครือข่ายและบนอะแดปเตอร์อีเธอร์เน็ตของเราเตอร์ (ตาม แสดง ip addr
).
ตัวอย่างข้อความแพ็กเก็ตที่ถูกทิ้ง (แบ่งออกเป็นหลายบรรทัดเพื่อให้อ่านง่าย):
12 พฤษภาคม 09:44:05 เคอร์เนล: DROP IN=eth0 OUT=tun11 MAC=<removed>
SRC=<IP ของเดสก์ท็อป> DST=<IP ปลายทางภายนอก>
LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=54356 DF PROTO=TCP SPT=53370 DPT=443 SEQ=3216568911 ACK=0
WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080A002E76880000000001030307) MARK=0x8000000
จากการอ่านเพียงเล็กน้อยบน TCP/IP ฉันเห็นว่าตัวเลือกนั้น 0204
อ้างถึง MSS และขนาดน่าจะเป็น 1460
แม้ว่าฉันจะพยายามเข้าใจว่าไบต์ที่เหลือหมายถึงอะไร (0402 080A 002E 7688 0000 0000 0103 0307
). ฉันไม่เห็นกฎไฟร์วอลล์บนเราเตอร์ที่ใช้เครื่องหมายเลย แต่มีความรู้ netfilter แบบละเอียดที่จำกัด
เมื่อฉันลองคำนวณขนาด MTU สูงสุดผ่าน ping -M ทำ <router IP> -c 2 -s 1500
การตอบสนองของลูกค้าคือ ข้อผิดพลาดในเครื่อง: ข้อความยาวเกินไป mtu=1500
หรือเมื่อ ปิง
cmd ใช้ขนาด MTU ที่เล็กลงเพื่อทดสอบ ไม่มีการตอบสนอง / แพ็กเก็ตล้มเหลวทั้งหมด
ในอดีตฉันลด MTU ลง 28 แล้วรับสถานการณ์หลัง ฉันคิดว่านี่หมายความว่า MTU นั้นเหมาะสม แต่แพ็กเก็ตยังคงถูกทิ้ง ตัวอย่างรายการบันทึกเราเตอร์ของดรอปนี้:
12 พฤษภาคม 13:01:01 เคอร์เนล: DROP IN=eth0 OUT= MAC=<removed>
SRC=< IP ของเดสก์ท็อป > DST= < IP ของเราเตอร์ >
LEN=1378 TOS=0x00 PREC=0x00 TTL=64 ID=0 DF
PROTO=ประเภท ICMP=8 รหัส=0 ID=5 SEQ=1 MARK=0x8000000
เมื่อฉันระบุ MTU ที่เหมาะสมกว่าโดยใช้ ปิง
ทดสอบและรีบูตเดสก์ท็อป แพ็กเก็ตยังคงแยกส่วนและ ปิง
การทดสอบจะส่งคืน MTU ที่ต่ำกว่า (น้อยกว่า 28 ไบต์ในแต่ละครั้ง)
เดสก์ท็อปทำงาน คูบุนตู 20.04.4.
หลังจากพยายามทำความเข้าใจเกี่ยวกับสถานการณ์นี้มาระยะหนึ่งแล้ว ฉันได้ลองเพิ่ม ตามกฎ iptables บนเราเตอร์:
-A INPUT -m conntrack --ctstate ที่เกี่ยวข้อง ก่อตั้ง -j ยอมรับ
-A FORWARD -m conntrack --ctstate DNAT -j ยอมรับ
แต่สิ่งนี้ไม่ได้แก้ปัญหา
สิ่งนี้ไม่ ไม่ เกิดขึ้นบนอุปกรณ์ Android ที่เชื่อมต่อกับเราเตอร์เดียวกันผ่าน WiFi เราเตอร์จะรีสตาร์ทข้ามคืนตามกำหนดเวลาและ Xboxes จะพบแพ็กเก็ต frag / drop สถานการณ์เดียวกันจนกว่าจะรีสตาร์ทอย่างน้อยหนึ่งครั้ง XBox หนึ่งเครื่องเชื่อมต่อผ่าน WiFi หนึ่งเครื่องเชื่อมต่อกับเราเตอร์ที่เชื่อมต่อกับเราเตอร์ที่มีปัญหา
ทราฟฟิกระหว่างเราเตอร์ WiFi และเราเตอร์ Edge ดูเหมือนจะไม่ได้รับผลกระทบ - ไม่มีร่องรอยของแพ็กเก็ตหลุดเนื่องจากการแตกแฟรกเมนต์ที่เลเยอร์นั้น
วิธีแก้ปัญหา
ฉันได้ค้นพบว่าการเรียกใช้ไฟล์ ติดตามเส้นทาง
จาก ทุบตี
บนเดสก์ท็อปช่วยคลายปัญหา
ก่อนและหลัง 'แก้ไข' นี้ อะแดปเตอร์ LAN ของเดสก์ท็อปจะแสดงรายการด้วย MTU เดียวกัน ในขณะที่หากจำเป็นต้องปรับ MTU ฉันคาดว่าค่านี้จะมีการเปลี่ยนแปลง (และฉันสามารถตั้งค่าเป็นค่าเริ่มต้นได้):
eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500
อย่างไรก็ตามฉันไม่เข้าใจ ทำไม เดอะ ติดตามเส้นทาง
เห็นได้ชัดว่าแก้ไขปัญหาได้ ข้อเสนอแนะใด ๆ จะได้รับการขอบคุณ ณ จุดนี้