Jakie jest najlepsze rozwiązanie do kontroli ruchu w dużym systemie (ok. 2000 użytkowników)?

11

następująca sytuacja: Jesteśmy grupą studentów zarządzających połączeniem internetowym dla lokalnych domów studenckich, z łączną liczbą około 2000 użytkowników końcowych.

Mamy system punktów ruchu, każdy MB pobiera lub przesyła punkty kosztów, nowe punkty są dodawane z godziny na godzinę. W tej chwili blokujemy dostęp użytkownika do Internetu, gdy on wyda wszystkie swoje punkty (umieszczając go w polityce ODRZUCENIA w iptables na naszym routerze bramy Debiana).

Chcielibyśmy jedynie ograniczyć przepustowość użytkownika. Jak najlepiej to zrobić?

Prostą odpowiedzią byłoby ustawienie ograniczenia prędkości na porcie przełącznika użytkownika (głównie Cisco Catalyst 3550s). Jest to jednak niepożądane, ponieważ ruch wewnątrz naszej sieci i do sieci uniwersytetów powinien pozostać nieograniczony. Czy istnieje sposób ograniczenia przepustowości tylko dla pakietów z określonym miejscem docelowym lub źródłowym zakresem adresów IP (zarówno wejścia, jak i wejścia) w systemie Cisco IOS? Nic nie mogłem znaleźć.

Innym sposobem byłoby kontrolowanie ruchu na naszym routerze bramkowym. Przychodzi mi na myśl kilka rozwiązań:

  • tc lub tcng - wygląda na to, że oba mają dość tajemniczą składnię i żadna z nich nie oferuje dobrych funkcji do kontroli ruchu według IP. Dedykowana funkcja QDisc dla tak wielu osób prawdopodobnie znacznie spowolniłaby router. Co więcej, dokumentacja obu jest dość nieaktualna.

  • shorewall - wydaje się, że ma dość zgrabną składnię dla konfiguracji, jednak nie jestem pewien, czy poradzi sobie z taką ilością ruchu i użytkowników i czy nadaje się do ograniczania ruchu na IP

  • pfSense - wygląda jak system operacyjny przeznaczony do takich celów jak nasz. Wymagałoby to jednak od nas całkowitej ponownej instalacji routera bramy. Nie mamy innych systemów BSD, a pfSense musiałby mieć bardzo dobre możliwości rozliczania ruchu (obecnie używamy tam również programów fprobe-ulog i ulog-acctd).

Jakie masz wrażenia? Które rozwiązanie odpowiada naszym potrzebom i które można najłatwiej utrzymać? Czy masz inne pomysły?

Jeśli potrzebujesz dodatkowych informacji na temat naszego systemu, nie wahaj się zapytać.

Z góry dziękuję.


EDYCJA : Wdrożyłem system za pomocą iptablesi tc.

Każdy użytkownik ma podsieć / 28, adres IP VPN (oba od 10.0.0.0/8) i zewnętrzny adres IP, wszyscy są sterowani przez jeden łańcuch iptables. Ten łańcuch ma tylko jedną zasadę, prostą RETURN.

Co pięć minut skrypt w języku Python odczytuje liczniki bajtów tych reguł. Resetuje liczniki i aktualizuje konto punktu ruchu użytkownika w naszej bazie danych PostgreSQL.

Jeśli saldo punktów użytkownika spadnie poniżej pewnego progu, dla tego użytkownika tworzone są dwie klasy tc (jedna dla przychodzącej, jedna dla interfejsu wychodzącego na naszym routerze bramkowym), adresy IP są wprowadzane do filtrów tc należących do tych klas. Klasy są ograniczone przez HTB.

W porównaniu do poprzedniego systemu z fprobe-ulogi ulog-acctdjest to znacznie szybsze, ponieważ liczenie bajtów jest wykonywane przez iptables.

Szybkość sieci znacznie się poprawiła dla naszych użytkowników.

Christoph Wurm
źródło

Odpowiedzi:

2

