Configuration of LMS-MGC is held in lms-mgc.ini file.
type
Database type. Currently only 'mysql' is 100% supported, however there seems to be no significant problems with 'postgres'. Default: mysql
Example: type = mysql
host
Database host. Usually localhost, but you can set it to anything (IP, domain, path to socket in 'localhost:/path/to/socket' format). Default: localhost
Example: host = localhost
user
Database user. In most cases (if you followed this documentation) it should be 'lms'. If you want to use privileged account, you should enter 'root' (MySQL on *nices), 'mysql' (on PLD) or 'postgres' (PostgreSQL). Default: root
Example: user = mysql
password
Database password. Default: empty.
Example: password = secret_password
database
Database name. Default: lms.
Example: database = lms
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.
Example: instaces = dhcp firewall squid
![]() | Zmienną instances można także umieścić w sekcji dowolnej instancji. Patrz niżej. |
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.
Example: 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)
Example: outfile = /etc/somefile
append
Pozwala ustawić aby wynik działania instancji nie nadpisywał pliku wynikowego, lecz został dopisany na jego końcu
Example: append = 1
outfile_perm
Pozwala na ustawienie praw dostępu do pliku wyjściowego (domyślnie 600)
Example: outfile_perm = 700
outfile_owner
Pozwala na ustawienie właściciela pliku wyjściowego (domyślnie 0)
Example: outfile_owner = 0
![]() | Właściciel musi być podany numerycznie! |
outfile_group
Pozwala na ustawienie grupy pliku wyjściowego (domyślnie 0)
Example: 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)
Example: header_file = /etc/lms/myservice_header
header
Pozwala na umieszczenie w pliku wynikowym zawartości zmiennej jako nagłówka (domyślnie puste)
Example: header = option1 = bla\noption2 = blabla
![]() | Znak \n został tu użyty jako separator linii. Końcowe \n nie jest wymagane. |
networks
Pozwala ustalić które z naszych sieci będą uwzględniane w pliku konfiguracyjnym (domyślnie wszystkie)
Example: networks = cust1-publ cust2-publ cust3-priv
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):
Example: 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):
Example: dst_networks = main coalloc
dst_network_header
Pozwala ustawić nagłówek dla sieci docelowych
Example: 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
Example: 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 nastepują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
Example: 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.
Example: node(192.168.0.20) = ??
allnodes
Pozwala na ustawienie regułki przetwarzanej dla każdego kolejnego adresu IP.
Example: allnodes = ??
allexistnodes
Pozwala na ustawienie regułki przetwarzanej dla każdego kolejnego adresu IP który jest używany.
Example: allexistnodes = ??
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)
Example: 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)
Example: 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)
Example: 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)
Example: deniednode_publ = node %NAME (%IP/%MAC) unique %ID deny;
dhcpnode_priv
Jest przetwarzana gdy dany adres IP zawiera się w klasie DHCP (regułka przetwarzana dla adresów prywatnych)
Example: dhcpnode_priv = node unknown (%IP) reject;
dhcpnode_publ
Jest przetwarzana gdy dany adres IP zawiera się w klasie DHCP (regułka przetwarzana dla adresów publicznych)
Example: 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)
Example: 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)
Example: 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)
Example: default_priv = node unknown (%IP) lock_as_intruder;
![]() | lms-mgc sam rozpoznaje który adres należy do klasy 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)
Example: 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
Example: network_footer = ??
footer_file
Pozwala na umieszczenie w pliku wynikowym zawartości innego pliku jako stopka (domyślnie nie ustawione)
Example: footer_file = /etc/lms/myservice_footer
footer
Pozwala na umieszczenie w pliku wynikowym zawartości zmiennej jako stopki (domyślnie puste)
Example: footer = # End.
post_exec
Komenda do wywołania po wygenerowaniu pliku konfiguracyjnego
Example: post_exec = killall -HUP mydaemon
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
%PIN - PIN of customer who owns node
%ID - ID komputera w bazie
%MAC - adres MAC karty sieciowej
%SMAC - adres MAC pisany małymi literami z usuniętymi dwukropkami
%OWNER - właściciel komputera
%NAME - nazwa komputera dużymi znakami
%name - nazwa komputera małymi znakami
%INFO - opis komputera
%PASSWD - node password
%UPRATE - gwarantowany transfer dla danych wychodzących
%DOWNRATE - gwarantowany transfer dla danych przychodzących
%UPCEIL - maksymalny transfer dla danych wychodzących
%DOWNCEIL - maksymalny transfer dla danych przychodzących
%CLIMIT - limit równoczesnych połączeń
%PLIMIT - limit pakietów
%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;