6.2. Moduły

Sam demon potrafi tylko uruchamiać moduły i to one odwalają całą robotę. Większość modułów jest przeznaczona do określonego zastosowania, jedynie 'hostfile' można używać do różnych konfigów (usług), np. różnych typów firewalli. Parametry konfiguracyjne modułów umieszcza się w sekcjach instancji je wywołujących.

6.2.1. Lista dostępnych modułów

Tabela 6-1. Lista modułów demona lmsd

NazwaOpis
systemWywoływanie poleceń powłoki
parserParser uniwersalnych skryptów T-Script
dhcpKonfiguracja serwera dhcpd
cutoffOdłączanie klientów z zaległościami w opłatach
dnsKonfiguracja serwera dns
ethersTworzenie pliku /etc/ethers
hostfileModuł uniwersalny (np. tworzenie reguł iptables)
notifyPowiadamianie klientów o zaległościach w opłatach pocztą elektroniczną
ggnotifyPowiadamianie klientów o zaległościach w opłatach przez gadu-gadu
paymentsNaliczanie opłat abonamentowych
oidentKonfiguracja oident
tcTworzenie reguł TC
tc-newTworzenie reguł TC (powiązania komputerów z taryfami)
trafficStatystyki wykorzystania łącza
pingerBadanie aktywności klientów
ewx-ptKonfiguracja EtherWerX PPPoE Terminatora
ewx-stmKonfiguracja EtherWerX Standalone Traffic Managera
ewx-stm-channelsKonfiguracja EtherWerX Standalone Traffic Managera (ze rozszerzoną obsługą kanałów)

6.2.2. System

6.2.2.1. Opis

Jedyne co robi ten moduł to wykonanie zadanego polecenia (listy poleceń) powłoki i/lub komendy SQL. Może się przydać gdy chcesz podczas przeładowania konfiguracji wykonać jakąś komendę lub uruchomić zewnętrzny skrypt, na przykład jeden z tych, które możesz znaleźć w katalogu /bin. W pierwszej kolejności jest wykonywane polecenie SQL.

6.2.2.2. Konfiguracja

W związku z powyższym możesz zdefiniować jedynie treść polecenia SQL lub shella. Powłoka powinna sobie także poradzić z listą poleceń oddzielonych średnikami:

  • sql

    Polecenie SQL. Domyślnie: puste.

    Przykład: sql = 'DELETE FROM stats WHERE dt < %NOW% - 365*86400'

  • command

    Polecenie powłoki. Domyślnie: puste.

    Przykład: command = 'echo -n "tu moduł "; echo "system"'

6.2.3. Payments

6.2.3.1. Opis

Moduł nalicza opłaty abonamentowe klientów oraz opłaty stałe. Należy go uruchamiać codziennie. Opłaty naliczane na podstawie przypisanych klientowi taryf zapisywane są do bazy wraz z komentarzem określonym zmienną 'comment'. Po naliczeniu opłat tworzone są faktury. Komentarz do opłaty stałej to zlepek składający się z jej nazwy oraz wierzyciela. Na końcu usuwane są z bazy nieaktualne obciążenia klientów.

6.2.3.2. Konfiguracja

Dla tego modułu są dostępne następujące zmienne konfiguracyjne:

  • comment

    Komentarz do operacji. '%period' zostanie zamienione na daty od-do należnego abonamentu, np. '2003/10/10 - 2003/11/09', '%tariff' na nazwę odpowiedniej taryfy/zobowiązania, %month na pełną nazwę bieżącego miesiąca, %year na bieżący rok, a %next_mon na następny miesiąc w formacie RRRR/MM. Domyślnie: 'Subscription: '%tariff' for period: %period'.

    Przykład: comment = 'Abonament miesięczny za okres %period'

  • settlement_comment

    Komentarz do operacji wyrównania. '%period' zostanie zamienione na daty od-do okresu wyrównania, np. '2003/10/20 - 2003/11/09', a '%tariff' na nazwę odpowiedniej taryfy. Domyślnie odpowiada opcji comment.

    Przykład: settlement_comment = 'Wyrównanie za okres %period'

  • up_payments

    "Naliczanie z góry", czyli czy okres w komentarzu ma być liczony do przodu, czy do tyłu w stosunku do daty naliczenia opłaty. Domyślnie: yes.

    Przykład: up_payments = no

  • expiry_days

    Określa liczbę dni od daty wygaśnięcia przypisanych klientowi zobowiązań, po której dane tego zobowiązania zostaną usunięte z bazy. Przy ustawieniu na '0' dane zostaną usunięte natychmiast po dacie, do której obowiązywało zobowiązanie. Domyślnie: 30.

    Przykład: expiry_days = 365

  • deadline

    Termin płatności podany w dniach. Domyślnie: 14.

    Przykład: deadline = 21

  • paytype

    Rodzaj płatności (1-gotówka, 2-przelew, 3-przelew/gotówka, 4-karta, 5-kompensata, 6-barter, 7-umowa). Domyślnie: 2 (przelew).

    Przykład: paytype = 1

  • numberplan

    ID planu numeracyjnego faktur. Domyślnie: 0 (plan domyślny).

    Przykład: numberplan = 0

  • check_invoices

    Włącza automatyczne oznaczanie faktur jako rozliczonych dla klientów z bilansem większym równym zero. Domyślnie: wyłączona.

    Przykład: check_invoices = 1

  • 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"

  • excluded_networks

    Lista nazw sieci, które mają pominięte. Wielkość liter nie ma znaczenia. Domyślnie: pusta (żadna).

    Przykład: excluded_networks = "lan3 lan4"

  • 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"

  • excluded_customergroups

    Lista nazw grup klientów, które mają być pominięte. Wielkość liter nie ma znaczenia. Domyślnie: pusta (żadna).

    Przykład: excluded_customergroups = "grupa3 grupa4"

6.2.4. Notify

6.2.4.1. Opis

Moduł 'notify' służy do informowania klientów o zaległościach w opłatach za pomocą poczty elektronicznej. Aktualne saldo klienta porównywane jest ze zmienną 'limit', jeśli jest niższe - wiadomość zostaje wysłana. Treść wiadomości pobierana jest z przygotowanego szablonu, w którym można stosować następujące zmienne:

  • %saldo - aktualne saldo klienta (także %B)

  • %b - wartość bezwzględna aktualnego salda klienta

  • %pin - PIN klienta

  • %name - imię klienta

  • %lastname - nazwisko/nazwa klienta

  • %last_10_in_a_table - wyciąg ostatnich 10 operacji na kocie klienta

