PLD-doc/book: pl_book__master.docb pl_book__uslugi/pl_uslugi.chp
pl_book__uslugi/pl_uslugi__pdns.sec
ciesiel
cvs w pld-linux.org
Pią, 18 Lut 2005, 17:25:17 CET
Author: ciesiel
Date: Fri Feb 18 17:25:15 2005
New Revision: 5549
Added:
PLD-doc/book/pl_book__uslugi/pl_uslugi__pdns.sec
Modified:
PLD-doc/book/pl_book__master.docb
PLD-doc/book/pl_book__uslugi/pl_uslugi.chp
Log:
- Dodanie rozdzialu USLUGI/PDNS
Modified: PLD-doc/book/pl_book__master.docb
==============================================================================
--- PLD-doc/book/pl_book__master.docb (original)
+++ PLD-doc/book/pl_book__master.docb Fri Feb 18 17:25:15 2005
@@ -52,6 +52,7 @@
<!ENTITY siec_vtun SYSTEM "pl_book__siec/pl_siec_vpn__vtun.sec">
<!ENTITY uslugi SYSTEM "pl_book__uslugi/pl_uslugi.chp">
<!ENTITY uslugi_named SYSTEM "pl_book__uslugi/pl_uslugi__named.sec">
+<!ENTITY uslugi_pdns SYSTEM "pl_book__uslugi/pl_uslugi__pdns.sec">
<!ENTITY uslugi_exim SYSTEM "pl_book__uslugi/pl_uslugi_poczta__exim.sec">
<!ENTITY uslugi_postfix SYSTEM "pl_book__uslugi/pl_uslugi_poczta__postfix.sec">
<!ENTITY uslugi_apache SYSTEM "pl_book__uslugi/pl_uslugi__apache.sec">
Modified: PLD-doc/book/pl_book__uslugi/pl_uslugi.chp
==============================================================================
--- PLD-doc/book/pl_book__uslugi/pl_uslugi.chp (original)
+++ PLD-doc/book/pl_book__uslugi/pl_uslugi.chp Fri Feb 18 17:25:15 2005
@@ -4,6 +4,7 @@
<para>W rozdziale tym przedstawimy opis instalacji i konfiguracji ważniejszych usług dostępnych w PLD</para>
&uslugi_cron;
&uslugi_named;
+ &uslugi_pdns;
&uslugi_exim;
&uslugi_postfix;
&uslugi_apache;
Added: PLD-doc/book/pl_book__uslugi/pl_uslugi__pdns.sec
==============================================================================
--- (empty file)
+++ PLD-doc/book/pl_book__uslugi/pl_uslugi__pdns.sec Fri Feb 18 17:25:15 2005
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="iso-8859-2"?>
+<section id="uslugi_pdns">
+<title>Power DNS (PDNS) - Serwer Nazw</title>
+<para>
+ <ulink url="http://www.powerdns.com/products/powerdns/index.php">Power
+ DNS</ulink> zwany w dalszej części tego dokumentu jako
+ <productname>PDNS</productname> jest zaawansowanym i bardzo efektywnym
+ serwerem nazw. Jego możliwości współpracy z LDAP lub bazami SQL (Mysql
+ i Postgresql) dają szerokie możliwości tworzenia skryptów lub
+ interface zarządzających. Sam PDNS jest uważany za zdecydowanie
+ bezpieczniejszy niż <productname>Bind</productname>, a także od niego
+ szybszy - zwłaszcza przy większej ilości obsługiwanych domen.
+</para>
+ <section id="uslugi_pdns_wstep">
+ <title>Wstęp</title>
+ <para>
+ W tym rozdziale zostanie omówiona podstawowa
+ instalacja, konfiguracja z bazą
+ <productname>Postgresql</productname>, a także wstępna
+ konfiguracja przykładowej domeny. Oczywiście więcej
+ szczegółów możemy znaleźć w <ulink
+ url="http://www.powerdns.com/support/index.php">oryginalnej
+ dokumentacji</ulink>.
+ </para>
+ </section>
+ <section id="uslugi_pdns_instalacja">
+ <title>Instalacja</title>
+ <para>
+ Instalacja przebiega standardowo za pomocą poldka.
+ </para>
+ <screen>poldek> install pdsn</screen>
+ <para>
+ Do poprawnego działania naszej bazy potrzebujemy także
+ <productname>postgresql</productname> (możemy także
+ wykorzystać mysql lub ldap, a nawet pliki
+ konfiguracyjne Bind-a). Tak więc jeżeli nie mamy
+ Postgresql to instalujemy go i poprawnie
+ konfigurujemy.
+ </para>
+ </section>
+ <section id="uslugi_pdns_psql">
+ <title>Konfiguracja Postgresql dla PDNS</title>
+ <para>
+ Następnym krokiem będzie stworzenie bazy obsługiwanej
+ przez PDNS w Postgresql. W tym celu możemy wykorzystać
+ klienta dostarczanego razem z Postgresql -
+ <productname>psql</productname>.
+ Możemy także do tego celu użyć innych wygodnych
+ narzędzi np. <productname>phpPgAdmin</productname>
+ </para>
+ <para>
+ Najpierw z konta użytkownika uprawnionego do operacji
+ na bazie tworzymy bazę:
+ </para>
+ <screen>$ createdb -U postgres powerdns</screen>
+ <para>
+ Tworzymy także użytkownika dla w/w bazy:
+ </para>
+ <screen>$ createuser -P -U postgres pdns
+Enter password for user "pdns":
+Enter it again:
+Shall the new user be allowed to create databases?
+(y/n) n
+Shall the new user be allowed to create more new
+users? (y/n) n
+CREATE USER</screen>
+ <para>
+ Teraz za pomocą swojego ulubionego klienta Postgresql
+ wykonujemy poniższe polecenia SQL w celu stworzenia szkieletu
+ bazy:
+ </para>
+ <screen>create table domains (
+id SERIAL PRIMARY KEY,
+name VARCHAR(255) NOT NULL,
+master VARCHAR(20) DEFAULT NULL,
+last_check INT DEFAULT NULL,
+type VARCHAR(6) NOT NULL,
+notified_serial INT DEFAULT NULL,
+account VARCHAR(40) DEFAULT NULL
+);
+CREATE UNIQUE INDEX name_index ON domains(name);
+
+CREATE TABLE records (
+id SERIAL PRIMARY KEY,
+domain_id INT DEFAULT NULL,
+name VARCHAR(255) DEFAULT NULL,
+type VARCHAR(6) DEFAULT NULL,
+content VARCHAR(255) DEFAULT NULL,
+ttl INT DEFAULT NULL,
+prio INT DEFAULT NULL,
+change_date INT DEFAULT NULL,
+CONSTRAINT domain_exists
+FOREIGN KEY(domain_id) REFERENCES domains(id)
+ON DELETE CASCADE
+);
+
+CREATE INDEX rec_name_index ON records(name);
+CREATE INDEX nametype_index ON records(name,type);
+CREATE INDEX domain_id ON records(domain_id);
+
+create table supermasters (
+ip VARCHAR(25) NOT NULL,
+nameserver VARCHAR(255) NOT NULL,
+account VARCHAR(40) DEFAULT NULL
+);
+
+GRANT SELECT ON supermasters TO pdns;
+GRANT ALL ON domains TO pdns;
+GRANT ALL ON domains_id_seq TO pdns;
+GRANT ALL ON records TO pdns;
+GRANT ALL ON records_id_seq TO pdns;</screen>
+ </section>
+ <section id="uslugi_pdns_konf">
+ <title>Konfiguracja PDNS</title>
+ <para>
+ W <filename>/etc/pdns/pdns.conf</filename>
+ konfigurujemy działanie programu PDNS. Przykładowa
+ konfiguracja PDNSa współpracującego z bazą Postgresql
+ może wyglądać następująco:
+ </para>
+ <screen>#chroot=/some/where # If set, chroot to this directory for more security
+config-dir=/etc/pdns/ # Location of configuration directory (pdns.conf)
+launch=gpgsql # Launch this backend
+
+#gpgsql-socket=/var/lib/pgsql/postmaster.pid
+gpgsql-dbname=powerdns # Nazwa bazy danych w psql
+gpgsql-user=pdns # Użytkownik bazy w psql
+gpgsql-password=hasło_do_bazy_pdns
+
+module-dir=/usr/lib/pdns # Default directory for modules
+#load-modules= # Load this module - supply absolute or relative path
+#local-address=0.0.0.0 # Local IPv4 address to which we bind
+#local-ipv6=:: # Local IPv6 address to which we bind
+#use-logfile=no # Use a log file or syslog
+#logfile=var/log/pdns.log # Logfile to use
+recursor=IP_ZEWN_DNS # Tu podajemy adres zewn. serwera DNS
+# nameserver
+setgid=djbdns # If set, change group id to this gid for more security
+setuid=pdns # If set, change user id to this uid for more security
+#slave=no # Act as a slave (Ustawiamy na YES w przypadku
+ # pracy serwera PDNS jako SLAVE
+
+socket-dir=/var/run # Where the controlsocket will live
+webserver=yes # Włączenie usługi monitorowania pracy PDNS przez WWW
+webserver-address=10.1.1.1 # Adres IP strony monitorującej pracę PDNS
+webserver-password=hasło_do_strony_monitorującej
+webserver-port=8088 # port strony monitorującej</screen>
+ <para>
+ Krzyżyk "#" na początku oznacza komentarz bądź wyłączenie
+ danej opcji. Oryginalne teksty komentarzy są na tyle czytelne,
+ że tylko niektóre opcje skomentowalismy po polsku.
+ </para>
+ </section>
+ <section id="uslugi_pdns_domeny">
+ <title>Domeny</title>
+ <para>
+ Praktycznie PDNS jest gotowy do pracy. Musimy jeszcze
+ wypełnić treścią bazę - czyli dodać domenę (domeny).
+ Przykładową domenę zaprezentujemy w formie tzw.
+ "dump-a" bazy. Jest to na tyle czytelne, że
+ skomentowane zostaną tylko niektóre aspekty.
+ </para>
+ <screen>--
+-- PostgreSQL database dump
+--
+
+SET client_encoding = 'UNICODE';
+SET check_function_bodies = false;
+SET client_min_messages = warning;
+
+SET search_path = public, pg_catalog;
+
+--
+-- Name: domains_id_seq; Type: SEQUENCE SET; Schema: public; Owner: pdns
+--
+
+SELECT pg_catalog.setval(pg_catalog.pg_get_serial_sequence('domains', 'id'), 1, true);
+
+--
+-- Name: records_id_seq; Type: SEQUENCE SET; Schema: public; Owner: pdns
+--
+
+SELECT pg_catalog.setval(pg_catalog.pg_get_serial_sequence('records', 'id'), 16, true);
+
+--
+-- Data for Name: domains; Type: TABLE DATA; Schema: public; Owner: pdns
+--
+
+INSERT INTO domains VALUES (1, 'foo.com', NULL, NULL, 'NATIVE', NULL, NULL);
+INSERT INTO domains VALUES (2, '1.1.10.in-addr.arpa', NULL, NULL, 'NATIVE', NULL, NULL);
+-- W pierwszym ID podajemy domenę 'foo.com'
+-- W drugim ID definiujemy domenę odwrotną dla danego IP
+
+--
+-- Data for Name: records; Type: TABLE DATA; Schema: public; Owner: pdns
+--
+-- Poniżej zgodnie z określonymi ID definiowane są kolejno strefy
+
+INSERT INTO records VALUES (2, 1, 'localhost.foo.com', 'A', '127.0.0.1', 120, NULL, NULL);
+INSERT INTO records VALUES (3, 1, 'www.foo.com', 'A', '10.1.1.1', 120, NULL, NULL);
+INSERT INTO records VALUES (5, 1, 'dns.foo.com', 'A', '10.1.1.1', 120, NULL, NULL);
+INSERT INTO records VALUES (6, 1, 'ftp.foo.com', 'A', '10.1.1.1', 120, NULL, NULL);
+INSERT INTO records VALUES (7, 1, 'poczta.foo.com', 'A', '10.1.1.1', 120, NULL, NULL);
+INSERT INTO records VALUES (8, 1, 'pop3.foo.com', 'A', '10.1.1.1', 120, NULL, NULL);
+INSERT INTO records VALUES (9, 1, 'smtp.foo.com', 'A', '10.1.1.1', 120, NULL, NULL);
+INSERT INTO records VALUES (10, 1, 'ssh.foo.com', 'A', '10.1.1.1', 120, NULL, NULL);
+INSERT INTO records VALUES (11, 1, 'jabber.foo.com', 'A', '10.1.1.1', 120, NULL, NULL);
+INSERT INTO records VALUES (1, 1, 'foo.com', 'SOA', 'localhost user.foo.com 1', 86400, NULL, NULL);
+INSERT INTO records VALUES (16, 1, 'foo.com', 'TXT', 'Serwer PDNS', 300, NULL, NULL);
+INSERT INTO records VALUES (17, 1, 'foo.com', 'NS', 'ns.foo.com', 300, NULL, NULL);
+INSERT INTO records VALUES (4, 1, 'mail.foo.com', 'A', '10.1.1.1', 120, NULL, NULL);
+INSERT INTO records VALUES (18, 1, 'foo.com', 'MX', 'mail.foo.com', 300, 5, NULL);
+INSERT INTO records VALUES (19, 1, 'foo.com', 'A', '10.1.1.1', 300, 0, NULL);
+
+-- Poniżej definiujemy rekordy SRV dla serwera Jabber
+INSERT INTO records VALUES (12, 1, '_jabber._tcp.jabber.foo.com',
+ 'SRV', '0 5269 foo.com', 300, 10, NULL);
+INSERT INTO records VALUES (13, 1, '_xmpp-server._tcp.jabber.foo.com',
+ 'SRV', '0 5269 foo.com', 300, 10, NULL);
+INSERT INTO records VALUES (14, 1, '_xmpp-client._tcp.jabber.foo.com',
+ 'SRV', '0 5222 foo.com', 300, 10, NULL);
+
+INSERT INTO records VALUES (15, 2, '1.1.1.10.in-addr.arpa', 'PTR', 'foo.com', 86400, NULL, NULL);
+INSERT INTO records VALUES (20, 2, '1.1.10.in-addr.arpa',
+ 'SOA', 'localhost root.localhost', 86400, NULL, NULL);
+INSERT INTO records VALUES (21, 2, '1.1.10.in-addr.arpa', 'NS', 'nc.foo.com', 86400, NULL, NULL);
+
+--
+-- Data for Name: supermasters; Type: TABLE DATA; Schema: public; Owner: pdns
+--
+
+--
+-- PostgreSQL database dump complete
+--</screen>
+ <para>
+ Wszelkie zmiany lub dodawnie nowych domen możemy wykonywać na
+ bazie danych lub wykorzystując do tego odpowiednie skrypty.
+ Teraz możemy uruchomić demona PDNS wykorzystując skrypt:
+ </para>
+ <screen># /etc/init.d/pdns start</screen>
+ <para>
+ Należy pamiętać, że jeżeli wcześniej używalismy BINDa bądź
+ innnego demona do obsługi nazw domenowych, należy go przed
+ uruchomieniem PDNS wyłączyć.
+ </para>
+ <para>
+ Po uruchomieniu serwisu możemy za pomocą przeglądarki http
+ wejść na stronę monitorującą pracę PDNS (odpowiednie opcje
+ dotyczące tej usługi znajdziemy w
+ <filename>/etc/pdns/pdns.conf</filename>). Wywołanie
+ zgodne z przykładowym wpisem w
+ <filename>pdns.conf</filename> to
+ <emphasis>http://10.1.1.1:8088</emphasis>
+ Na stronie tej możemy odnaleźć wiele cennych informacji
+ dotyczących pracy naszego serwera nazw.
+ </para>
+ </section>
+</section>
Więcej informacji o liście dyskusyjnej pld-doc