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.
Tabela 6-1. Lista modułów demona lmsd
Nazwa | Opis |
---|---|
system | Wywoływanie poleceń powłoki |
parser | Parser uniwersalnych skryptów T-Script |
dhcp | Konfiguracja serwera dhcpd |
cutoff | Odłączanie klientów z zaległościami w opłatach |
dns | Konfiguracja serwera dns |
ethers | Tworzenie pliku /etc/ethers |
hostfile | Moduł uniwersalny (np. tworzenie reguł iptables) |
notify | Powiadamianie klientów o zaległościach w opłatach pocztą elektroniczną |
ggnotify | Powiadamianie klientów o zaległościach w opłatach przez gadu-gadu |
payments | Naliczanie opłat abonamentowych |
oident | Konfiguracja oident |
tc | Tworzenie reguł TC |
tc-ng | Tworzenie reguł TC |
traffic | Statystyki wykorzystania łącza |
pinger | Badanie aktywności klientów |
ewx-pt | Konfiguracja EtherWerX PPPoE Terminatora |
ewx-stm | Konfiguracja EtherWerX Standalone Traffic Managera |
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.
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"'
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.
Dla tego modułu są dostępne następujące zmienne kofiguracyjne:
comment
Komentarz do operacji. '%period' zostanie zamienione na daty od-do należnego abonamentu, np. '2003/10/10 - 2003/11/09', a '%tariff' na nazwę odpowiedniej taryfy. 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
Rozdzaj płatności. Domyślnie: 'TRANSFER'.
Przykład: paytype = 'GOTÓWKA'
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
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
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.
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
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. Ten moduł nie zajmuje się fizycznym blokowaniem dostępu do sieci.
Dla modułu 'cutoff' mamy następujące opcje:
limit
Odłączenie następuje jeśli saldo klienta spadnie poniżej kwoty określonej tą zmienną. 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'. 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
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
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).
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. 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"
Moduł 'hostfile' jest dość uniwersalnym narzędziem. Ponieważ wykonuje pętlę po wszystkich komputerach w bazie rozróżniając ich status (odłączony/podłączony), sieć do której są podłaczone oraz grupy do których należą ich właściciele, dlatego 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.
W opcjach 'grantedhost' i 'deniedhost' oraz 'public_deniedhost' i 'public_grantedhost' 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 - mac adres, |
%n - nazwa komputera, |
%p - hasło, |
%info - opis komputera, |
%domain - domena, |
%net - nazwa sieci, do której należy host, |
%if - interfejs sieci, |
%addr - adres sieci, |
%mask - maska sieci, |
%gw - adres bramy, |
%dns, %dns2 - adresy serwerów DNS, |
%wins - adres serwera WINS, |
%i16 - ostatni oktet adresu IP w formacie szesnatskowym, |
%i16pub - ostatni oktet publicznego adresu IP w formacie szesnatskowym. |
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"
grantedhost
Tekst 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
Tekst 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
Tekst 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
Tekst dla hosta odłączonego, który posiada adres publiczny. Domyślnie reguła określona opcją 'deniedhost'.
Przykład: public_deniedhost = ""
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"
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 = no
'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.
Jedyny dostępny parametr jest jednocześnie obowiązkowy:
file
Lokalizacja pliku ze statystykami firewalla. Domyślnie: /var/log/traffic.log
Przykład: file = /tmp/log
Moduł generujący skrypt zawierający polecenia iptables i tc służące do ograniczania pasma 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, %i16 - ostatni oktet adresu IP w formacie 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.
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
host_mark_down
Reguła markująca dla każdego komputera. Domyślnie:
# %n $IPT -t mangle -A LIMITS -d %i -j MARK --set-mark %x
Przykład: host_mark_down = ""
host_mark_up
Reguła markująca dla każdego komputera. Domyślnie:
$IPT -t mangle -A LIMITS -s %i -j MARK --set-mark %x
Przykład: host_mark_up = ""
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"
Moduł generujący skrypt zawierający polecenia iptables i tc służące do ograniczania pasma i limitowania połączeń klientom. Działa podobnie do modułu 'tc', lecz obsługuje funkcjonalność pozwalającą na powiązywanie taryf z komputerami. Moduł generuje skrypt z zestawem reguł dla każdego komputera. Pod uwagę są brane tylko taryfy którym zostały przypisane komputery. Jeśli do jednej taryfy przypisano wiele komputerów ich limity obliczane są jako średnia. W przypadku gdy dla jednego komputera zdefiniowano wiele taryf limity (średnie) są sumowane. 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, %i16 - ostatni oktet adresu IP w formacie szesnastkowym oraz %x - licznik o wartości początkowej 100 zwiększany o jeden dla każdego komputera.
Poniważ konfiguracja modułu jest bardzo podobna do jego poprzednika, powienieneś zacząć od przeczytania opisu tc.
Masz do dyspozycji standardowe parametry dostępne dla modułu 'tc' z wyjątkiem opcji one_class_per_host.
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.
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/%i"; \nnotify yes; \n}; \n'.
Przykład: conf-revers-entry = 'zone "%c.in-addr.arpa" { \n\ttype master; \n\tfile "reverse/%i"; \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"
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.
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"
Moduł do konfiguracji oidentd. W zasadzie można to zrobić modułem 'hostfile', ale tutaj masz już gotowe ustawienia domyślne.
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"
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.
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. |
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'
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.
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"
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.
Pamiętaj o włączeniu opcji konfiguracyjnej ewx_support w sekcji [phpui]. |
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
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.
Pamiętaj o włączeniu opcji konfiguracyjnej ewx_support w sekcji [phpui]. |
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'
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
Poprzedni | Spis treści | Następny |
LMS Daemon | Początek rozdziału | T-Script |