situasi berikut: Kami adalah sekelompok siswa yang mengelola koneksi internet untuk aula warga setempat, dengan total sekitar 2000 pengguna akhir.
Kami memiliki sistem titik lalu lintas, setiap MB menurunkan atau mengunggah poin biaya, poin baru ditambahkan per jam. Saat ini, kami memblokir akses internet pengguna ketika ia telah menghabiskan semua poinnya (dengan menempatkannya dalam kebijakan TOLAK di iptables pada router gateway Debian kami).
Kami hanya ingin membatasi bandwidth pengguna. Apa cara terbaik untuk melakukan ini?
Jawaban sederhananya adalah dengan menetapkan batas-tingkat pada port switch pengguna (kebanyakan Cisco Catalyst 3550s). Namun, ini tidak diinginkan, karena lalu lintas di dalam jaringan kami sendiri dan ke jaringan universitas harus tetap tidak terbatas. Apakah ada cara untuk membatasi bandwidth hanya untuk paket dengan tujuan tertentu atau sumber rentang IP (jadi jalan keluar dan masuk) di Cisco IOS? Saya tidak dapat menemukan apa pun.
Cara lain adalah dengan mengontrol lalu lintas di router gateway kami. Beberapa solusi muncul di benak saya:
tc atau tcng - sepertinya keduanya memiliki sintaks yang agak misterius dan tidak menawarkan fitur yang baik untuk melakukan kontrol lalu lintas per-IP. QDisc khusus untuk banyak orang mungkin akan memperlambat router cukup banyak. Lebih jauh, dokumentasi tentang keduanya sudah ketinggalan zaman.
shorewall - tampaknya memiliki sintaks yang agak rapi untuk konfigurasi, namun, saya tidak yakin apakah ini dapat menangani jumlah lalu lintas dan pengguna ini dan apakah itu cocok untuk pembatasan lalu lintas per-IP
pfSense - terlihat seperti OS yang ditujukan untuk keperluan seperti milik kita. Namun, itu akan mengharuskan kita untuk menginstal ulang router gateway kita. Kami tidak memiliki sistem BSD lain dan pfSense perlu memiliki kemampuan akuntansi lalu lintas yang sangat baik (kami menggunakan fprobe-ulog dan ulog-acctd di sana saat ini) juga.
Apa pengalaman anda Solusi mana yang sesuai dengan kebutuhan kita dan paling mudah dipelihara? Apakah Anda punya ide lain?
Jika Anda memerlukan informasi tambahan tentang sistem kami, jangan ragu untuk bertanya.
Terima kasih sebelumnya.
EDIT : Saya telah menerapkan sistem dengan iptables
dan tc
.
Setiap pengguna memiliki / 28-subnet, IP VPN (keduanya dari 10.0.0.0/8) dan IP eksternal, semua diarahkan melalui satu rantai iptables. Rantai ini hanya memiliki satu aturan, sederhana RETURN
.
Setiap lima menit, skrip Python membacakan byte byte dari aturan ini. Ini me-reset penghitung dan memperbarui akun titik lalu lintas pengguna di database PostgreSQL kami.
Jika saldo poin pengguna berkurang di bawah ambang tertentu, dua kelas tc dibuat untuk pengguna ini (satu untuk masuk, satu untuk antarmuka keluar pada router gateway kami), IP dimasukkan ke dalam filter tc milik kelas-kelas ini. Kelas dibatasi oleh kecepatan HTB.
Dibandingkan dengan sistem sebelumnya dengan fprobe-ulog
dan ulog-acctd
ini jauh lebih cepat karena penghitungan byte dilakukan oleh iptables.
Kecepatan jaringan telah meningkat pesat bagi pengguna kami.