6.2.4.2. Konfiguracja

Poniżej przedstawiono dostępne opcje konfiguracyjne modułu 'notify':

  • template

    Lokalizacja pliku z szablonem wiadomości. Domyślnie: pusty

    Przykład: template = modules/notify/sample/mailtemplate

  • file

    Lokalizacja pliku tymczasowego. Domyślnie: /tmp/mail

    Przykład: file = /tmp/mail.txt

  • command

    Polecenie powłoki wysyłające e-maila. '%address' zostanie zastąpione adresem e-mail klienta. Domyślnie: 'mail -s "Liabilities Information" %address < /tmp/mail'.

    Przykład: command = 'mail %address -s "musisz zapłacić, bo jak nie..." < /tmp/mail.txt'

  • limit

    Wiadomość o zaległościach zostaje wysłana jeśli saldo klienta spadnie poniżej kwoty określonej zmienną limit. Domyślnie: 0

    Przykład: limit = -20

  • debug_mail

    Określa adres na który zostaną wysłane wszystkie wiadomości, przydatne podczas testów. Domyślnie: puste.

    Przykład: debug_mail = localhost@moja.net

6.2.5. Ggnotify

6.2.5.1. Opis

Odpowiednik modułu 'notify' służący do wysyłania wiadomości gadu-gadu. Aktualne saldo klienta porównywane jest ze zmienną 'limit', jeśli jest niższe - wiadomość zostaje wysłana. Treść wiadomości pobierana jest z przygotowanego szablonu, w którym można stosować zmienne takie jak dla modułu 'notify' (może to być też ten sam szablon).

Moduł wymaga zainstalowanej biblioteki libgadu oraz źródeł programu ekg. Odpowiednie ścieżki do nich należy ustawić w modules/ggnotify/Makefile przed kompilacją modułu.

6.2.5.2. Konfiguracja

Podobnie jak w 'notify' masz do dyspozycji następujące zmienne:

  • template

    Lokalizacja pliku z szablonem wiadomości. Domyślnie: pusty.

    Przykład: template = modules/ggnotify/sample/mailtemplate

  • uin

    Identyfikator gadu-gadu użytkownika wysyłającego wiadomości. Domyślnie: pusty.

    Przykład: uin = 1234567

  • password

    Hasło dla konta określonego zmienną 'uin'. Domyślnie: puste.

    Przykład: password = "moje_trudne__hasło"

  • limit

    Wiadomość o zaległościach zostaje wysłana jeśli saldo klienta spadnie poniżej kwoty określonej zmienną limit. Domyślnie: 0

    Przykład: limit = -20

  • debug_uin

    Jeśli ustawione, na to konto zostaną wysłane wszystkie wiadomości. Domyślnie: puste.

    Przykład: debug_uin = 7654321

6.2.6. Cutoff

6.2.6.1. Opis

Cutoff zmienia status komputerów na 'odłączony' i/lub włącza ostrzeżenia klientom, którzy mają na koncie zaległości większe niż określony limit. Ponadto odłącza komputery klientów, którym wygasły wszystkie zobowiązania lub są one zawieszone. Ten moduł nie zajmuje się fizycznym blokowaniem dostępu do sieci.

6.2.6.2. Konfiguracja

Dla modułu 'cutoff' mamy następujące opcje:

  • limit

    Odłączenie następuje jeśli saldo klienta spadnie poniżej wartości określonej jako kwota lub wartość procentowa sumy miesięcznych zobowiązań klienta (ze znakiem '%'). Domyślnie: 0.

    Przykład: limit = -20

  • command

    Określa komendę systemową, która zostanie wywołana jeżeli co najmniej jeden klient zostanie odłączony lub zostanie włączone ostrzeżenie. Domyślnie: nieustawiona.

    Przykład: command = 'lmsd -qi firewall'

  • warning

    Włącza ostrzeżenie dla odłączanego klienta i przypisuje mu określoną w tej opcji treść. Jeżeli pusta, ostrzeżenie nie będzie włączane. Data w ostrzeżeniu ukryta jest pod zmienną '%time'. Możesz także użyć zmiennych: %B dla rzeczywistego salda klienta oraz %b dla salda bez znaku. Saldo liczone jest w chwili wykonania modułu cutoff, a nie wyświetlenia komunikatu w przeglądarce klienta. Domyślnie: 'Blocked automatically due to payment deadline override at %time".

    Przykład: warning = ""

  • expired_warning

    Włącza ostrzeżenie dla odłączanego klienta i przypisuje mu określoną w tej opcji treść. Jeżeli pusta, ostrzeżenie nie będzie włączane. Dotyczy klientów, którym wygasły zobowiązania. Data w ostrzeżeniu ukryta jest pod zmienną '%time'. Domyślnie: 'Blocked automatically due to tariff(s) expiration at %time".

    Przykład: expired_warning = ""

  • warnings_only

    Ta opcja pozwala zdecydować, czy chcemy użyć naszego modułu wyłącznie do włączania ostrzeżeń. Działa tylko w stosunku do klientów, którzy posiadają aktywne zobowiązania. Klienci, którym wygasły zobowiązania, zostaną odłączeni mimo włączenia tej opcji. Domyślnie: wyłączona.

    Przykład: warnings_only = true

  • setnodegroup_only

    Ta opcja pozwala zdecydować, czy chemy przypisać do wybranej grupy komputery klienta, zamiast zmieniać jego status lub włączać ostrzeżenie. Do grupa o podanej nazwie zostaną przypisane wszystkie komputery klienta, który przekroczył limit zadłużenia, albo posiada nierozliczone faktury (jeśli włączono check_invoices). Domyślnie: pusta.

    Przykład: setnodegroup_only = ograniczony_dostep

  • use_nodeassignments

    Jeśli stosujesz powiązywanie komputerów z zobowiązaniami powinieneś włączyć tą opcję. W przeciwnym wypadku będą sprawdzane powiązania taryf z klientami. Domyślnie: wyłączona.

    Przykład: use_nodeassignments = true

  • use_customerassignments

    Jeśli chciałbyś pominąć sprawdzanie zobowiązań klientów powinieneś włączyć tą opcję. Domyślnie: włączona.

    Przykład: use_customerassignments = false

  • disable_suspended

    Włączenie tej opcji spowoduje odłaczenie także klientów, których wszystkie obowiązujące zobowiązania są zawieszone. Domyślnie: wyłączona.

    Przykład: disable_suspended = true

  • check_invoices

    Opcja włącza dodatkowe sprawdzenie czy klient posiada nierozliczone faktury z dniem płatności starszym o określoną w opcji 'deadline' ilość dni. Domyślnie: wyłączona.

    Przykład: check_invoices = true

  • deadline

    Określa okres w dniach (licząc od terminu płatności faktury), po którym nierozliczona faktura jest brana pod uwagę przy zastosowaniu opcji 'check_invoices'. Domyślnie, klient zostanie zablokowany od razu po terminie płatności. Domyślnie: 0.

    Przykład: deadline = 30

  • 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"

  • excluded_customergroups

    Lista nazw grup klientów, które mają być pominięte. Wielkość liter nie ma znaczenia. Domyślnie: pusta (żadna).

    Przykład: excluded_customergroups = "grupa3 grupa4"

  • 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"

  • excluded_networks

    Lista nazw sieci, które mają pominięte. Wielkość liter nie ma znaczenia. Domyślnie: pusta (żadna).

    Przykład: excluded_networks = "lan3 lan4"

