LMS - LAN Management System 1.11-git
Poprzedni | Rozdział 5. Generator plików konfiguracyjnych (lms-mgc) | Następny

# 5.2. Konfiguracja

Konfigurację dla LMS-MGC przeprowadza się w pliku `lms-mgc.ini`

## 5.2.1. Sekcja [database] - ustawienia bazy danych

- type

  Typ bazy danych. Aktualnie w 100% supportowany jest 'mysql', ale jak na razie nie widać większych problemów z 'postgres'. Domyślnie: mysql

  Przykład: `type = mysql`

- host

  Host gdzie zainstalowana jest baza danych. Najczęściej, localhost, ale można tutaj wstawić cokolwiek (ipek, domena, path to socketa w formacie 'localhost:/path/to/socket'). Domyślnie: localhost

  Przykład: `host = localhost`

- user

  Użytkownik do bazy danych. W wielu wypadkach (jeżeli postępowałeś zgodnie ze wskazówkami w doc/INSTALL) będzie to 'lms'. Jeżeli chcesz używać konta uprzywilejowanego, prawdopodobnie wpiszesz 'root' (MySQL na większości *nixów), 'mysql' (na PLD) bądź 'postgres' (PostgreSQL). Domyślnie: root

  Przykład: `user = mysql`

- password

  Hasło do bazy danych. Domyślnie puste.

  Przykład: `password = tajne_haslo`

- database

  Nazwa bazy danych, domyślnie lms.

  Przykład: `database = lms`

## 5.2.2. Sekcja [mgc] - lista instancji

Właściwa konfiguracja dotycząca generatorów poszczególnych plików konfiguracyjnych jest umieszczana w sekcji [mgc] i pochodnych. W samej sekcji [mgc] możemy użyć następującego parametru:

- instances

  Lista "instancji" oddzielona spacjami.

  Przykład: `instances = dhcp firewall squid`

| Zmienną `instances` można także umieścić w sekcji dowolnej instancji. Patrz niżej.

## 5.2.3. Sekcja [mgc:xxx] - konfiguracja instancji

Każda instancja ma swoją nazwę i jej konfigurację tworzy się umieszczając sekcję o nazwie [mgc:nazwa], czyli przykładowo: [mgc:mydaemon]

W samych instancjach możemy używać następujących opcji konfiguracyjnych:

- instances

  Zmienna, w której możesz podać listę innych instancji, aby następnie wywoływać mgc poleceniem '`lms-mgc -i sekcja`' zamiast '`lms-mgc -i "sekcja1 sekcja2 sekcja3"`'. Jeśli zostanie użyta, wszystkie pozostałe zmienne tej sekcji zostaną zignorowane.

  Przykład: `instances = dns1 dns2 dns3`

- outfile

  Definiuje plik do którego ma być zapisany wynik działania bieżącej instancji (jeżeli ta zmienna będzie nie ustawiona, instancja się zakończy)

  Przykład: `outfile = /etc/somefile`

- append

  Pozwala ustawić aby wynik działania instancji nie nadpisywał pliku wynikowego, lecz został dopisany na jego końcu

  Przykład: `append = 1`

- outfile_perm

  Pozwala na ustawienie praw dostępu do pliku wyjściowego (domyślnie 600)

  Przykład: `outfile_perm = 700`

- outfile_owner

  Pozwala na ustawienie właściciela pliku wyjściowego (domyślnie 0)

  Przykład: `outfile_owner = 0`

  | Właściciel musi być podany numerycznie!

- outfile_group

  Pozwala na ustawienie grupy pliku wyjściowego (domyślnie 0)

  Przykład: `outfile_group = 0`

  | Grupa musi być podana numerycznie!

- header_file

  Pozwala na umieszczenie w pliku wynikowym zawartości innego pliku jako nagłówek (domyślnie nie ustawione)

  Przykład: `header_file = /etc/lms/myservice_header`

- header

  Pozwala na umieszczenie w pliku wynikowym zawartości zmiennej jako nagłówka (domyślnie puste)

  Przykład: `header = option1 = bla\noption2 = blabla`

  | Znak \n został tu użyty jako separator linii. Końcowe \n nie jest wymagane.

- customergroups

  Pozwala ustalić które z grup klienckich będą uwzględniane w pliku konfiguracyjnym (domyślnie wszystkie)

  Przykład: `customergroups = grupa1 grupa2`

- excluded_customergroups

  Pozwala ustalić które z grup klientów mają zostać wyłączone z pliku konfiguracyjnego (domyślnie żadna)

  Przykład: `excluded_customergroups = grupa3 grupa4`

- networks

  Pozwala ustalić które z naszych sieci będą uwzględniane w pliku konfiguracyjnym (domyślnie wszystkie)

  Przykład: `networks = cust1-publ cust2-publ cust3-priv`

