บันทึกเทคนิคของ zhaoJian

วิธีแก้ปัญหาระบบ Linux เช่น Ubuntu Fedora CentOS ที่เข้าเว็บได้เฉพาะบางเว็บไซต์

เทคโนโลยี ~2204 คำ · อ่าน 6 นาที - ครั้งที่อ่าน

ก่อนอื่นให้ฉันแนะนำความรู้พื้นฐานของปัญหานี้

แพ็กเก็ตข้อมูล TCP ทั่วไปมีฟิลด์หน้าต่างที่มีขนาดหน้าต่างสูงสุด 64KB ในช่วงแรกของการพัฒนาอินเทอร์เน็ต ระบบส่วนใหญ่ไม่มีความสามารถในการประมวลผลข้อมูลที่ใหญ่กว่านี้ ดังนั้นขนาดนี้จึงเพียงพอ แต่สำหรับแอปพลิเคชันแบนด์วิดท์การเข้าถึงในปัจจุบัน ขนาดนี้เล็กเกินไปแล้ว

เพื่อแก้ปัญหานี้ ในปี 1992 มีการเสนอโซลูชันที่เรียกว่าการปรับขนาดหน้าต่าง ซึ่งให้ตัวเลือกการขยายหน้าต่าง TCP เพิ่มเติมที่มีตัวคูณขนาด 8 บิต ค่าของตัวเลือกนี้ระบุว่าหน้าต่างควรมีขนาดเท่าใด โดยการเลื่อนค่าขนาดหน้าต่างไปหลายบิต ตัวอย่างเช่น หากตัวคูณถูกตั้งค่าเป็น 5 ขนาดหน้าต่างควรเลื่อน 5 บิตหรือคูณด้วย 32

ตัวเลือกการขยายหน้าต่างเพิ่มคำจำกัดความหน้าต่าง TCP จาก 16 บิตเป็น 32 บิต นี่ไม่ได้ทำโดยการแก้ไขส่วนหัว TCP ส่วนหัว TCP ยังคงใช้ 16 บิต แต่ทำให้สำเร็จโดยการกำหนดตัวเลือกที่ขยาย 16 บิต

ในเคอร์เนล 2.6.16 และรุ่นก่อนหน้า ตัวคูณเริ่มต้นเป็น 0 ดังนั้นจึงไม่มีการเพิ่มขนาดหน้าต่าง ในเคอร์เนล 2.6.17 ตัวคูณถูกตั้งค่าเป็น 7 ตามอุดมคติแล้ว นี่ไม่ควรมีปัญหา แต่ในความเป็นจริง เราเตอร์ที่ “เสีย” บางตัวจะเขียนทับตัวเลือก TCP การปรับขนาดหน้าต่าง — ตั้งค่าตัวคูณเป็น 0 แต่ตัวเลือกความสามารถในการประมวลผลจริงไม่เปลี่ยนแปลง

โดยพื้นฐานแล้ว นี่หมายความว่าเว็บไซต์บางเว็บจะไม่สามารถเข้าถึงได้จากระบบที่ใช้เคอร์เนล 2.6.17 และสูงกว่า จากมุมมองของนักพัฒนาเคอร์เนล พวกเขาจะคิดว่าเราเตอร์เหล่านั้นเสียและจำเป็นต้องเปลี่ยน ในความเป็นจริง เราเตอร์เหล่านี้อาจยังคงใช้งานได้อีกหลายปีก่อนจะได้รับการซ่อมแซมหรือเปลี่ยน

วิธีหนึ่งในการแก้ปัญหานี้คือการตั้งค่าตัวเลือกการปรับขนาดหน้าต่างของเคอร์เนล Linux ใหม่ แม้ว่านี่จะไม่ได้แก้ไขเราเตอร์ที่เสีย แต่หากคุณได้รับผลกระทบจากปัญหาการปรับขนาดหน้าต่าง วิธีนี้สามารถทำให้ระบบของคุณเชื่อมต่อกับไซต์ระยะไกลได้

วิธีแก้ไขคือแก้ไขไฟล์ /etc/sysctl.conf โดยเพิ่มบรรทัดต่อไปนี้:

net.ipv4.tcp_window_scaling = 0

ลบเครื่องหมาย # ด้านหน้าออก

สิ่งนี้จะปิดใช้งานฟังก์ชันการปรับขนาดหน้าต่างอย่างสมบูรณ์ ซึ่งจะทำให้คุณสามารถเชื่อมต่อกับบางไซต์ที่ก่อนหน้านี้ไม่สามารถเชื่อมต่อได้ ไม่ว่าจะถูกหรือผิด นักพัฒนาเคอร์เนลปฏิเสธที่จะย้อนกลับการเปลี่ยนแปลงนี้ ดังนั้นการใช้ตัวเลือกนี้สามารถปิดใช้งานฟังก์ชันการปรับขนาดหน้าต่างของคุณเองเพื่อกลับไปยังการตั้งค่าเริ่มต้นก่อน 2.6.17 และยังสามารถเชื่อมต่อกับไซต์ที่ไม่สามารถเข้าถึงได้และทำให้พวกเขามั่นใจว่าควรค้นหาและเปลี่ยนเราเตอร์ที่เสีย

แชร์:

ความคิดเห็น