6.2.7. Dhcp

6.2.7.1. Opis

Moduł zarządzający serwerem DHCP, tworzy plik konfiguracyjny oraz restartuje usługę. Zmienna 'command' umożliwia również wykonywanie innych czynności (programów).

6.2.7.2. Konfiguracja

Większość parametrów konfiguracyjnych odpowiada fragmentom pliku konfiguracyjnego dhcpd, które w typowych zastosowaniach nie wymagają zmiany:

  • file

    Określa lokalizację pliku konfiguracyjnego serwera dhcp. Domyślnie: /etc/dhcpd.conf.

    Przykład: file = /etc/dhcpd.conf

  • command

    Polecenie wykonywane po utworzeniu pliku konfiguracyjnego. Domyślnie: 'killall dhcpd; /usr/sbin/dhcpd'.

    Przykład: command = 'service dhcp restart'

  • begin

    Nagłówek pliku. Domyślnie: pusty.

    Przykład: begin = "authoritative;"

  • end

    Stopka pliku. Domyślnie: pusty.

    Przykład: end = ""

  • subnet_start

    Nagłówek podsieci. '%a' - nazwa, '%m' - maska, %b - broadcast. Domyślnie: "subnet %a netmask %m {\ndefault-lease-time 86400;\nmax-lease-time 86400;".

    Przykład: subnet_start = "subnet %a netmask %m {default-lease-time 3600;"

  • subnet_end

    Stopka podsieci. Domyślnie: "}".

    Przykład: subnet_end = '\t}'

  • subnet_gateway

    Brama podsieci. '%i' zostanie zamienione na adres ip. Domyślnie: "option routers %i;".

    Przykład: subnet_gateway = "option routers %i"

  • subnet_dns

    DNS'y podsieci. '%i - adresy dns'ów. Domyślnie: "option domain-name-servers %i;".

    Przykład: subnet_dns = "option domain-name-servers 192.168.0.1"

  • subnet_domain

    Nazwa domenowa podsieci. '%n' - nazwa. Domyślnie: 'option domain-name "%n";'.

    Przykład: subnet_domain = 'option domain-name "test.%n";'

  • subnet_wins

    Serwery wins. '%i' - adres ip serwera. Domyślnie: "option netbios-name-servers %i;".

    Przykład: subnet_wins = ""

  • subnet_range

    Zakres adresów podsieci. '%s' - adres początkowy, '%e' - koniec zakresu. Domyślnie: "range %s %e;".

    Przykład: subnet_range = "range %s %e;"

  • host

    Parametry hostów, gdzie '%n' - nazwa hosta, '%m' - MAC, '%i' - adres ip. Domyślnie: "\thost %n {\n\t\thardware ethernet %m; fixed-address %i; \n\t}".

    Przykład: host = "host %n {hardware ethernet %m; fixed-address %i;}"

  • 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"

6.2.8. Hostfile

6.2.8.1. Opis

Moduł 'hostfile' jest dość uniwersalnym narzędziem. Ponieważ wykonuje pętlę po wszystkich komputerach (oraz adresach urządzeń sieciowych) w bazie rozróżniając ich status podłączenia i ostrzeżenia, adresy prywatne i publiczne, a ponadto sieć do której są podłączone oraz grupy do których należą ich właściciele. Dzięki temu możliwe jest tworzenie np. reguł dowolnego firewalla, czy też pliku /etc/hosts. Dane zapisuje do pliku i następnie wykonuje określone polecenie powłoki.

6.2.8.2. Konfiguracja

W opcjach zawierających reguły hosta można stosować specjalne zmienne, które podczas zapisu do pliku zostaną zastąpione odpowiednimi dla danego komputera danymi:

%i - adres IP,
%ipub - publiczny adres IP,
%id - ID komputera,
%m - adres MAC,
%ms - lista adresów MAC hosta (oddzielonych przecinkiem),
%n - nazwa komputera,
%p - hasło,
%port - nr portu w urządzeniu, do którego jest podłączony komputer,
%info - opis komputera,
%l - lokalizacja komputera,
%devl - lokalizacja urządzenia, do którego podłączony jest komputer,
%domain - domena,
%net - nazwa sieci, do której należy host,
%if - interfejs sieci,
%addr - adres sieci,
%mask - maska sieci,
%prefix - maska sieci w postaci prefixu CIDR,
%gw - adres bramy,
%dns, %dns2 - adresy serwerów DNS,
%dhcps, %dhcpe - początek i koniec zakresu DHCP,
%wins - adres serwera WINS,
%i16 - ostatni oktet adresu IP w formacie szesnastkowym,
%i16pub - ostatni oktet publicznego adresu IP w formacie szesnastkowym.
%domainpub - domena sieci publicznej,
%netpub - nazwa sieci, do której należy adres publiczny,
%ifpub - interfejs sieci publicznej,
%addrpub - adres sieci publicznej,
%maskpub - maska sieci publicznej,
%prefixpub - maska sieci publicznej w postaci prefixu CIDR,
%gwpub - adres bramy w sieci publicznej,
%dnspub, %dns2pub - adresy serwerów DNS w sieci publicznej,
%dhcpspub, %dhcpepub - początek i koniec zakresu DHCP w sieci publicznej,
%winspub - adres serwera WINS w sieci publicznej,
%customer - nazwa klienta,
%cid - ID klienta

