Zóna udržovaná na slave serveru se někdy označuje jako slave zóna.
Konfigurační soubor pro BIND 8.1 je tvořen příkazy a komentáři. Příkazy jsou ukončeny středníkem (;).
Konfigurační soubory používané v BIND 4.9.x je možné konvertovat do nového formátu pomocí perlovského skriptu named-bootconf.pl, který je součástí zdrojového kitu BIND 8.1.
I když konfigurační soubor
má ve verzi 8 zcela odlišnou syntaxi oproti konfiguračnímu souboru ve verzi
4, tak syntaxe databází DNS (věty typu SOA, A, PTR, NS atd.) zůstává nezměněna.
Na začátek uveďme pro představu
jednoduchý příklad konfiguračního souboru pro BIND 8.1:
# # prvni named.conf 8.1.1 # options { directory "/etc/master"; }; logging { channel protokol { file "log/protokol.txt" versions 5 ; severity debug; }; channel vyst { file "log/vy"; }; category default { protokol; }; category ncache { vyst; }; category db { vyst; }; }; zone "0.0.127.in-addr.arpa" in { type master; file "127.0.0"; }; zone "." in { type hint; file "named.cache"; }; zone "abcde.cz" in { type master; notify yes; file "abcde.cz.zone"; }; zone "pvtnet.cz" in { type slave; masters {194.149.105.18;}; file "pvtnet.cz.zone"; }; zone "pvt.net" in { type stub; masters {194.149.105.18;}; file "pvt.net.zone"; }; |
/* ve tvaru stejném jako v C */ // ve tvaru stejném jako v C++ # ve tvaru stejném jako v perluKomentář ve stylu C (*/) může označovat komentářový text na části řádky nebo naopak několikařádkový text. Komentář ve stylu C++ nebo perlu naopak znamená vždy jednořádkový komentář, přesněji řečeno, za komentář se považuje text od znaku // nebo # do konce řádky.
POZOR! nepoužívejte jako komentářový znak středník, který má zde význam konce příkazu.
Příklad:
/* Víceřádkový komentář ve stylu C je uzavřen do závorek tvořených znaky hvězdička a lomítko */ // Víceřádkový komentář ve stylu C++ musí na každé // řádce začínat znaky dvě lomítka tato řádka není komentářem a tedy způsobí chybu // # Komentář ve stylu perlu # další řádka komentáře
Syntaxe:
acl jmeno { seznam IP adres };Popis:
Příkaz acl vytváří a pojmenovává seznam IP adres použitích pro kontrolu přístupu. Tento seznam musí být definován dříve, než bude kdekoli použit.
Předdefinované jsou následující seznamy acl:any - povoluje všechny uzly none - zakazuje všechny uzly localhost - povoluje IP adresu všech inteface na systému localnets - povoluje všechny uzly na sítích, do kterých má systém interface
Příkaz includeSyntaxe:Seznam_IP_adres = 1*prvek_seznamu Seznam_IP_adres = ["!"] (ip_adresa|ip_prefix|acl_jmeno|seznam_IP_adres)Popis:Seznam IP adres je seznam prvků. Prvkem může být:
Prvky mohou být negovány použitím znaku "!" před prvkem.IP adresa (dekadická čísla oddělená tečkou) IP prefix (v "/" notaci) jméno dříve definovaného seznamu IP adres seznam IP adres
Při porovnávání je seznam IP adres procházen zleva. Při nalezení prvního výskytu vhodného prvku se s porovnáváním končí. Kladná porovnání povolují přístup, porovnání na negaci zakazují přístup. Pokud se IP v seznamu nenajde má počítač přistupující z dané IP-adresy přístup zakázán.Takto definovaný seznam IP je možné použít parametrech allow-query, allow-transfer, allow-update a listen-on ostatních příkazů.
Příklad:
1.2.3/24; ! 1.2.3.13; # 1.2.3.13 je zcela zbytečné
! 1.2.3.13; 1.2.3/24; # správně, pouze IP 1.2.3.13 má povolen přístup, ostatní z 1.2.3.* mají přístup zakázán.
include cesta;
Popis:
Příkaz include vloží specifikovaný soubor na místo, kde je uveden příkaz include. Příkaz include není možné použít uvnitř jiného příkazu. Příklad chybného použití:
acl int_host { "include int_host.acl"};
Příklad:
include "/etc/security/keys.bind"; include "/etc/acls.bind";
key key_id { algorithm algorithm_id; secret secret_string; };Popis:
Příkaz key definuje šifrovací klíče. Tyto klíče se používají k definici autentizační metody při přístupu k jiným name serverům v příkazu server. Příkazem key musí být šifrovací klíče definovány dříve než budou použity v příkazu server. Tj. příkaz key musí být v konfiguračním souboru uveden dříve než příkaz server.
Algorithm_id je řetězec,
který specifikuje autentizační algoritmus.
Secret_string je
heslo použité algoritmem.
Tento příkaz zatím není implementován, kontroluje se pouze jeho syntaxe.
Příkaz zone používá tři
typy syntaxe:
zone domain_name [ ( in | hs | hesiod | chaos ) ] { type master; file path_name; [ check-names ( warn | fail | ignore ); ] [ allow-update { address_match_list }; ] [ allow-query { address_match_list }; ] [ allow-transfer { address_match_list }; ] [ notify yes_or_no; ] [ also-notify { ip_addr; [ ip_addr; ... ] }; }; zone domain_name [ ( in | hs | hesiod | chaos ) ] { type ( slave | stub ); [ file path_name; ] masters { ip_addr; [ ip_addr; ... ] }; [ check-names ( warn | fail | ignore ); ] [ allow-update { address_match_list }; ] [ allow-query { address_match_list }; ] [ allow-transfer { address_match_list }; ] [ max-transfer-time-in number; ] [ notify yes_or_no; ] [ also-notify { ip_addr; [ ip_addr; ... ] }; }; zone . [ ( in | hs | hesiod | chaos ) ] { type hint; file path_name; [ check-names ( warn | fail | ignore ); ] };Popis:
Příkaz zone definuje jednotlivé zóny.
Type - Typ zony:
server ip_addr { [ bogus yes_or_no; ] [ transfers number; ] [ transfer-format ( one-answer | many-answers ); ] [ keys { key_id [key_id ... ] }; ] };
Syntaxe:logging { [ channel channel_name { ( file path_name [ versions ( number | unlimited ) ] [ size size_spec ] | syslog ( kern | user | mail | daemon | auth | syslog | lpr | news | uucp | cron | authpriv | ftp | local0 | local1 | local2 | local3 | local4 | local5 | local6 | local7 ) | null ); [ severity ( critical | error | warning | notice | info | debug [ level ] | dynamic ); ] [ print-category yes_or_no; ] [ print-severity yes_or_no; ] [ print-time yes_or_no; ] }; ] [ category category_name { channel_name; [ channel_name; ... ] }; ] ... };Popis:Příkaz logging konfiguruje logování. definuje jaké typy událostí se budou zaznamenávat, v jakém formátu a kam se budou zaznamenávat. Uplatní se pouze první příkaz logging.
Příkaz logging používá dva pojmy:
channel - kanál (kam se bude zapisovat) category - kategorie (co se bude zapisovat)
Jeden logging příkaz může definovat libovolné množství kanálů a kategorií. Pokud není logging příkaz uveden, použije se implicitní nastavení.channel Každý kanál je označen jménem. Kanál je definován třemi prvky: Kam budou zprávy zapisovány - do souboru (file), do systémového logu (syslog), nikam (null).
null - zprávy se nikam nezapisují
file - zprávy se zapisují do souboru. Je možné definovat maximální velikost log souboru (size), počet verzí, které se mají udržovat (versions).
size pokud soubor dosáhne definované velikosti, named již další zprávy nezapisuje, dokud nebude soubor znovu otevřený. Přesažení velikosti nezpůsobí automatické znovuotevření souboru. Implicitně není velikost souboru omezena.
version Počet udržovaných verzí. Nejnovější je verze 0. Implicitně se verzování neuplatní. Unlimited = 99 verzí.
syslog Logování bude předáváno systému syslog, který používá konfigurační soubor syslog.conf (blíže viz. příslušný manuál systému).Závažnost chyby - implicitní je závažnost info.
severity Zprávy s nižší závažností než severity nebudou tímto kanálem akceptovány. Při použití syslogu pak hodnota severity je vyhodnocována dle konfigurace v souboru syslog.conf, má-li se událost zaznamenat.Zapisování/nezapisování dodatečných informací - time stamp, jméno kategorie, závažnost chyby. Implicitně se tyto informace nezapisují.
print-time pokud je on, zapisuje se datum a čas do logu.
print-category zapisuje se kategorie zprávy.
print-severity zapisuje se závažnost zprávy. Print volby je možné použít v libovolné kombinaci.Jsou předdefinovány 4 kanály: channel default_syslog { # Zprávy se zapisují do systémového logu severity info; # Zapisují se zprávy o závažnosti info a vyšší syslog daemon; # Syslog zaznamenává jaká část systému # generuje událost (Kernet,mail,...). # Tento kanál bude zaznamenávat události # jakoby je generovali demoni. }; channel default_debug { file "named.run"; # Zprávy se zapisují do souboru named.run # v pracovním adresáři severity dynamic; # Zapisují se zprávy podle aktuálně # nastavené úrovně debug }; channel default_stderr { # Zprávy se zapisují na stderr file "<stderr>"; # jde pouze o ilustraci severity info; }; channel null { null; # Všechny zrávy poslané na tento # kanál se zahodí };Vedle těchto čtyř předdefinovaných kanálů si může správce DNS serveru definovat kanály další. Jakmile je kanál definován, není možné jej předefinovat. Nelze tedy možné změnit definici kanálu přímo, ale můžete modifikovat implicitní log tak, že změníte kategorie (na stejné kanály můžete posílat jiné zprávy.) category Všechny zprávy generované programem named jsou rozděleny podle typu do několika skupin - kategorií. Každá kategorie je označena jménem. Použitelné kategorie:
default - všechny zprávy i ty, které nejsou rozděleny do dalších kategorií. Pokud nespecifikujete pro některou y dále uvedených kategorií kanál, posílají se zprávy daného typu se na stejný kanál jako zprávy kategorie default
config - Závažné chyby v konfiguračním souboru.
parser - Chyby nižší úrovně v konfiguračním souboru.
gueries - Krátká zpráva pro každý obdržený dotaz
lame-servers - Zprávy typu Lame server on ..
statistics - Statistiky
panic - Named nemůže dále běžet z důvodu interního problému.
update - Dynamický update
ncache - Negativní caching
xfer-in - Příchozí zone transféry.
xfer-out - Odchozí zone transféry
db - Všechny databázové operace
eventlib - Debuging informace od event systému category eventlib { default_debug; };. Může být uveden pouze jeden kanál a musí to být soubor.
packet - dump příchozích i odchozích paketů. Může být uveden pouze jeden kanál a musí to být soubor. Pokud ji nedefinujete použije se tato: category packet { default_debug; };
notify - Notify protokol
cname - Zprávy typu ... points to a CNAME
security - Povolený/nepovolený dotaz
os - Problémy OS
insist- Chyby při kontrole interní konsistence
maintenance -Periodická údržba
load - Zprávy o natažení zony
response-checks- Zprávy z kontroly odpovědí. zprávy typu "invalid RR type...", "unrelated additional info..." atd.Jednotlivé kategotie zpráv je možné posílat na různé kanály. Pokud nespecifikujete seznam kanálu pro kategorii, pak jsou zprávy z dané kategorie posílány na stejný kanál jako zprávy kategorie default. Pokud nespecifikujete default kategorii, použije se tato definice: category default { default_syslog; default_debug; };Implicitně jsou tedy všechny zprávy generované programem named posílány na kanály: default_syslog; default_debug;, tzn do systémového logu a do souboru named.run v pracovním adresáři. Příklad: Definuji speciální kanál pro logování zpráv závažnosti info a vyšší kategorie security channel my_security_channel { file "my_security_file"; severity info; }; category security { my_security_channel; default_syslog; default_debug; };Chcete - li zprávy zahazovat použijte kanál null: category lame-servers { null; }; category cname { null; };
options { [ directory path_name; ] [ named-xfer path_name; ] [ dump-file path_name; ] [ pid-file path_name; ] [ statistics-file path_name; ] [ auth-nxdomain yes_or_no; ] [ fake-iquery yes_or_no; ] [ fetch-glue yes_or_no; ] [ multiple-cnames yes_or_no; ] [ notify yes_or_no; ] [ recursion yes_or_no; ] [ forward ( only | first ); ] [ forwarders { [ in_addr ; [ in_addr ; ... ] ] }; ] [ check-names ( master | slave | response ) ( warn | fail | ignore); ] [ allow-query { address_match_list }; ] [ allow-transfer { address_match_list }; ] [ listen-on [ port ip_port ] { address_match_list }; ] [ query-source [ address ( ip_addr | * ) ] [ port ( ip_port | * ) ] ; ] [ max-transfer-time-in number; ] [ transfer-format ( one-answer | many-answers ); ] [ transfers-in number; ] [ transfers-out number; ] [ transfers-per-ns number; ] [ coresize size_spec ; ] [ datasize size_spec ; ] [ files size_spec ; ] [ stacksize size_spec ; ] [ clean-interval number; ] [ interface-interval number; ] [ statistics-interval number; ] [ topology { address_match_list }; ] };Popis:
Příkaz option nastavuje globální volby pro program named. Příkaz může být v konfiguračním souboru uveden pouze jednou. Pokud není uveden, použijí se default nastavení.
check-names master fail; check-names slave warn; check-named response ignore;
listen-on { 194.149.100.33; }; listen-on port 2323 { !195.47.127.44; 195.47/16 };
query-source address * port *;