Nie jestem pewien, czy jesteś zainteresowany rekonfiguracją całej konfiguracji (tj. Zastąpienia Debiana), ani jak wykonalne byłoby umieszczenie czegoś takiego za bramą, ale FreeBSD ma funkcję ipfw znaną jako dummynet . Ponieważ brzmi to tak, jakbyś nie miał ochoty na uzyskanie dedykowanego sprzętowego narzędzia do kształtowania ruchu, może to być dla Ciebie opcja. Obecnie używamy go do dławienia ruchu SMTP przychodzącego i wychodzącego przez jedną z naszych bram proxy, aby powstrzymać starzenie się systemu zaplecza NFS przed przytłoczeniem, a następnie przestać odpowiadać.

Przy odrobinie skryptów i inteligentnej konfiguracji zestawu reguł, możliwe byłoby kontrolowanie tysięcy indywidualnych adresów IP.

brent
źródło
0

Będę musiał zapytać, czego używamy, ale nasi pracownicy ResTek mają na granicy urządzenia, które spełnia funkcje jakości usług. Ma domyślny priorytet dla niesklasyfikowanych strumieni i nadaje priorytet ruchowi w oparciu o reguły. Jest to funkcja priorytetowa, która naprawdę ją sprzedaje, ponieważ obsługują również klaster buforowania oparty na kałamarnicy, który jest wymieniony jako najwyższy priorytet w urządzeniu granicznym. Ludzie w swojej sieci mają wtedy wybór do surfowania po Internecie ze standardowym (i nieco nieszczęśliwym) priorytetem lub skorzystania z proxy i uzyskania bardzo szybkiej odpowiedzi. Przyjmują także żądania serwerów gier, ponieważ są wrażliwe na opóźnienia, ale mają niską przepustowość.

Sporo pracy zajmuje się przetwarzaniem żądań serwerów gier, ale te powoli odchodzą na dalszy plan, ponieważ coraz więcej gier odchodzi od prywatnych serwerów. Ogólnie rzecz biorąc, słyszę, że działa całkiem dobrze dla nich. Mogą powstrzymywać bittorrenta przed tłumieniem całego ruchu, a jednocześnie szybko skracać czas ładowania YouTube.

sysadmin1138
źródło
0

Dzięki temu wielu użytkowników zacznie się rozkładać.

Zastanów się nad pakietem i podobnymi urządzeniami. Obecnie są one prawie droższe niż kupowanie większej przepustowości (w USA i Europie, nasi biedni ludzie w Australii wciąż są bardzo wysokimi stawkami).

LapTop006
źródło
Niestety nie możemy sobie pozwolić na zainwestowanie w to dużych pieniędzy, ani na dedykowany moduł do kształtowania pakietów, ani na większą przepustowość. Nasz system działa w tej chwili, pytanie brzmi, w jaki sposób zamiast blokować użytkowników, którzy przekroczyli przydzielony ruch, możemy jedynie zmniejszyć dostępną przepustowość.
Christoph Wurm,
0

dummynet jest moim zdaniem bardzo dobrą sugestią. Ale jestem pewien, że iptables są w stanie kształtować ruch , więc możesz to zrobić na swoim debianie.

monomyth
źródło
0

tc powinno działać dobrze. Uważam, że chcesz zmienić obecne reguły iptables, aby oznaczyć ruch zamiast ODRZUCAĆ, wtedy możesz użyć niewielkiej liczby reguł tc, aby zastosować kształtowanie ruchu do tych oznaczonych przepływów.

zobacz także ipset do zarządzania listą użytkowników z ograniczoną przepustowością http://ipset.netfilter.org/

Justin
źródło
0

Trafficpanel wydaje się rozwiązaniem. Wśród innych funkcji:

  • Ograniczenie maksymalnej prędkości HTTP na połączenie
  • Ograniczenie całkowitego ruchu zasobów sieciowych na hosta sieci lokalnej
  • Rejestruj ruch internetowy według hosta sieci lokalnej
  • Ograniczenie maksymalnej prędkości ruchu na hosta sieci lokalnej
  • Ograniczenie całkowitej ilości ruchu internetowego na hosta sieci lokalnej

Właściwie nigdy nie próbowałem tego, ale wygląda dobrze.

AlekS
źródło