Poniżej opcje udostępniane przez ten moduł:

  • file

    Lokalizacja pliku tymczasowego. Domyślnie: /tmp/hostfile

    Przykład: file = /etc/rc.d/rc.firewall

  • command

    Polecenie powłoki wyk. po utworzeniu pliku 'file'. Domyślnie: puste

    Przykład: command = '/bin/sh /etc/rc.d/rc.firewall'

  • begin

    Nagłówek pliku tymczasowego. Domyślnie: "/usr/sbin/iptables -F FORWARD\n"

    Przykład: begin = "IPT=/usr/sbin/iptables \n$IPT -F FORWARD\n"

  • end

    Stopka pliku tymczasowego. Domyślnie: "/usr/sbin/iptables -A FORWARD -J REJECT\n"

    Przykład: end = "$IPT -A FORWARD -J REJECT\n"

  • host_begin

    Nagłówek reguły hosta. Domyślnie: ""

    Przykład: host_begin = "#%n\n"

  • host_end

    Stopka reguły hosta. Domyślnie: ""

    Przykład: host_end = "\n"

  • grantedhost

    Reguła dla hosta podłączonego. Domyślnie: "/usr/sbin/iptables -A FORWARD -s %i -m mac --mac-source %m -j ACCEPT\n"

    Przykład: grantedhost = "$IPT -A FORWARD -s %i -m mac --mac-source %m -j ACCEPT\n"

  • deniedhost

    Reguła dla hosta odłączonego. Domyślnie: "/usr/sbin/iptables -A FORWARD -s %i -m mac --mac-source %m -j REJECT\n"

    Przykład: deniedhost = "$IPT -A FORWARD -s %i -m mac --mac-source %m -j REJECT\n"

  • public_grantedhost

    Reguła dla hosta podłączonego, który posiada adres publiczny. Domyślnie reguła określona opcją 'grantedhost'.

    Przykład: public_grantedhost = "$IPT -A FORWARD -s %i -m mac --mac-source %m -j ACCEPT\n$IPT -t nat -A PREROUTING -p tcp -d %ipub -j DNAT --to-destination %i\n$IPT -t nat -A POSTROUTING -s %i -j SNAT --to-source %ipub\n"

  • public_deniedhost

    Reguła dla hosta odłączonego, który posiada adres publiczny. Domyślnie reguła określona opcją 'deniedhost'.

    Przykład: public_deniedhost = ""

  • warnedhost

    Reguła dla hosta z włączonym ostrzeżeniem. Domyślnie reguła określona opcją 'grantedhost'.

    Przykład: warnedhost = "$IPT -A PREROUTING -s %i --dport 80 -p tcp -j REDIRECT --to-port 82\n"

  • public_warnedhost

    Reguła dla hosta z włączonym ostrzeżeniem, który posiada adres publiczny. Domyślnie reguła określona opcją 'warnedhost'.

    Przykład: public_warnedhost = ""

  • public_replace

    Określa czy reguły zdefiniowane dla adresów publicznych mają nadpisać reguły główne, czy zostać dopisane do nich. Domyślnie: włączona.

    Przykład: public_replace = false

  • warn_replace

    Określa czy reguły zdefiniowane dla komputerów z ostrzeżeniem mają nadpisać reguły główne, czy zostać dopisane do nich. Domyślnie: wyłączona.

    Przykład: warn_replace = true

  • 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"

  • nodegroups

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

    Przykład: nodegroups = "grupa1 grupa2"

  • excluded_networks

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

    Przykład: excluded_networks = "lan1 lan2"

  • excluded_customergroups

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

    Przykład: excluded_customergroups = "grupa1 grupa2"

  • excluded_nodegroups

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

    Przykład: excluded_nodegroups = "grupa1 grupa2"

  • skip_dev_ips

    Jeśli ustawiona na tak (yes, true) pominięte zostaną adresy urządzeń sieciowych. Domyślnie: tak

    Przykład: skip_dev_ips = nie

  • skip_host_ips

    Jeśli ustawiona na tak (yes, true) pominięte zostaną adresy komputerów. Uwaga: włączenie obu opcji 'skip_*_ips' spowoduje ich zignorowanie. Domyślnie: nie

    Przykład: skip_host_ips = tak

  • 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

  • share_netdev_pubip

    Włączenie tej opcji (yes, true, 1) spowoduje, że wszystkim adresom urządzenia sieciowego, które nie posiadają zdefiniowanego adresu publicznego zostanie przypisany jeden (ten sam) ze zdefiniowanych dla danego urządzenia adresów publicznych. Domyślnie: nie

    Przykład: share_netdev_pubip = tak

6.2.9. Traffic

6.2.9.1. Opis

'Traffic' to odpowiednik perlowego lms-traffic, zapisujący do bazy statystyki wykorzystania łącza z pliku utworzonego przez użytkownika. Plik taki powinien mieć format: ip_hosta upload download . Więcej informacji (w tym jak utworzyć taki plik) można znaleźć w rozdziale dotyczącym lms-traffic.

6.2.9.2. Konfiguracja

Moduł posiada trzy opcje:

  • file

    Lokalizacja pliku ze statystykami firewalla. Domyślnie: /var/log/traffic.log

    Przykład: file = /tmp/log

  • begin_command

    Polecenie powłoki wykonywane przed wczytaniem pliku. Domyślnie: puste

    Przykład: begin_command = 'perl /usr/local/lms/bin/traffic_ipt.pl'

  • end_command

    Polecenie powłoki wykonywane po wczytaniu pliku. Domyślnie: puste

    Przykład: end_command = 'rm /var/log/traffic.log'

6.2.10. Tc (HTB)

6.2.10.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. Regułki dla komputerów można dowolnie zdefiniować i wykorzystać nie tylko do "traffic control". Zasada działania skryptu przedstawia się następująco: Najpierw z bazy pobierane są dane dla wszystkich klientów. Obliczane są sumy ograniczeń (uprate, downrate, upceil, downceil, limity połączeń) dla każdego klienta Następnie wykonywana jest pętla ze sprawdzeniem przynależności do grupy klientów i sieci (jeśli określono). Jeśli wartości ograniczeń są różne od zera następuje zapis reguł do pliku z podmianą zmiennych. W regułkach można stosować następujące zmienne: %name - nazwa hosta, %i - adres IP, %m - MAC, %if - interfejs, %uprate, %downrate, %upceil, %downceil, %plimit, %climit, %o1, %o2, %o3, %o4 - kolejne oktety adresu IP, %h1, %h2, %h3, %h4 - kolejne oktety adresu IP w zapisie szesnastkowym oraz %x - licznik o wartości początkowej 100 zwiększany o jeden dla każdego komputera (lub klienta, w zależności od ustawienia opcji one_class_per_host).