- excluded_networks

  Pozwala ustalić które z naszych sieci będą wyłączone z pliku konfiguracyjnego (domyślnie żadna)

  Przykład: `excluded_networks = cust4-publ cust5-publ`

Teraz mgc pobiera kolejne sieci i wykonuje w kółko następujące czynności:

- network_header

  Generuje nagłówek dla każdej sieci (domyślnie puste):

  Przykład: `network_header = network %ADDR/%MASK { # Config section for %NAME`

- dst_networks

  Pozwala ustawić sieci docelowe, czyli takie dla których będzie przetwarzany parametr: dst_network_header (domyślnie wszystkie):

  Przykład: `dst_networks = main coalloc`

- dst_network_header

  Pozwala ustawić nagłówek dla sieci docelowych

  Przykład: `dst_network_header = \tallow to %DADDR/%DMASK;`

- network_body

  Parametr jest przetwarzany po wysłaniu nagłówków dla sieci, a przed rozpoczęciem analizy adresów IP

  Przykład: `network_body = \tnodes {`

Teraz MGC rozpocznie przetwarzanie regułek dla kolejnych adresów IP. Robi to w dosyć specyficzny sposób. Tzn. oblicza kolejny adres IP i sprawdza czy zdefiniowano regułę dla hosta i wykonuje pierwszą. Sprawdzanie jest wykonywane w następującej kolejności:

- ignore

  Pozwala na ustawienie listy adresów w postaci adres/prefix lub adres/maska oddzielanej spacjami dla której ma być ignorowane generowanie

  Przykład: `ignore = 192.168.0.100/32`

- node(IP)

  Przy pomocy tej opcji można zdefiniować regułę dla wybranego komputera. W nawiasie podaje się jego adres IP. Każda sekcja instancji może zawierać dowolną ilość takich opcji.

  Przykład: `node(192.168.0.20) = ??`

- allnodes

  Pozwala na ustawienie regułki przetwarzanej dla każdego kolejnego adresu IP.

  Przykład: `allnodes = ??`

- allexistnodes

  Pozwala na ustawienie regułki przetwarzanej dla każdego kolejnego adresu IP który jest używany.

  Przykład: `allexistnodes = ??`

- netdevnode

  Pozwala na ustawienie regułki przetwarzanej dla każdego kolejnego adresu IP urządzenia sieciowego.

  Przykład: `netdevnode = ??`

- grantednode_priv

  Jest przetwarzana gdy dany adres komputer z danym adresem IP istnieje, ale w lms-ui ma status "podłączony" (regułka przetwarzana dla adresów prywatnych)

  Przykład: `grantednode_priv = \t\tnode %NAME (%IP/%MAC) unique %ID;`

- grantednode_publ

  Jest przetwarzana gdy dany adres komputer z danym adresem IP istnieje, ale w lms-ui ma status "podłączony" (regułka przetwarzana dla adresów publicznych)

  Przykład: `grantednode_publ = \t\tnode %NAME (%IP/%MAC) unique %ID;`

- deniednode_priv

  Jest przetwarzana gdy dany adres komputer z danym adresem IP istnieje, ale w lms-ui ma status "odłączony" (regułka przetwarzana dla adresów prywatnych)

  Przykład: `deniednode_priv = node %NAME (%IP/%MAC) unique %ID deny;`

- deniednode_publ

  Jest przetwarzana gdy dany adres komputer z danym adresem IP istnieje, ale w lms-ui ma status "odłączony" (regułka przetwarzana dla adresów publicznych)

  Przykład: `deniednode_publ = node %NAME (%IP/%MAC) unique %ID deny;`

- dhcpnode_priv

  Jest przetwarzana gdy dany adres IP zawiera się w zakresie DHCP (regułka przetwarzana dla adresów prywatnych)

  Przykład: `dhcpnode_priv = node unknown (%IP) reject;`

- dhcpnode_publ

  Jest przetwarzana gdy dany adres IP zawiera się w zakresie DHCP (regułka przetwarzana dla adresów publicznych)

  Przykład: `dhcpnode_publ = node unknown (%IP) reject;`

- freeip_priv

  Jest przetwarzana gdy dany adres IP nie jest przypisany do żadnego komputera (regułka przetwarzana dla adresów prywatnych)

  Przykład: `freeip_priv = node unknown (%IP) lock_as_unused;`

- freeip_publ

  Jest przetwarzana gdy dany adres IP nie jest przypisany do żadnego komputera (regułka przetwarzana dla adresów publicznych)

  Przykład: `freeip_publ = node unknown (%IP) lock_as_unused;`

- default_priv

  Regułka domyślna. Jest przetwarzana gdy adres nie zostanie przetworzony przez żadną regułkę grantednode lub deniednode (regułka przetwarzana dla adresów prywatnych)

  Przykład: `default_priv = node unknown (%IP) lock_as_intruder;`

  | lms-mgc sam rozpoznaje który adres należy do puli publicznej, a który do prywatnej.

