Apa solusi terbaik untuk pengendalian lalu lintas dalam sistem besar (sekitar 2000 pengguna)?

11

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 iptablesdan 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-ulogdan ulog-acctdini jauh lebih cepat karena penghitungan byte dilakukan oleh iptables.

Kecepatan jaringan telah meningkat pesat bagi pengguna kami.

Christoph Wurm
sumber

Jawaban:

2

Saya tidak yakin seberapa tertarik Anda mengkonfigurasi ulang seluruh pengaturan Anda (yaitu, ganti Debian), atau seberapa layak menempatkan sesuatu seperti ini di belakang gateway Anda, tetapi FreeBSD memiliki fitur di ipfw yang dikenal sebagai dummynet . Karena sepertinya Anda tidak ingin mendapatkan pembentuk lalu lintas perangkat keras khusus, ini mungkin menjadi pilihan bagi Anda. Kami saat ini menggunakannya untuk mencekik lalu lintas SMTP masuk dan keluar melalui salah satu gateway proxy kami untuk menjaga sistem backend NFS yang lama agar tidak kewalahan dan kemudian menjadi tidak responsif.

Dengan beberapa pengaturan skrip dan konfigurasi cerdas dari pengaturan Anda, akan layak untuk dapat mengontrol lalu lintas ribuan alamat IP individu.

brent
sumber
0

Saya harus bertanya apa yang kami gunakan, tetapi orang-orang ResTek kami memiliki alat di perbatasan Internet yang memiliki kualitas fungsi layanan. Ini memiliki prioritas default untuk aliran yang tidak diklasifikasi, dan memprioritaskan lalu lintas lainnya berdasarkan aturan. Ini adalah fitur prioritas yang benar-benar menjualnya, karena mereka juga mengoperasikan klaster cache berbasis Squid yang terdaftar sebagai prioritas tertinggi di alat perbatasan. Orang-orang di jaringan mereka kemudian memiliki pilihan untuk menjelajahi web dengan prioritas standar (dan agak sial), atau menggunakan proxy dan mendapatkan respons yang sangat bersemangat. Mereka juga menerima permintaan prioritas server permainan, karena mereka sensitif terhadap latensi tetapi bandwidth rendah, sebagai hal yang biasa.

Ada cukup banyak pekerjaan yang menangani permintaan server gim, tetapi itu perlahan-lahan berjalan seiring dengan semakin banyaknya gim yang menjauh dari server pribadi. Secara keseluruhan saya mendengar itu bekerja dengan cukup baik untuk mereka. Mereka dapat menjaga hal-hal seperti bittorrent agar tidak menutup semua lalu lintas lainnya, dan tetap membuat waktu memuat YouTube orang lebih cepat.

sysadmin1138
sumber
0

Dengan banyaknya pengguna, sebagian besar hal-hal berbasis perangkat lunak sederhana akan mulai rusak.

Pertimbangkan untuk melihat packeteer dan perangkat serupa. Hari-hari ini mereka hampir lebih mahal daripada hanya membeli lebih banyak bandwidth (Di AS & Eropa, kami orang miskin di Australia masih tingkat yang sangat tinggi).

LapTop006
sumber
Sayangnya, kami tidak mampu menginvestasikan banyak uang untuk ini, baik untuk paket pembentuk khusus maupun untuk bandwidth lebih banyak. Sistem kami sedang bekerja saat ini, pertanyaannya adalah bagaimana, alih-alih memblokir pengguna yang telah melebihi lalu lintas yang dialokasikan, kami hanya dapat mengurangi bandwidth yang tersedia untuk mereka.
Christoph Wurm
0

dummynet adalah saran yang sangat bagus menurut saya. Tapi saya yakin iptables juga mampu membentuk traffic , jadi Anda bisa melakukannya di kotak debian Anda.

monomyth
sumber
0

tc harus berfungsi dengan baik .. Saya percaya apa yang ingin Anda lakukan adalah mengubah aturan iptables Anda saat ini untuk menandai daripada MENOLAK lalu lintas, maka Anda dapat menggunakan sejumlah kecil aturan tc untuk menerapkan pembentukan lalu lintas pada aliran yang ditandai.

juga, lihat ipset untuk mengelola daftar pengguna yang mengalami pembatasan http://ipset.netfilter.org/

Justin
sumber
0

Trafficpanel tampaknya menjadi solusi. Di antara fitur-fitur lainnya:

  • Membatasi kecepatan HTTP maksimum per koneksi
  • Membatasi jumlah lalu lintas total sumber daya web per host jaringan lokal
  • Log lalu lintas internet per host jaringan lokal
  • Membatasi kecepatan lalu lintas maksimum per host jaringan lokal
  • Membatasi jumlah total lalu lintas internet per host jaringan lokal

Sebenarnya, tidak pernah mencoba hal ini, tetapi terlihat oke.

AlekS
sumber