Domyślna polityka tworzenia klas htb zakłada utworzenie jednej klasy dla wszystkich komputerów klienta. Może to być zmienione za pomocą opcji 'one_class_per_host'.

Konfiguracja domyślna zakłada, że twój system jest przystosowany do zastosowania htb oraz iptables z modułami limit, connlimit, mark i ipp2p. Możesz sam spatchować jądro lub skorzystać ze źródeł dostępnych na stronie www.inet.one.pl.

6.2.10.2. Konfiguracja

Masz do dyspozycji standardowe parametry takie jak customergroups, file, command, networks i dodatkowo opcje definiujące treść regułek tc i firewalla. Domyślna konfiguracja przeznaczona jest dla łącz 512/128 kbit i 100mbit.

  • file

    Lokalizacja pliku tymczasowego. 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:

    "#!/bin/sh
    IPT=/usr/sbin/iptables
    TC=/sbin/tc
    LAN=eth0
    WAN=eth1
    BURST="burst 30k"
    
    stop ()
    {
    $IPT -t mangle -D FORWARD -i $WAN -j LIMITS >/dev/null 2>&1
    $IPT -t mangle -D FORWARD -o $WAN -j LIMITS >/dev/null 2>&1
    $IPT -t mangle -F LIMITS >/dev/null 2>&1
    $IPT -t mangle -X LIMITS >/dev/null 2>&1
    $IPT -t mangle -F OUTPUT
    $IPT -t filter -F FORWARD
    $TC qdisc del dev $LAN root 2> /dev/null
    $TC qdisc del dev $WAN root 2> /dev/null
    }
    
    start ()
    {
    stop
    $IPT -t mangle -N LIMITS
    $IPT -t mangle -I FORWARD -i $WAN -j LIMITS
    $IPT -t mangle -I FORWARD -o $WAN -j LIMITS
    # incomming traffic
    $IPT -t mangle -A OUTPUT -j MARK --set-mark 1
    $TC qdisc add dev $LAN root handle 1:0 htb default 3 r2q 1
    $TC class add dev $LAN parent 1:0 classid 1:1 htb rate 99000kbit ceil 99000kbit quantum 1500
    $TC class add dev $LAN parent 1:1 classid 1:2 htb rate   500kbit ceil   500kbit
    $TC class add dev $LAN parent 1:1 classid 1:3 htb rate 98500kbit ceil 98500kbit prio 9 quantum 1500
    $TC qdisc add dev $LAN parent 1:3 esfq perturb 10 hash dst
    # priorities for ICMP, TOS 0x10 and ports 22 and 53
    $TC class add dev $LAN parent 1:2 classid 1:20 htb rate 50kbit ceil 500kbit $BURST prio 1 quantum 1500
    $TC qdisc add dev $LAN parent 1:20 esfq perturb 10 hash dst
    $TC filter add dev $LAN parent 1:0 protocol ip prio 2 u32 match ip sport 22 0xffff flowid 1:20
    $TC filter add dev $LAN parent 1:0 protocol ip prio 2 u32 match ip sport 53 0xffff flowid 1:20
    $TC filter add dev $LAN parent 1:0 protocol ip prio 1 u32 match ip tos 0x10 0xff flowid 1:20
    $TC filter add dev $LAN parent 1:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 1:20
    # serwer -> LAN
    $TC filter add dev $LAN parent 1:0 protocol ip prio 4 handle 1 fw flowid 1:3
    
    # outgoing traffic
    $TC qdisc add dev $WAN root handle 2:0 htb default 11 r2q 1
    $TC class add dev $WAN parent 2:0 classid 2:1 htb rate 120kbit ceil 120kbit
    # priorities for ACK, ICMP, TOS 0x10, ports 22 and 53
    $TC class add dev $WAN parent 2:1 classid 2:10 htb rate 60kbit ceil 120kbit prio 1 quantum 1500
    $TC qdisc add dev $WAN parent 2:10 esfq perturb 10 hash dst
    $TC filter add dev $WAN parent 2:0 protocol ip prio 1 u32 match ip protocol 6 0xff \
    match u8 0x05 0x0f at 0 match u16 0x0000 0xffc0 at 1 match u8 0x10 0xff at 33 flowid 2:10
    $TC filter add dev $WAN parent 2:0 protocol ip prio 1 u32 match ip dport 22 0xffff flowid 2:10
    $TC filter add dev $WAN parent 2:0 protocol ip prio 1 u32 match ip dport 53 0xffff flowid 2:10
    $TC filter add dev $WAN parent 2:0 protocol ip prio 1 u32 match ip tos 0x10 0xff flowid 2:10
    $TC filter add dev $WAN parent 2:0 protocol ip prio 1 u32 match ip protocol 1 0xff flowid 2:10
    # serwer -> Internet
    $TC class add dev $WAN parent 2:1 classid 2:11 htb rate 30kbit ceil 120kbit prio 2 quantum 1500
    $TC qdisc add dev $WAN parent 2:11 esfq perturb 10 hash dst
    $TC filter add dev $WAN parent 2:0 protocol ip prio 3 handle 1 fw flowid 2:11
    $TC filter add dev $WAN parent 2:0 protocol ip prio 9 u32 match ip dst 0/0 flowid 2:11

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

  • end

    Stopka skryptu. Domyślnie:

    }
    
    case "$1" in
        'start')
    	start
        ;;
        'stop')
    	stop
        ;;
        'status')
    	echo "WAN Interface"
    	echo "============="
    	$TC class show dev $WAN | grep root
    	$TC class show dev $WAN | grep -v root | sort | nl
    	echo "LAN Interface"
    	echo "============="
    	$TC class show dev $LAN | grep root
    	$TC class show dev $LAN | grep -v root | sort | nl
        ;;
        *)
    	echo -e "\nUsage: rc.htb start|stop|status"
        ;;
    esac

    Przykład: end = ""

  • one_class_per_host

    Określa politykę tworzenia klas htb. W ustawieniu domyślnym wszystkie komputery klienta zostaną wrzucone do jednej klasy. Ustawienie tej opcji na 'true' spowoduje, że reguły określone w host_htb_up i host_htb_down zostaną wygenerowane dla wszystkich komputerów klienta (z inną wartością '%x'). Reguły z host_mark_down, host_mark_up, host_plimit i host_climit generowane są dla każdego komputera niezależnie od ustawień tej zmiennej. Domyślnie: false

    Przykład: one_class_per_host = 1

  • limit_per_host

    Określa politykę tworzenia limitów połączeń/pakietów dla komputerów. W ustawieniu domyślnym limit połączeń/pakietów jest dzielony przez ilość komputerów klienta. Włączenie tej opcji spowoduje, że reguły określone w host_climit i host_plimit zostaną wygenerowane dla wszystkich komputerów klienta z wartością $climit i %plimit zdefiniowaną w taryfie (nie podzieloną przez ilość komputerów). Domyślnie: false

    Przykład: limit_per_host = 1

  • host_mark_up

    Reguła markująca dla każdego komputera. Domyślnie:

    # %n
    $IPT -t mangle -A LIMITS -s %i -j MARK --set-mark %x

    Przykład: host_mark_up = ""

  • host_mark_down

    Reguła markująca dla każdego komputera. Domyślnie:

    $IPT -t mangle -A LIMITS -d %i -j MARK --set-mark %x

    Przykład: host_mark_down = ""

  • host_htb_down

    Zestaw reguł dla każdego komputera, wykonywanych gdy uprate i downrate są różne od zera. Domyślnie:

    $TC class add dev $LAN parent 1:2 classid 1:%x htb rate %downratekbit ceil %downceilkbit $BURST prio 2 quantum 1500
    $TC qdisc add dev $LAN parent 1:%x esfq perturb 10 hash dst
    $TC filter add dev $LAN parent 1:0 protocol ip prio 5 handle %x fw flowid 1:%x

    Przykład: host_htb_down = ""

  • host_htb_up

    Zestaw reguł dla każdego komputera, wykonywanych gdy uprate i downrate są różne od zera. Domyślnie:

    $TC class add dev $WAN parent 2:1 classid 2:%x htb rate %upratekbit ceil %upceilkbit $BURST prio 2 quantum 1500
    $TC qdisc add dev $WAN parent 2:%x esfq perturb 10 hash dst
    $TC filter add dev $WAN parent 2:0 protocol ip prio 5 handle %x fw flowid 2:%x

    Przykład: host_htb_up = ""

  • host_climit

    Regułka z ograniczeniem ilości równoczesnych połączeń tcp. Wykonywana gdy climit w bazie jest różny od zera. Domyślnie:

    $IPT -t filter -I FORWARD -p tcp -s %i -m connlimit --connlimit-above %climit -m ipp2p --ipp2p -j REJECT

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

  • host_plimit

    Regułka z ograniczeniem ilości pakietów w jednostce czasu (tutaj sekunda). Wykonywana gdy plimit w bazie jest różny od zera. Domyślnie:

    $IPT -t filter -I FORWARD -p tcp -d %i -m limit --limit %plimit/s -m ipp2p --ipp2p -j ACCEPT
    $IPT -t filter -I FORWARD -p tcp -s %i -m limit --limit %plimit/s -m ipp2p --ipp2p -j ACCEPT

    Przykład: host_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"

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