- default_publ

  Regułka domyślna. Jest przetwarzana gdy adres nie zostanie przetworzony przez żadną regułkę grantednode lub deniednode (regułka przetwarzana dla adresów publicznych)

  Przykład: `default_publ = node unknown (%IP) lock_as_intruder;`

W końcu następuje wygenerowanie końcowej części pliku i wykonanie polecenia systemowego.

- network_footer

  Pozwala na ustawienie stopki dla właśnie przetwarzanej sieci

  Przykład: `network_footer = ??`

- footer_file

  Pozwala na umieszczenie w pliku wynikowym zawartości innego pliku jako stopka (domyślnie nie ustawione)

  Przykład: `footer_file = /etc/lms/myservice_footer`

- footer

  Pozwala na umieszczenie w pliku wynikowym zawartości zmiennej jako stopki (domyślnie puste)

  Przykład: `footer = # End.`

- post_exec

  Komenda do wywołania po wygenerowaniu pliku konfiguracyjnego

  Przykład: `post_exec = killall -HUP mydaemon`

## 5.2.4. Zmienne konfiguracyjne

W opcjach konfiguracyjnych można używać następujących zmiennych, które zostaną podmienione na odpowiednie dane z bazy:

Zmienne dla komputerów:

- %IP - adres IP komputera

- %PUBIP - drugi (publiczny) adres IP komputera

- %PIN - pin klienta posiadającego dany komputer

- %ID - ID komputera w bazie

- %MAC - adres MAC karty sieciowej

- %SMAC - adres MAC pisany małymi literami z usuniętymi dwukropkami

- %CMAC - adres MAC pisany w formacie CISCO (FFFF.FFFF.FFFF)

- %OWNER - ID właściciela komputera

- %CUSTOMER - nazwisko i imię właściciela komputera

- %NAME - nazwa komputera dużymi znakami

- %name - nazwa komputera małymi znakami

- %INFO - opis komputera

- %PASSWD - hasło komputera

- %PORT - port urządzenia, do którego podłączony jest komputer

- %UPRATE - gwarantowany transfer dla danych wychodzących

- %NUPRATE - gwarantowany transfer dla danych wychodzących (dla godzin nocnych)

- %DOWNRATE - gwarantowany transfer dla danych przychodzących

- %NDOWNRATE - gwarantowany transfer dla danych przychodzących (dla godzin nocnych)

- %UPCEIL - maksymalny transfer dla danych wychodzących

- %NUPCEIL - maksymalny transfer dla danych wychodzących (dla godzin nocnych)

- %DOWNCEIL - maksymalny transfer dla danych przychodzących

- %NDOWNCEIL - maksymalny transfer dla danych przychodzących (dla godzin nocnych)

- %CLIMIT - limit równoczesnych połączeń

- %NCLIMIT - limit równoczesnych połączeń (dla godzin nocnych)

- %PLIMIT - limit pakietów

- %NPLIMIT - limit pakietów (dla godzin nocnych)

- %1 %2 %3 %4 - kolejne oktety (od lewej) adresu IP

- %NID - ID sieci, do której należy komputer

- %NNAME - nazwa sieci dużymi znakami

- %nname - nazwa sieci małymi znakami

- %NADDR - adres sieci

- %NIFACE - interfejs sieci

- %NMASK - maska sieci

- %NGATE - adres bramy

- %NDNS - adres serwera DNS

- %NDNS2 - adres drugiego serwera DNS

- %NDOMAIN - domena sieci

- %NWINS - adres serwera WINS dla tej sieci

- %NDHCPS - pierwszy adres DHCP sieci

- %NDHCPE - ostatni adres DHCP sieci

Zmienne dla sieci (w opcjach dotyczących tylko sieci):

- %ID - ID sieci w bazie

- %NAME - nazwa sieci dużymi znakami

- %name - nazwa sieci małymi znakami

- %ADDR - adres sieci

- %IFACE - interfejs

- %MASK - maska

- %GATE - brama sieci

- %DNS - serwer DNS tej sieci

- %DNS2 - drugi serwer DNS tej sieci

- %DOMAIN - domena tej sieci

- %WINS - adres serwera WINS dla tej sieci

- %DHCPS - pierwszy adres DHCP tej sieci

- %DHCPE - ostatni adres DHCP tej sieci

| W opcji konfiguracyjnej `dst_network_header` można ponadto użyć powyższych zmiennych ale poprzedzonych literą D (np. %DADDR, %dname) jako parametry sieci docelowych.

Zmienne które można stosować we wszystkich opcjach:

- %DATE - data w formacie YYYYMMDD;

- %TIME - czas w formacie HHMM;

- %TIMES - czas w formacie HHMMSS;

- %UTIME - czas w formacie unix timestamp;

Poprzedni | Spis treści | Następny
Generator plików konfiguracyjnych (lms-mgc) | Początek rozdziału | Przykład zastosowania lms-mgc