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. Przykłady konfiguracji demona i modułów zawiera plik daemon/lms.ini.sample. Parametry konfiguracyjne modułów umieszcza się w sekcjach instancji je wywołujących.
Tabela 6-1. Lista modułów demona almsd
Nazwa | Opis |
---|---|
dhcp | Konfiguracja serwera dhcpd |
cutoff | Odłączanie użytkowników z zaległościami w opłatach |
dns | Konfiguracja serwera dns |
ethers | Tworzenie pliku /etc/ethers |
hostfile | Moduł uniwersalny (np. tworzenie regół iptables) |
notify | Powiadamianie użytkowników o zaległościach w opłatach pocztą elektroniczną |
ggnotify | Powiadamianie użytkowników o zaległościach w opłatach przez gadu-gadu |
payments | Naliczanie opłat abonamentowych |
oident | Konfiguracja oident |
tc | Tworzenie regół HTB |
traffic | Statystyki wykorzystania łącza |
Moduł nalicza użytkownikom opłaty abonamentowe. Należy go uruchamiać codziennie. Opłaty naliczane na podstawie przypisanych użytkownikowi taryf zapisywane są do bazy wraz z komentarzem określonym zmienną 'comment'. Po naliczeniu opłat tworzone są faktury.
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. '10.10.2003 - 09.11.2003', a '%tariff' na nazwę odpowiedniej taryfy. Domyślnie: 'Abonament wg taryfy: '%tariff' za okres: %period'.
Przykład: comment = 'Abonament miesięczny 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
Moduł 'notify' służy do informowania użytkowników o zaległościach w opłatach za pomocą poczty elektronicznej. Aktualne saldo użytkownika 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 użytkownika
%name - imię użytkownika
%lastname - nazwisko/nazwa użytkownika
%last_10_in_a_table - wyciąg ostatnich 10 operacji na kocie użytkownika
Poniżej przedstawiono dostępne opcje konfiguracyjne modułu 'notify':
mailtemplate
Lokalizacja pliku z szablonem wiadomości. Domyślnie: pusty
Przykład: mailtemplate = 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 użytkownika. Domyślnie: 'mail %address -s "Inf. o zaległościach w opłatach" < /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 użytkownika 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 użytkownika 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:
ggtemplate
Lokalizacja pliku z szablonem wiadomości. Domyślnie: pusty.
Przykład: ggtemplate = 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 użytkownika 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 wszyskie wiadomości. Domyślnie: puste.
Przykład: debug_uin = 7654321
Cutoff zmienia na 'odłączony' status komputerów użytkownikom, którzy mają na koncie zaległości większe niż określony limit. Ten moduł nie zajmuje się fizycznym blokowaniem dostępu do sieci. Należy pamiętać aby uruchamiać go przed modułami takimi jak np. 'hostfile'. Ważna jest kolejność instancji na liście w zmiennej 'instances'. Moduł 'cutoff' najlepiej uruchamiać codziennie.
Moduł 'cutoff' posiada tylko jeden parametr:
limit
Odłączenie następuje jeśli saldo użytkownika spadnie poniżej kwoty określonej tą zmienną. Domyślnie: 0.
Przykład: limit = -20
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: /tmp/dhcpd.conf.
Przykład: file = /etc/dhcpd.conf
command
Polecenie wykonywane po utworzeniu pliku konfiguracyjnego. Domyślnie: pusta.
Przykład: command = 'killall -HUP dhcpd'
begin
Nagłówek pliku. Domyślnie: "shared-network LMS {".
Przykład: begin = "shared-network LMS {"
end
Stopka pliku. Domyślnie: "}".
Przykład: end = "\n}"
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;}"
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), dlatego możliwe jest tworzenie np. regół 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' można stosować specjalne zmienne, które podczas zapisu do pliku zostaną zastąpione '%i' - adresem ip, '%m' - mac adresem, '%n' - nazwą komputera. 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"
'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
Do pliku określonego opcją 'file' zapisywane są dane dotyczące uploadu i downloadu dla komputerów określonego w taryfach, w formacie: upload, download, numer_ip_hosta_lub_ich_lista.
Tak przygotowany plik można wykorzystać w skrypcie tworzącym reguły htb. Przykładowy skrypt htb.sh zamieszczono w katalogu modules/tc/sample. Opcja 'command' jest odpowiedzialna za uruchomienie takiego skryptu.
Ten moduł zawiera standardowe parametry:
file
Lokalizacja pliku tymczasowego. Domyślnie: /tmp/tc.dat.
Przykład: file = /tmp/htb.data
command
Polecenie powłoki wykonywane po utworzeniu pliku. Domyślnie: "/bin/sh sample/htb.sh < /tmp/tc.dat".
Przykład: command = "/bin/bash modules/tc/sample/htb.sh < /tmp/tc.dat"
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 okreslonym '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 odw. 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 odw. 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 = ""
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: /tmp/ethers.
Przykład: file = /etc/ethers
command
Polecenie powłoki wykonywane po wygenerowaniu konfiga. Domyślnie: puste.
Przykład: command = "arp -f /etc/ethers"
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
Moduł do konfiguracji oidend. W zasadzie można to zrobić modułem 'hostfile', ale w 'oident' masz możliwość określenia dla których sieci ma być tworzony konfig.
A oto parametry modułu 'oident'
begin
Tekst wstawiany na początku pliku. Domyślnie: puste.
Przykład: begin = "#Generowany utomatycznie\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
Tekst wstawiany na początku pliku. Domyślnie: /tmp/oidentd.conf.
Przykład: file = /etc/identd.conf
networks
Lista sieci do uwzględnienia. Domyślnie: "192.168.0.0/16 10.0.0.0/8".
Przykład: networks = 192.168.1.0/24
command
Polecenie do wykonania po utworzeniu pliku. Domyslnie: puste.
Przykład: command = "killall -HUP midentd"
Poprzedni | Spis treści | Następny |
A.L.E.C's LMS Daemon | Początek rozdziału | Dla dociekliwych |