6.2.12. Dns

6.2.12.1. Opis

Moduł do konfiguracji stref serwera 'named' jest jednym z bardziej skomplikowanych. Tworzy dla każdej sieci pliki stref oraz odpowiednie wpisy w named.conf w oparciu o szablony tych plików. Przykładowe szablony znajdują się w katalogu /modules/dns/sample.

6.2.12.2. Konfiguracja

  • forward-patterns

    Katalog z szablonami stref. Domyślnie: forward.

    Przykład: forward-patterns = /dns/patterns/forward

  • reverse-patterns

    Katalog z szablonami stref odwrotnych. Domyślnie: reverse.

    Przykład: reverse-patterns = /dns/patterns/revers

  • generic-forward

    Szablon domyślny. Zostanie wykorzystany jeśli w katalogu określonym 'forward-patterns' nie będzie pliku odpowiadającego nazwie domenowej sieci. Domyślnie: modules/dns/sample/forward/generic.

    Przykład: generic-forward = /dns/patterns/forward

  • generic-reverse

    Szablon domyślny. Zostanie wykorzystany jeśli w katalogu określonym 'reverse-patterns' nie będzie pliku odpowiadającego numerowi IP sieci. Domyślnie: modules/dns/sample/reverse/generic.

    Przykład: generic-reverse = /dns/patterns/forward

  • forward-zones

    Katalog na pliki wynikowe stref. Domyślnie: modules/dns/sample/out/forward.

    Przykład: forward-zones = /dns/forward

  • reverse-zones

    Katalog na pliki wynikowe stref odwrotnych. Domyślnie: modules/dns/sample/out/reverse.

    Przykład: reverse-zones = /dns/reverse

  • host-reverse

    Linia w pliku strefy odwr. odpowiadająca każdemu komputerowi w dane sieci. Domyślnie: "%n IN A %i\n".

    Przykład: host-reverse = "\t %n IN A %i\n"

  • host-forward

    Linia w pliku strefy odpowiadająca każdemu komputerowi w danej sieci. Domyślnie: "%c IN PTR %n.%d.\n".

    Przykład: host-forward = "\t %c IN PTR %n.%d.\n"

  • conf-pattern

    Lokalizacja szablonu głównego pliku konfiguracyjnego serwera. Domyślnie: modules/dns/sample/named.conf.

    Przykład: conf-pattern = /dns/patterns/named.conf

  • conf-output

    Lokalizacja głównego pliku konfiguracyjnego serwera. Domyślnie: /tmp/named.conf.

    Przykład: conf-output = /etc/named.conf

  • conf-forward-entry

    Wpis dla każdej strefy w głównym pliku konfiguracyjnym. Domyślnie: 'zone "%n" {\ntype master;\n file "forward/%n"; \nnotify yes; \n}; \n'.

    Przykład: conf-forward-entry = 'zone "%n" { \n\ttype master; \n\tfile "forward/%n"; \n\tnotify yes; \n}; \n'

  • conf-reverse-entry

    Wpis dla każdej strefy odwr. w głównym pliku konfiguracyjnym. Domyślnie: 'zone "%c.in-addr.arpa" { \ntype master; \nfile "reverse/%c"; \nnotify yes; \n}; \n'.

    Przykład: conf-revers-entry = 'zone "%c.in-addr.arpa" { \n\ttype master; \n\tfile "reverse/%c"; \n\tnotify yes; \n}; \n'

  • command

    Polecenie wykonywane po utworzeniu plików konf. Domyślnie: puste.

    Przykład: command = ""

  • 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"

  • custmergroups

    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"

