Narzędzia użytkownika

Narzędzia witryny


tc-new

6.2.11. Tc-new (HTB)

6.2.11.1. Opis

Moduł generujący skrypt zawierający polecenia iptables i tc służące do ograniczania przepływności i limitowania połączeń klientom. Działa podobnie do modułu 'tc', lecz obsługuje funkcjonalność pozwalającą na powiązywanie taryf z komputerami. Skrypt tworzy tzw. kanały dla komputerów klienta przypisanych do tej samej taryfy. Przykładowo: dla klienta z dwoma komputerami przypisanymi do tej samej taryfy zostaną utworzone dwie klasy (upload i download) oraz po dwa filtry dla każdego komputera. W przypadku gdy klient ma dwie taryfy i do każdej po jednym komputerze powstaną po dwie klasy dla każdej taryfy i odpowiednia ilość filtrów. Wartość początkowa liczników (%x i %h w regułach) wynosi 100.

6.2.11.2. Konfiguracja

Wartości domyślne niektórych opcją są zgodne z modułem tc.

  • file

Lokalizacja pliku wynikowego. Domyślnie: /etc/rc.d/rc.htb.

  Przykład: file = /tmp/rc.htb
  • command

Polecenie powłoki wykonywane po utworzeniu pliku. Domyślnie: „sh /etc/rc.d/rc.htb start”.

  Przykład: command = "chmod 700 /tmp/rc.htb; /tmp/rc.htb start"
  • begin

Nagłówek skryptu. Domyślnie: jak w module tc

  Przykład: begin = "#!/bin/bash\n$TC=/usr/local/sbin/tc\n"
  • end

Stopka skryptu. Domyślnie: jak w module tc

  Przykład: end = ""
  • class_up

Definicja klasy dla uploadu, w której możemy użyć następujących zmiennych: %cid - ID klienta, %cname - nazwa klienta, %h - numer uchwytu klasy %uprate, %upceil. Domyślnie:

    # %cname (ID:%cid)
    $TC class add dev $WAN parent 2:1 classid 2:%h htb rate %upratekbit ceil %upceilkbit $BURST prio 2 quantum 1500
    $TC qdisc add dev $WAN parent 2:%h esfq perturb 10 hash dst
  Przykład: class_up = "$TC class add dev $WAN parent 2:1 classid 2:%h htb rate %upratekbit ceil %upceilkbit $BURST prio 2 quantum 1500"
  • class_down

Definicja klasy dla downloadu, w której możemy użyć następujących zmiennych: %cid - ID klienta, %cname - nazwa klienta, %h - numer uchwytu klasy, %downrate, %downceil. Domyślnie:

    $TC class add dev $LAN parent 1:2 classid 1:%h htb rate %downratekbit ceil %downceilkbit $BURST prio 2 quantum 1500
    $TC qdisc add dev $LAN parent 1:%h esfq perturb 10 hash dst						
  Przykład: class_up = "$TC class add dev $LAN parent 1:2 classid 1:%h htb rate %downratekbit ceil %ceilceilkbit $BURST prio 2 quantum 1500"
  • filter_up

Definicja filtrów dla ruchu w kierunku od hosta. Dozwolone zmienne: %n - nazwa hosta, %if - nazwa interfejsu sieci, %i - adres, %m - mac, %ms - lista adresów MAC hosta (oddzielonych przecinkiem), %o1, %o2, %o3, %o4 - oktety adresu dziesiętnie, %h1, %h2, %h3, %h4 - oktety adresu w zapisie szesnastkowym, %h - uchwyt klasy, %x - uchwyt filtra (unikalny numer reguły). Domyślnie:

    # %n
    $IPT -t mangle -A LIMITS -s %i -j MARK --set-mark %x
    $TC filter add dev $WAN parent 2:0 protocol ip prio 5 handle %x fw flowid 2:%h
  Przykład: class_up = "%n\n$IPT -A src%o3 -s %i -j CLASSIFY --set-class 2:%h\n"
  • filter_down

