tình huống sau: Chúng tôi là một nhóm sinh viên quản lý kết nối internet cho các ký túc xá địa phương, với tổng số khoảng 2000 người dùng cuối.
Chúng tôi có một hệ thống điểm giao thông, mỗi MB giảm hoặc tải lên điểm chi phí, điểm mới được thêm theo giờ. Hiện tại, chúng tôi chặn truy cập internet của người dùng khi anh ta đã sử dụng tất cả các điểm của mình (bằng cách đặt anh ta vào chính sách RE DỰ ÁN trong iptables trên bộ định tuyến cổng Debian của chúng tôi).
Chúng tôi chỉ muốn giới hạn băng thông của người dùng. Cách tốt nhất để làm việc này là gì?
Câu trả lời đơn giản là đặt giới hạn tốc độ trên cổng chuyển đổi của người dùng (chủ yếu là Cisco Catalyst 3550). Tuy nhiên, điều này là không mong muốn, vì lưu lượng truy cập trong mạng riêng của chúng tôi và mạng lưới trường đại học sẽ không giới hạn. Có cách nào để giới hạn băng thông chỉ cho các gói có phạm vi IP đích hoặc nguồn nhất định (vì vậy cả đi ra và vào) trong Cisco IOS không? Tôi không thể tìm thấy bất cứ điều gì.
Một cách khác là kiểm soát lưu lượng trên bộ định tuyến cổng của chúng tôi. Một số giải pháp đến với tâm trí của tôi:
tc hoặc tcng - có vẻ như cả hai đều có cú pháp khá phức tạp và không cung cấp các tính năng tốt để thực hiện kiểm soát lưu lượng trên mỗi IP. Một tín hiệu dành riêng cho rất nhiều người có thể sẽ làm chậm bộ định tuyến khá nhiều. Hơn nữa, tài liệu về cả hai là khá lỗi thời.
shorewall - dường như có một cú pháp khá gọn gàng cho các cấu hình, tuy nhiên, tôi không chắc liệu nó có thể xử lý lượng lưu lượng và người dùng này hay không và liệu nó có phù hợp với giới hạn lưu lượng trên mỗi IP không
pfSense - trông giống như một hệ điều hành dành cho các mục đích như của chúng tôi. Tuy nhiên, nó sẽ yêu cầu chúng tôi cài đặt lại bộ định tuyến cổng. Chúng tôi không có các hệ thống BSD khác và pfSense sẽ cần phải có khả năng kế toán lưu lượng truy cập rất tốt (hiện tại chúng tôi đang sử dụng fprobe-ulog và ulog-acctd ở đó).
Kinh nghiệm của bạn là gì? Giải pháp nào phù hợp với nhu cầu của chúng ta và có thể dễ dàng duy trì nhất? Bạn có ý tưởng nào khác không?
Nếu bạn cần bất kỳ thông tin bổ sung nào về hệ thống của chúng tôi, xin đừng ngần ngại hỏi.
Cảm ơn trước.
EDIT : Tôi đã thực hiện hệ thống với iptables
và tc
.
Mỗi người dùng có / 28 mạng con, IP VPN (cả từ 10.0.0.0/8) và IP bên ngoài, tất cả đều được điều khiển thông qua một chuỗi iptables. Chuỗi này chỉ có một quy tắc, đơn giản RETURN
.
Cứ sau năm phút, một tập lệnh Python đọc các bộ đếm byte của các quy tắc này. Nó đặt lại bộ đếm và cập nhật tài khoản điểm lưu lượng truy cập của người dùng trong cơ sở dữ liệu PostgreQuery của chúng tôi.
Nếu số dư điểm của người dùng giảm xuống dưới một ngưỡng nhất định, hai lớp tc được tạo cho người dùng này (một cho giao diện đến, một cho giao diện gửi đi trên bộ định tuyến cổng của chúng tôi), IP được nhập vào các bộ lọc tc thuộc các lớp này. Các lớp được giới hạn tốc độ bởi một HTB.
So với hệ thống trước đó fprobe-ulog
và ulog-acctd
điều này nhanh hơn nhiều vì việc đếm byte được thực hiện bởi iptables.
Tốc độ mạng đã được cải thiện đáng kể cho người dùng của chúng tôi.