6.2.13. Ethers

6.2.13.1. Opis

Moduł tworzący konfigurację tablicy ARP systemu. Ustawiając opcję 'dummy_macs' można sprawić, aby komputerom odłączonym został przypisany mac-adres 00:00:00:00:00:00.

6.2.13.2. Konfiguracja

Tutaj są tylko standardowe opcje:

  • file

    Lokalizacja pliku wynikowego. Domyślnie: /etc/ethers.

    Przykład: file = /tmp/ethers

  • command

    Polecenie powłoki wykonywane po wygenerowaniu konfiga. Domyślnie: 'arp -f /etc/ethers'.

    Przykład: command = ""

  • dummy_macs

    Jeśli ustawimy na 'yes', to komputerom odłączonym zostanie przypisany mac-adres '00:00:00:00:00:00'. Domyślnie: "no".

    Przykład: dummy_macs = yes

  • 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"

6.2.14. Oident

6.2.14.1. Opis

Moduł do konfiguracji oidentd. W zasadzie można to zrobić modułem 'hostfile', ale tutaj masz już gotowe ustawienia domyślne.

6.2.14.2. Konfiguracja

A oto parametry modułu 'oident'

  • begin

    Tekst wstawiany na początku pliku. Domyślnie: puste.

    Przykład: begin = "#Generowany automatycznie\n"

  • end

    Tekst wstawiany na końcu pliku. Domyślnie: puste.

    Przykład: end = ""

  • host

    Linia tekstu dla każdego komputera. Domyślnie: "%i\t%n\tUNIX".

    Przykład: host = "%i %n WINDOWS"

  • file

    Nazwa pliku konfiguracyjnego. Domyślnie: /etc/oidentd.conf.

    Przykład: file = /etc/oident/identd.conf

  • networks

    Lista nazw sieci do uwzględnienia. Domyślnie: pusta (wszystkie sieci).

    Przykład: networks = 'lan1 lan2'

  • command

    Polecenie do wykonania po utworzeniu pliku. Domyślnie: puste.

    Przykład: command = "killall -HUP midentd"

6.2.15. Pinger

6.2.15.1. Opis

Moduł pinger to odpowiednik perlowego skryptu lms-fping. Różnice są jednak zasadnicze. Nie potrzebuje zewnętrznego programu i działa przy wykorzystaniu protokołu ARP. Powodem tego jest mniej więcej dwukrotnie szybsze wykonanie skanowania sieci. Nie ma także problemów z komputerami mającymi wyłączone odpowiadanie na pingi. Po skanowaniu, wszystkim włączonym komputerom jest ustawiany w bazie danych czas skanowania, wykorzystywany do obrazowania aktywności komputerów np. na mapie sieci.

Notatka

Pinger rozpoznaje interfejsy sieciowe na podstawie nazwy, dlatego (np. gdy do zakładania interfejsów wirtualnych/aliasów wykorzystujesz program ip) musisz nadawać interfejsom etykiety (ip addr add ... label ...). Pamiętaj także, żeby nie używać w nazwach kropek, ani myślników (mimo, że ip na to pozwala), gdyż pinger nie rozpozna poprawnie takiego interfejsu.

6.2.15.2. Konfiguracja

Pinger udostępnia tylko jedną opcję konfiguracyjną:

  • networks

    Lista nazw sieci, które mają być skanowane. Domyślnie: pusta (wszystkie sieci).

    Przykład: networks = 'lan1 lan2'

6.2.16. Parser

6.2.16.1. Wstęp

Moduł parser jest oparty na skryptowym języku T-Script, którego głównym zadaniem jest generowanie plików tekstowych. Może być używany do przetwarzania szablonów z danymi pobieranymi z różnych źródeł np. baz SQL lub plików tekstowych. W naszym przypadku treść skryptu (szablon) jest przechowywany w bazie danych, dlatego istnieje możliwość jego edycji poprzez LMS-UI. W przyszłości moduł parser może zastąpić większość modułów demona.

Opis języka T-Script znajduje się w rozdziale T-Script.

Przed kompilacją modułu upewnij się, że posiadasz w systemie pakiety bison (co najmniej w wersji 1.875) oraz flex.

6.2.16.2. Konfiguracja

Parser posiada następujące opcje:

  • script

    Zawartość skryptu (szablonu). Domyślnie: pusta.

    Przykład: script = '{var=1}zmienna var={var}'

  • file

    Lokalizacja pliku wynikowego. Domyślnie: pusta

    Przykład: file = /tmp/parser.out

  • command

    Polecenie powłoki do wykonania po kompilacji skryptu. Domyślnie: pusta

    Przykład: command = "sh /tmp/parser.out"

6.2.17. Ewx-pt

6.2.17.1. Wstęp

Moduł ewx-pt służy do zarządzania urządzeniem PPPoE Terminator marki EtherWerX. Komunikacja odbywa się z wykorzystaniem protokołu SNMP.

Moduł podczas pracy tworzy własną kopię konfiguracji urządzenia. Konfiguracja urządzenia nie jest w żaden sposób weryfikowana, dlatego korzystając z modułu ewx-pt nie można dokonywać zmian bezpośrednio na urządzeniu. W celu rekonfiguracji urządzenia należy wyczyścić konfigurację na urządzeniu oraz usunąć zawartość tabeli ewx_pt_config w bazie LMSa.

Notatka

Pamiętaj o włączeniu opcji konfiguracyjnej ewx_support w sekcji [phpui].

6.2.17.2. Konfiguracja

