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