Autor: Tecquilka | 18.6.2006 |
[Bind+MySQL]: Uvedu postup jak zakomponovat do systemu Bind, spolu s podporou sdb MySQL driveru, ktere mi umozni pristupovat k zonovym zaznamum ulozenym v MySQL databazi. Tento postup by mel fungovat na libovolne distribuci, mozna s drobnymi rozdily. Zacneme stazenim zdrojovych kodu programu bind (www.isc.org). Verze kterou jsem stahl ja je "bind9.3.2". Zdrojove kody stahneme napr. do adresare /root a rozbalime. Dale rozbalime balicek mysql-bind-0.1. V adresari, ktery nam rozbalenim vynikl, je popsan postup k zakomponovani mysql ovladace do programu bind README. Vse zacina zkopirovanim zdrojoveho kodu driveru (mysqldb.c) a hlavickoveho souboru (mysqldb.h) do zdrojovych kodu programu bind. Soubor "mysqldb.c" zkopirujete do bind-9.3.2/bin/named a "mysqldb.h" prekopirujete do bind-9.3.2/bin/named/include. Po prekopirovani musite driver pridat zmenou zdrojovych kodu v souboru "Makefile.in" ("bind-9.3.2/bin/named/Makefile.in") Zde zmenim tyto zaznamy:
DBDRIVER_OBJS ="DBDRIVER_INCLUDES =" je potreba modifikovat take, vypadat by mel nejak takto: "DBDRIVER_INCLUDES =-I'/usr/include/mysql'", avsak muze (a nejspis bude) obsahovat rozdilne prepinace. Tyto prepinace ziskam pouzitim programu "mysql_config", ktery se nam dostava v balicku "mysql-devel" (uvedl jsem jej jiz na zacatku v potrebnych baliccich). Pro ziskani spravnych nastaveni pro prepinace pouziji program mysql_config v teto syntaxi: "mysql_config --cflags". Cely vystup pouzijeme jako parametr, takze vysledne nastaveni na mem pocitaci vypada takto:
"-I/usr/include/mysql -pipe -Wp,-D_FORTIFY_SOURCE=2 -fomit-frame-pointer -march=i586 -mtune=pentiumpro -fno-omit-frame-pointer"Toto pouziji jako parametr takze polozka dbdriver_include bude ve vysledku vypadat takto:
"DBDRIVER_INCLUDES =-I'/usr/include/mysql' -pipe -Wp,-D_FORTIFY_SOURCE=2 -fomit-frame-pointer -march=i586 -mtune=pentiumpro -fno-omit-frame-pointer"Posledni modifikaci v souboru Makefile.in je modifikace polozky "DBDRIVER_LIBS =" ktera obsahuje take parametry. Tyto parametry opet ziskam pomoci programu mysql_config v zapisu: "mysql_config --libs" Vracene parametry pouziji i zde, stejne jako u predechoyiho prikladu:
"DBDRIVER_LIBS =-L'/usr/lib/mysql' -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib -lssl -lcrypto"Posledni fazi je úprava souboru main.c ("bind-9.3.2/bin/named/main.c"). Otevrete tento soubor k úprave a pridate tento radek: "#include "mysqldb.h", timto si zpristupnite hlavickovy soubor s funkcemi. Je dost pravdepodobne, ze Vam toto nebude fungovat, jelikoz je nutne zadat absolutni cestu (#include "/root/bind-9.3.2/bin/named/include/mysqldb.h") jinak by byl tento soubor hledan v aktualnim adresari s "main.c".
V main.c si najdete funkci "setup()" a v ni radek, ktery obsahuje volani funkce "ns_server_create();" Pred tento radek (toto volani) vlozite radek "mysqldb_init();"
Poslednim krokem v uprave mainu je nalezeni funkce "clean()", ktera ve vsem tele obsahuje funkci "ns_server_destroy();". Za ni (resp. na radek pod ni) pridate funkci "mysqldb_clear();" Zmeny ulozite a provedete kompilaci:
./configureV pripade dobre provedene kompilace by soubor named mel byt ulozen v adresari "/usr/local/sbin/named". Konfiguracni soubor je ukrzty v "/etc/named.conf"
[Konfigurace s vyuzitim mysql databaze]: Vse zacina úpravou souboru "/etc/named/conf", ktery obsahuje polozku options. Zde nastavite adresar, ve kzerem se bude pracovat (volba "directory "/adresar";). Dale nastavite forward, zajisti cachovani zaznamu, na DNS servery. Dalsi nastaveni se tyka nastaveni samotnych zon. Nebudu zde uvadet jednotlive nastaveni, ktere lze zjistit na adrese "http://www.csd.uwo.ca/staff/magi/doc/bind9/". Jedine co uvedu je priklad zony "savvy.cz", ktera bude mit zonove zaznamy v mysql databazi:
zone "savvy.cz" {MySQL databaze by mela obsahovat databazi pojmenovanou napr. "databaze_dns" a obsahovat tabulky pro jednotlive zony. Zde je syntaxe na vytvoreni tabulky "savvy", tuto syntaxi pouziji i pri vytvareni dalsich zaznamu:
CREATE TABLE savvy (Vkladani do tabulky:
INSERT INTO mydomain VALUES ('savvy.cz', 259200, 'SOA', 'savvy.cz. www.savvy.cz. 200309181 28800 7200 86400 28800');Dulezite je zadavat jmeno a ttl, jelikoz neni mozne pouzit $ORIGIN ani $TTL. Doporuceni: "pri vztvareni tabulek nenastavujte hodnotu ttl na null, ale nejakou smysluplnou hodnotu (muze se stat ze zapomenete zadat hodnotu).
[Ma konfigurace]:
/* /etc/named.conf */
options {
directory "/var/named";
pid-file "/var/run/named.pid";
/* Kvuli cachovani musi byt forward, jinak necachuje */
forward first;
forwarders {
217.11.224.1;
217.11.224.2;
};
};
zone "." {
type hint;
file "root.cache";
};
zone "savvy.cz" {
type master;
database "mysqldb dns savvy localhost root 123789";
};
zone "1.168.192.in-addr.arpa" {
type master;
database "mysqldb dns arpa localhost root 123789";
};
/* vypis z databaze pro zonu savvy.cz*/
+-----------------+------+--------+----------------------------------------------------+ | name | ttl | rdtype | rdata | +-----------------+------+--------+----------------------------------------------------+ | savvy.cz | 3600 | SOA | ns1.savvy.cz. root.savvy.cz. 20060602 2H 30M 1W 2H | | savvy.cz | 3600 | NS | ns1.savvy.cz. | | savvy.cz | 3600 | NS | ns2.savvy.cz. | | ns1.savvy.cz | 3600 | A | 217.11.224.1 | | ns2.savvy.cz | 3600 | A | 217.11.224.2 | | savvy.cz | 3600 | MX | 10 mail.savvy.cz. | | mail.savvy.cz | 3600 | A | 192.168.1.3 | | mail2.savvy.cz | 3600 | Cname | mail.savvy.cz. | | brana.savvy.cz | 3600 | A | 192.168.1.1 | +-----------------+------+--------+----------------------------------------------------+
+----------------------------+------+--------+------------------------------------------------------------+ | name | ttl | rdtype | rdata | +----------------------------+------+--------+------------------------------------------------------------+ | 1.168.192.in-addr.arpa | 3600 | SOA | localhost. root.localhost. 20060602 28800 7200 86400 28800 | | 1.1.168.192.in-addr.arpa | 3600 | PTR | brana.savvy.cz. | | 1.168.192.in-addr.arpa | 3600 | NS | ns1.savvy.cz. | | 3.1.168.192.in-addr.arpa | 3600 | PTR | mail.savvy.cz. | +----------------------------+------+--------+------------------------------------------------------------+