Definicja filtrów dla ruchu w kierunku do hosta. Dozwolone zmienne: %n - nazwa hosta, %if - nazwa interfejsu sieci, %i - adres, %m - mac, %ms - lista adresów MAC hosta (oddzielonych przecinkiem), %o1, %o2, %o3, %o4 - oktety adresu dziesiętnie, %h1, %h2, %h3, %h4 - oktety adresu w zapisie szesnastkowym, %h - uchwyt klasy, %x - uchwyt filtra (unikalny numer reguły). Domyślnie:

    $IPT -t mangle -A LIMITS -d %i -j MARK --set-mark %x
    $TC filter add dev $LAN parent 1:0 protocol ip prio 5 handle %x fw flowid 1:%h
  Przykład: class_down = "%n\n$IPT -A dst%o3 -d %i -j CLASSIFY --set-class 1:%h\n"
  • climit

Definicja reguły dla limitu połączeń hosta. Dozwolone zmienne: %n - nazwa hosta, %if - nazwa interfejsu sieci, %i - adres, %m - mac, %ms - lista adresów MAC hosta (oddzielonych przecinkiem), %o1, %o2, %o3, %o4 - oktety adresu dziesiętnie, %h1, %h2, %h3, %h4 - oktety adresu w zapisie szesnastkowym, %climit - limit połączeń. Domyślnie:

  $IPT -t filter -I FORWARD -p tcp -s %i -m connlimit --connlimit-above %climit -j REJECT
  					
  Przykład: climit = ""
  • plimit

Definicja reguły dla limitu pakietów dla hosta. Dozwolone zmienne: %n - nazwa hosta, %if - nazwa interfejsu sieci, %i - adres, %m - mac, %ms - lista adresów MAC hosta (oddzielonych przecinkiem), %o1, %o2, %o3, %o4 - oktety adresu dziesiętnie, %h1, %h2, %h3, %h4 - oktety adresu w zapisie szesnastkowym, %plimit - limit pakietów. Domyślnie:

    $IPT -t filter -I FORWARD -d %i -m limit --limit %plimit/s -j ACCEPT
    $IPT -t filter -I FORWARD -s %i -m limit --limit %plimit/s -j ACCEPT										
  Przykład: plimit = ""
  • networks

Lista nazw sieci, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie sieci).

  Przykład: networks = "lan1 lan2"
  • customergroups

Lista nazw grup klientów, które mają być brane pod uwagę. Wielkość liter nie ma znaczenia. Domyślnie: pusta (wszystkie grupy).

  Przykład: customergroups = "grupa1 grupa2"
  • night_hours

Zakres godzin nocnych w formacie 24-godzinnym. Np. „22-5” oznacza, że podczas uruchomienia modułu w godzinach od 22:00 do 4:59 brane będą wartości taryf dla godzin nocnych. Obowiązują następujące ograniczenia dla formatu zakresu: nie może zawierać spacji, okres nie może zaczynać się przed godziną 18. Domyślnie: pusta.

  Przykład: night_hours = "24-6"
  • night_no_debtors

Włączenie tej opcji spowoduje sprawdzenie czy klient posiada nierozliczone faktury przeterminowane. Jeśli tak, taryfa nocna nie zostanie zastosowana. Domyślnie: false.

  Przykład: night_no_debtors = tak
  • night_deadline

Dodatkowy czas (ilość dni) po terminie płatności, zanim faktura zostanie potraktowana jako przeterminowana. Opcja działa w połączeniu z 'night_no_debtors'. Domyślnie: 0.

  Przykład: night_deadline = 7
  • multi_mac

Jeśli ustawiona na tak (yes, true) utworzony zostanie osobny rekord dla każdego adresu MAC. Tzn. jeśli komputer ma przypisanych kilka adresów MAC, będzie utworzone tyle wpisów ile tych adresów. Domyślnie: nie

  Przykład: multi_mac = tak
tc-new.txt · ostatnio zmienione: 2013/01/15 00:00 (edycja zewnętrzna)