สถานการณ์ต่อไปนี้: เราเป็นกลุ่มนักเรียนที่ดูแลการเชื่อมต่ออินเทอร์เน็ตสำหรับหอพักท้องถิ่นโดยมีผู้ใช้งานราว 2,000 คน
เรามีระบบจุดรับส่งข้อมูลทุก ๆ MB ที่ลดลงหรืออัปโหลดค่าใช้จ่ายจุดใหม่จะถูกเพิ่มเป็นรายชั่วโมง ในขณะนี้เราบล็อกการเข้าถึงอินเทอร์เน็ตของผู้ใช้เมื่อเขาใช้คะแนนทั้งหมดของเขา (โดยกำหนดให้นโยบายการปฏิเสธใน iptables บนเราเตอร์เกตเวย์ Debian ของเรา)
เราต้องการ จำกัด แบนด์วิดท์ของผู้ใช้เท่านั้น วิธีที่ดีที่สุดในการทำเช่นนี้คืออะไร?
คำตอบง่ายๆคือตั้งค่า จำกัด อัตราบนพอร์ตสวิตช์ของผู้ใช้ (ส่วนใหญ่เป็น Cisco Catalyst 3550s) อย่างไรก็ตามนี่เป็นสิ่งที่ไม่พึงประสงค์เนื่องจากปริมาณการใช้ข้อมูลภายในเครือข่ายของเราและเครือข่ายมหาวิทยาลัยควรไม่ จำกัด มีวิธี จำกัด แบนด์วิดท์เฉพาะสำหรับแพ็คเก็ตที่มีปลายทางหรือช่วง IP ต้นทาง (เช่นทั้งการเข้าและออก) ใน Cisco IOS หรือไม่ ฉันหาอะไรไม่เจอ
อีกวิธีหนึ่งคือการควบคุมปริมาณการใช้งานบนเราเตอร์เกตเวย์ของเรา การแก้ปัญหาหลายอย่างในใจฉัน:
tc หรือ tcng - ดูเหมือนว่าทั้งสองมีไวยากรณ์ที่เป็นความลับมากกว่าและไม่มีคุณสมบัติที่ดีสำหรับการควบคุมการรับส่งข้อมูลต่อ IP QDisc โดยเฉพาะสำหรับคนจำนวนมากอาจทำให้เราเตอร์ค่อนข้างช้า นอกจากนี้เอกสารเกี่ยวกับทั้งคู่ค่อนข้างล้าสมัย
shorewall - ดูเหมือนว่าจะมีไวยากรณ์ที่ค่อนข้างเรียบร้อยสำหรับการกำหนดค่าอย่างไรก็ตามฉันไม่แน่ใจว่าจะสามารถจัดการปริมาณการรับส่งข้อมูลและผู้ใช้จำนวนนี้ได้หรือไม่และเหมาะสำหรับการ จำกัด การรับส่งข้อมูลต่อ IP
pfSense - ดูเหมือนว่าระบบปฏิบัติการมีไว้เพื่อวัตถุประสงค์เช่นเรา อย่างไรก็ตามเราจำเป็นต้องติดตั้งเราเตอร์เกตเวย์ของเราใหม่ เราไม่มีระบบ BSD อื่น ๆ และ pfSense ก็ต้องมีความสามารถในการทำบัญชีจราจรที่ดีมาก (เรากำลังใช้ fprobe-ulog และ ulog-acctd ที่นั่นในตอนนี้) เช่นกัน
ประสบการณ์ของคุณคืออะไร? โซลูชันใดที่เหมาะกับความต้องการของเราและสามารถบำรุงรักษาได้ง่ายที่สุด คุณมีความคิดอื่น ๆ ไหม?
หากคุณต้องการข้อมูลเพิ่มเติมเกี่ยวกับระบบของเราโปรดอย่าลังเลที่จะถาม
ขอบคุณล่วงหน้า.
แก้ไข : ฉันได้ดำเนินการระบบด้วยและiptables
tc
ผู้ใช้ทุกคนมี / 28-subnet, VPN IP (ทั้งจาก 10.0.0.0/8) และ IP ภายนอกทั้งหมดจะถูกนำผ่านเครือข่าย iptables เดียว RETURN
ห่วงโซ่นี้มีเพียงหนึ่งกฎง่ายๆ
ทุกๆห้านาทีสคริปต์ Python จะอ่านตัวนับไบต์ของกฎเหล่านี้ จะรีเซ็ตเคาน์เตอร์และอัปเดตบัญชีจุดรับส่งข้อมูลของผู้ใช้ในฐานข้อมูล PostgreSQL ของเรา
หากจุดสมดุลของผู้ใช้ลดลงต่ำกว่าเกณฑ์ที่กำหนดสองคลาส tc จะถูกสร้างขึ้นสำหรับผู้ใช้นี้ (หนึ่งสำหรับขาเข้าและอีกหนึ่งสำหรับอินเทอร์เฟซขาออกบนเราเตอร์เกตเวย์ของเรา) IP จะถูกป้อนลงในตัวกรอง tc ชั้นเรียนถูก จำกัด ความเร็วโดย HTB
เมื่อเทียบกับระบบก่อนหน้าด้วยfprobe-ulog
และulog-acctd
สิ่งนี้เร็วกว่ามากเนื่องจากการนับไบต์ทำได้โดย iptables
ความเร็วเครือข่ายได้รับการปรับปรุงอย่างมากสำหรับผู้ใช้ของเรา