Moduł ewx-pt udostępnia następujące opcje:

  • snmp_host

    Adres urządzenia EtherWerX. Domyślnie: pusty.

    Przykład: snmp_host = 192.168.0.1

  • snmp_port

    Port urządzenia dla komunikacji SNMP. Domyślnie: 161

    Przykład: snmp_port = 2161

  • community

    Nazwa community SNMP urządzenia. Domyślnie: private

    Przykład: community = public

  • offset

    Liczba całkowita o jaką będą zwiększane identyfikatory komputerów podczas zapisu na urządzeniu EtherWerX. Domyślnie: 0.

    Przykład: offset = 1000

  • networks

    Lista nazw sieci, które mają być brane pod uwagę. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: pusta (wszystkie sieci).

    Przykład: networks = 'lan1 lan2'

  • dummy_ip_networks

    Lista nazw sieci, dla których komputerom zostanie przypisany adres IP 0.0.0.0. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: pusta (żadna sieć).

    Przykład: dummy_ip_networks = lan1

  • dummy_mac_networks

    Lista nazw sieci, dla których komputerom zostanie przypisany adres MAC 00:00:00:00:00:00. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: pusta (żadna sieć).

    Przykład: dummy_mac_networks = lan1

  • skip_disabled

    Wyłączenie tej opcji spowoduje, że komputery o statusie odłączony nie będą pomijane. Należy ją wyłączyć w przypadku gdy chcemy aby zablokowani klienci mieli możliwość zalogowania się do Terminatora. Domyślnie: włączona.

    Przykład: skip_disabled = false

6.2.18. Ewx-stm

6.2.18.1. Wstęp

Moduł ewx-stm służy do zarządzania urządzeniem Standalone Traffic Manager marki EtherWerX. Komunikacja odbywa się z wykorzystaniem protokołu SNMP. Do prawidłowej pracy wymagany jest firmware w wersji 1.4.x lub nowszej.

Moduł podczas pracy tworzy własną kopię konfiguracji urządzenia. Konfiguracja urządzenia nie jest w żaden sposób weryfikowana, dlatego korzystając z modułu ewx-stm nie można dokonywać zmian bezpośrednio na urządzeniu. W celu rekonfiguracji urządzenia należy wyczyścić konfigurację na urządzeniu oraz usunąć zawartość tabel ewx_stm_channels oraz ewx_stm_nodes w bazie LMSa.

Notatka

Pamiętaj o włączeniu opcji konfiguracyjnej ewx_support w sekcji [phpui].

Należy także zwrócić uwagę na to, iż moduł uwzględnia ustawienia opcji 'Sprawdzanie MACa' oraz 'Half duplex' w danych komputera.

6.2.18.2. Konfiguracja

Moduł ewx-stm udostępnia następujące opcje:

  • snmp_host

    Adres urządzenia EtherWerX. Domyślnie: pusty.

    Przykład: snmp_host = 192.168.0.1

  • snmp_port

    Port urządzenia dla komunikacji SNMP. Domyślnie: 161

    Przykład: snmp_port = 2161

  • community

    Nazwa community SNMP urządzenia. Domyślnie: private

    Przykład: community = public

  • path

    Numer ścieżki zdefiniowanej na urządzeniu, do której zostaną dopisane komputery i kanały z LMSa. Domyślnie: nieustawiona.

    Przykład: path = 1

  • offset

    Liczba całkowita o jaką będą zwiększane identyfikatory komputerów podczas zapisu na urządzeniu EtherWerX. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: 0.

    Przykład: offset = 1000

  • networks

    Lista nazw sieci, które mają być brane pod uwagę. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: pusta (wszystkie sieci).

    Przykład: networks = 'lan1 lan2'

  • excluded_networks

    Lista nazw sieci, które mają zostać pominięte. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: pusta.

    Przykład: excluded_networks = 'lan3 lan4'

  • dummy_ip_networks

    Lista nazw sieci, dla których komputerom zostanie przypisany adres IP 0.0.0.0. Wartość tej opcji może zawierać specjalny znak '*', oznaczający wszystkie sieci. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: pusta (żadna sieć).

    Przykład: dummy_ip_networks = lan1

  • dummy_mac_networks

    Lista nazw sieci, dla których komputerom zostanie przypisany adres MAC 00:00:00:00:00:00. Wartość tej opcji może zawierać specjalny znak '*', oznaczający wszystkie sieci. Uwaga: po zmianie wartości tej opcji zalecana jest rekonfiguracja urządzenia. Domyślnie: pusta (żadna sieć).

    Przykład: dummy_mac_networks = lan1

  • excluded_dummy_ip_networks

    Lista nazw sieci, które zostaną wyłączone z działania opcji dummy_ip_networks, w przypadku użycia w niej znaku '*'. Domyślnie: pusta (żadna sieć).

    Przykład: excluded_dummy_ip_networks = lan5

  • excluded_dummy_mac_networks

    Lista nazw sieci, które zostaną wyłączone z działania opcji dummy_mac_networks, w przypadku użycia w niej znaku '*'. Domyślnie: pusta (żadna sieć).

    Przykład: excluded_dummy_mac_networks = lan7

  • skip_disabled

    Przy domyślnym ustawieniu tej opcji (true) komputery o statusie 'odłączony' nie są brane pod uwagę. Domyślnie: włączona.

    Przykład: skip_disabled = false

  • 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"

6.2.19. Ewx-stm-channels

6.2.19.1. Wstęp

Moduł ewx-stm-channels to odpowiednik modułu ewx-stm (służącego do zarządzania urządzeniem Standalone Traffic Manager marki EtherWerX) zawierający rozbudowaną obsługę kanałów.

Różnica w pracy tych modułów jest następująca. Moduł ewx-stm tworzy kanały automatycznie w zależności od ustawień zobowiązań klientów i ich przypisania do komputerów. Nie obsługuje kanałów zdefiniowanych w LMS-UI. Z kolei moduł ewx-stm-channels pracuje wyłącznie z kanałami zdefiniowanymi w LMS-UI. Komputery powinny być przypisane do urządzeń sieciowych, a te z kolei do kanałów o zdefiniowanych parametrach. Komputery nie przypisane do żadnego kanału są pomijane. Można to zmienić definiując parametry domyślnego kanału w konfiguracji modułu, do którego trafią wszystkie komputery bez powiązania.

6.2.19.2. Konfiguracja

Moduł ewx-stm-channels oprócz opcji dostępnych dla modułu ewx-stm udostępnia następujące opcje:

  • default_upceil

    Wartość upceil dla domyślnego kanału. Domyślnie: 0.

    Przykład: default_upceil = 10000

  • default_downceil

    Wartość downceil dla domyślnego kanału. Domyślnie: 0

    Przykład: default_downceil = 20000