Portál AbcLinuxu, 24. říjen 2017 04:31

PowerDNS – přívětivý a jednoduchý DNS server

4. 3. 2014 | Max Devaine
Články - PowerDNS – přívětivý a jednoduchý DNS server  

PowerDNS: instalace, konfigurace, webová klikátka, synchronizace s jinými servery a příklad nasazení.

Obsah

PowerDNS

link

PowerDNS (pdns) je dns server, který disponuje spousty backendy, podporuje jak LDAP, tak MySQL, PostgreSQL, SQLite a další. Oproti jiným DNS serverům tak těží z toho, že všechny backendy jsou „nativní“ a nemusejí se nijak „přikompilovávat“, jako to má třeba Bind, který ani v současné verzi nepodporuje LDAP, MySQL a jiné backendy a vše se řeší externími projekty jako např. LDAP sdb back-end for BIND 9 nebo MySQL BIND SDB Driver.

Výkonově je na tom PowerDNS trochu hůře, viz např. tento benchmark DNS serverů. Existuje však spousta nasazení, kde jsou takovéto výkonové rozdíly naprosto nepodstatné a lidé dávají přednost jednoduchosti a přívětivosti. Největší oblibu tak nejspíše získal PowerDNS díky MySQL backendu a webovému klikátku PowerAdmin. Toto byly také důvody, proč se tento server nasadil i u nás ve firmě.

PowerDNS prošel za dlouhá léta spoustou překážek a získal si i nemilé kritiky a odpůrce. Dovolím si tvrdit, že v současné verzi je už natolik vyspělým projektem, že se dokáže rovnat s ostatními a kritikům dochází argumenty.

Instalace PDNS + PowerAdmin

link

Všechny instalační kroky a příklady budeme provádět na 64bit Debian/GNU Linuxu Wheezy. Schválně budeme přeskakovat automatizované kroky v rámci Debianu, aby byl postup co nejuniversálnější.

Příprava

link

Nainstalujeme certifikáty CA, aby nám například wget ověřoval certifikáty u https adres, dále pak MySQL, kde bude mít pdns DNS záznamy, a diagnostické nástroje pro DNS:

apt-get install ca-certificates mysql-server-5.5 dnsutils

Nezapomene nastavit výchozí komunikaci databáze v UTF-8:

nano /etc/mysql/my.cnf
...
[client]
...
default-character-set=utf8
...
[mysqld]
...
character-set-server = utf8
collation-server = utf8_general_ci
...
[mysql]
...
default-character-set=utf8
...

A následně restart databáze:

/etc/init.d/mysql restart

PowerDNS

link

Nainstalujeme si PowerDNS, při instalaci na dotaz, zda chceme provést konfiguraci pomocí dbconfig-common zvolíme, že nikoli:
(PowerDNS může běžet jen v režimu rekurzoru (přeposílače dotazů), v takovém případě se instaluje jen balíček „pdns-recursor“)

apt-get install pdns-server pdns-backend-mysql

Vytvoříme si databázi a uživatele pro PowerDNS:

mysql -u root -p
mysql> create database pdns;
mysql> GRANT ALL ON pdns.* TO 'pdns'@'localhost' IDENTIFIED BY 'fds2156sdfa_fsda656+fsdaf_fgsda6das5fdsa6fsda_Grwe89';
mysql> flush privileges;
mysql> quit

Naimportujeme databázovou strukturu:

wget -c http://wiki.powerdns.com/trac/export/3178/trunk/pdns/pdns/no-dnssec.schema.mysql.sql
mysql -u root -p pdns < no-dnssec.schema.mysql.sql

Nastavíme konfigurační soubor pro přístup do DB:

nano /etc/powerdns/pdns.d/pdns.local.gmysql
# MySQL Configuration
#
# Launch gmysql backend
launch=gmysql

# gmysql parameters
gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=pdns
gmysql-user=pdns
gmysql-password=fds2156sdfa_fsda656+fsdaf_fgsda6das5fdsa6fsda_Grwe89
gmysql-dnssec=no
# gmysql-socket=

Zakomentujeme duplicitní bind:

nano /etc/powerdns/pdns.d/pdns.simplebind
#launch=bind
#bind-config=/etc/powerdns/bindbackend.conf

A provedeme restart služby:

/etc/init.d/pdns restart

V logu bychom měli vidět, že vše běží OK:

cat /var/log/daemon.log
...
Listening on controlsocket in '/var/run/pdns.controlsocket'
Guardian is launching an instance
Reading random entropy from '/dev/urandom'
This is module gmysqlbackend.so reporting
This is a guarded instance of pdns
It is advised to bind to explicit addresses with the --local-address option
UDP server bound to 0.0.0.0:53
TCP server bound to 0.0.0.0:53
PowerDNS 3.1 (C) 2001-2012 PowerDNS.COM BV (Jan 21 2014, 23:46:53, gcc 4.7.2) starting up
PowerDNS comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to redistribute it according to the terms of the GPL version 2.
Creating backend connection for TCP
gmysql Connection successful
gmysql Connection successful
About to create 3 backend threads for UDP
gmysql Connection successful
gmysql Connection successful
gmysql Connection successful
gmysql Connection successful
gmysql Connection successful
gmysql Connection successful
Done launching threads, ready to distribute questions

DNSSEC

link

Kdo by chtěl využívat DNSSEC, tak stačí, aby si takto upravil databázové schéma:

wget -c http://wiki.powerdns.com/trac/export/3178/trunk/pdns/pdns/dnssec.schema.mysql.sql
mysql -u root -p pdns < dnssec.schema.mysql.sql

A následně povolil DNSSEC v PowerDNS:

nano /etc/powerdns/pdns.d/pdns.local.gmysql
# MySQL Configuration
#
# Launch gmysql backend
launch=gmysql

# gmysql parameters
gmysql-host=localhost
gmysql-port=3306
gmysql-dbname=pdns
gmysql-user=pdns
gmysql-password=fds2156sdfa_fsda656+fsdaf_fgsda6das5fdsa6fsda_Grwe89
gmysql-dnssec=yes
# gmysql-socket=

A samozřejmě restart služby:

/etc/init.d/pdns restart

PowerAdmin

link

Toto webové klikátko v PHP naladíme velmi jednoduše (ukázka přes Apache httpd):

apt-get install apache2-mpm-prefork libapache2-mod-php5 php5 php5-common php5-curl php5-dev php5-gd php-pear php5-imap php5-mcrypt php5-ming php5-mysql php5-xmlrpc gettext php-db php-mdb2 php-mdb2-driver-mysql

Stažení a rozbalení PowerAdmin:

wget -c https://github.com/downloads/poweradmin/poweradmin/poweradmin-2.1.6.tgz
tar xvf poweradmin-2.1.6.tgz
mv poweradmin-2.1.6 /var/www/poweradmin

Spustíme webovou instalaci na adrese „http://ip_naseho_serveru/poweradmin/install/“:

Instalace PowerDNS Instalace PowerDNS Instalace PowerDNS Instalace PowerDNS Instalace PowerDNS

Připojíme se do db a nastavíme příslušné oprávnění pro uživatele PowerAdmin:

mysql -u root -p
mysql> GRANT SELECT, INSERT, UPDATE, DELETE ON pdns.* TO 'power_admin'@'localhost' IDENTIFIED BY 'fdsaf5as6fa56g465a4f56asd4f_tre54fwe489fweq_gerw652reg6re6greg';
mysql> flush privileges;
mysql> quit

a pokračujeme v instalaci:

Instalace PowerDNS

Standardně jsme vše dělali jako root a apache běží pod uživatelem „www-data“, tento uživatel tedy nemá práva pro změny v adresáři „/var/www/poweradmin/“ a nemůže tak vytvořit konfigurační soubor. To ovšem není nic, co by nás muselo trápit, ba naopak je to dobře a konfigurační soubor si vytvoříme sami:

nano /var/www/poweradmin/inc/config.inc.php
<?php

$db_host		= '127.0.0.1';
$db_user		= 'power_admin';
$db_pass		= 'fdsaf5as6fa56g465a4f56asd4f_tre54fwe489fweq_gerw652reg6re6greg';
$db_name		= 'pdns';
$db_port		= '3306';
$db_type		= 'mysql';
$db_layer		= 'PDO';

$session_key		= '[t=QN0TygKkL9aNStQm9R8-uZ!g+-xi&zz+tj#gq2@-kTC';

$iface_lang		= 'en_EN';

$dns_hostmaster		= 'hostmaster.devaine.cz';
$dns_ns1		= 'ns1.devaine.cz';
$dns_ns2		= 'ns2.devaine.cz';

?>

Instalace PowerDNS

V posledním kroku tedy smažeme instalační adresář:

rm -rf /var/www/poweradmin/install

A už bychom se měli dostat do webového rozhraní „http://ip_naseho_serveru/poweradmin/“ jako uživatel „admin“ s heslem „supertajneheslo“:

Instalace PowerDNS Instalace PowerDNS

Další webová rozhraní

link

Existuje spousta dalších webových klikátek. Mezi ty zdánlivě lepší můžeme jmenovat tyto:

Bezpečnost klikátek

link

Hlavně bych rád upozornil, že není dobré umožňovat přístup k takovým klikátkům všem, pro všechny IP apod., hlavně pokud je jejich vývojový cyklus stylem „nějak to funguje, jdu na další projekt“.

Nasazení ve firmě v lokální síti

link

Jedním z příkladů nasazení může být ve firmě v lokální síti. Na takovém DNS serveru pak budou povytvářeny domény, jejichž součástí budou názvy/adresy serverů ve firmě (a nejen serverů). Zbylé požadavky (na domény, které nebudou povytvářeny na dns serveru) se pak většinou přeposílají na nějaký nadřazený dns server (třeba na nějaký přidělený poskytovatelem připojení k internetu).

Pokud má firma i nějaké pobočky, není problém replikovat (provádět transfer DNS zón) na servery na pobočkách, které by v takovém případě byly slave servery. Replikace funguje bez problémů i s Windows Servery (ozkoušeno na 2003/2008/2012).

V takovém případě běží PowerDNS v master režimu jako autoritativní DNS server. Dotazy na domény, které nemá delegovány (nejsou spravovány pdns), se pak mohou přeposílat na jiný server. V takovém případě pak bude základní konfigurační soubor vypadat takto :

nano /etc/powerdns/pdns.conf
# adresy slave serveru, na ktere budou replikovany domenove zony :
allow-axfr-ips=192.168.50.1 192.168.67.200 192.168.194.214

# z jakych adres bude prijimat dns pozadavky (stanice v lokalni siti)
allow-recursion=127.0.0.1 192.168.0.0/16

# konfiguracni adresar powerdns :
config-dir=/etc/powerdns

# spusti jako daemon :
daemon=yes

# nevypinat axfr (povolit transfét dns zón)
disable-axfr=no

# neposlouchat na TCP (v rozporu s RFC)
# disable-tcp=yes

# pouzivat striktni RFC (bude pomalejsi, ale nutne pro starsi dns klienty)
#strict-rfc-axfrs=no

# posilat pouze AXFR NOTIFY pro tyto IP adresy / site
#only-notify=

# pouzijeme strazce (monitoruje pdns proces a v pripade nutnosti jej restartuje)
guardian=yes

# pouzit jako backend mysql :
launch=gmysql

# nejdriv se podivat do lokalni databaze, nez se pristoupi na rekurzi :
lazy-recursion=yes

# poslouchej na vsech adresach serveru :
local-address=0.0.0.0

# naslouchat standardne na portu 53
local-port=53

# logovat do souboru (v opacnem pripade se loguje do syslog serveru)
#use-logfile=yes

# logovat do souboru :
#logfile=/var/log/pdns.log

# neloguje informativni udalosti (muze zvysit vykon)
#log-dns-details=no

# zapne logovani vsech dotazu (zapinat jen pro debugovani)
#log-dns-queries=no

# podrobnost logovani - cim vetsi, tim podrobnejsi (nedoporucuje se nastavovat vic jak 3)
#loglevel=1

# bezi v rezimu master :
master=yes

# bezi v rezimu slave :
#slave=no

# adresar s modulama :
module-dir=/usr/lib/powerdns

# dns server, na ktery budou preposilany pozadavky 
recursor=8.8.8.8

# skupina, pod kterym pobezi powerdns :
setgid=pdns

# uzivatel, pod kterym pobezi powerdns :
setuid=pdns

# kde se vytvari socket :
socket-dir=/var/run

# webovy server, kde bezi statsistiky dotazu
webserver=no

# adresa, na ktere ma webserver poslouchat
#webserver-address=

# heslo pro prihlaseni na webserver (uzivatel je : admin)
#webserver-password=

# a samozrejme port webserveru, na kterem bezi :
#webserver-port=8081

# co se ma vratit na dotaz ohledne verze serveru :
# dig chaos txt version.bind @ns1.dnserver.local
# anonymous|powerdns|full|custom
version-string=powerdns

# adresar s dalsima konfiguracnima souborama :
include=/etc/powerdns/pdns.d

Více o volbách viz dokumentace: Index of all Authoritative Server settings.

Master vs. SuperMaster

link

Když běží server v režimu „master“ a potřebujeme dělat transfer zón na nějaký „slave“, tak na onom slave serveru musíme napsat všechny domény, které chceme replikovat. Pokud chceme replikovat celý master server, tak musíme napsat/povytvářet všechny domény v režimu „slave“. Pokud někdy v budoucnu přidáme na master server nějakou doménu, tak jí musíme přidat i na slave server. SuperMaster toto řeší. Díky této funkci lze říci, že se má replikovat celý DNS server včetně všech domén.

Základem tedy je, aby první server (ns1.devaine.cz – 192.168.200.102) běžel v režimu „master“ a měl povolený transfér zón + definovanou IP adresu serveru, který má povoleno si zóny tahat (192.168.200.103). Druhý server musí běžet v režimu „slave“ (ns2.devaine.cz – 192.168.200.103) a v klikátku mu pak jen přidáme „supermaster“ server, kde bude adresa serveru „192.168.200.102“ a hostname „ns2.devaine.cz“.

U domény pak musí být NS záznam, že i onen slave server je autoritativní. Příklad nastavení „master“ serveru:

Master server

A slave serveru:

Slave server

Master – Master

link

V lokální síti je ještě jedna trochu nečistá možnost. Nemít master a slave, ale mít něco jako master – master. Jednoduše řečeno, dva stejně nastavené servery a jen dělat automatický export/import db v určitých intervalech (export db nechávat pak na druhém serveru, což může sloužit jako backup/archiv nastavení). Když hlavní server odpadne na delší dobu, tak není problém, jelikož nám běží sekundární, u kterého je vše totožné, takže si v klidu přidáváme a upravujeme záznamy jako by se nechumelilo. Není to nejčistší, ale možnost to je.

Statistika serveru

link

Jak je možné vidět v příkladu konfiguračního souboru výše, tak lze na PowerDNS zapnout webserver. Na tomto webserveru se po přihlášení zobrazují statistiky dotazů a další věci. Pro povolení této volby stačí jen malá úprava:

...
# webovy server, kde bezi statsistiky dotazu
webserver=yes

# adresa, na ktere ma webserver poslouchat
webserver-address=192.168.100.1

# heslo pro prihlaseni na webserver (uzivatel je : admin)
webserver-password=tajneheslo

# a samozrejme port webserveru, na kterem bezi :
webserver-port=8081
...

Je nutný reload služby:

/etc/init.d/pdns reload

První část stránky se statistikami pak vypadá takto:

PowerDNS a statistiky

Závěr

link

PowerDNS má mnoho možností (některé jsme zmínili, jiné najdeme v dokumentaci), přehledné nastavení a prozatím s ním mám velmi kladné několikaleté zkušenosti. A jak jste na tom vy?

Odkazy a zdroje

PowerDNS
PowerDNS: server odolný proti spoofingu
PowerDNS 3.1 On Debian 7 (Wheezy)
Monitoring PowerDNS via the internal web server

Další články z této rubriky

Syncthing
Twibright Registrator: Instalace, odinstalace, test, základní použití
Twibright Registrator: fotografie v šeru bez stativu 2
Twibright Registrator: fotografie v šeru bez stativu 1
Filtrujeme čtivé texty z Projektu Gutenberg 9

Diskuse k tomuto článku

4.3.2014 00:28 Radek Hladik | skóre: 20
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Odpovědět | Sbalit | Link | Blokovat | Admin
PowerDNS má několik dalších výhod. Například bezproblémově fungující BIND modul. Pokud někde máte BIND a chcete se ho zbavit, je to s PowerDNS velice snadné. Stejně tak, pokud z nějakého důvodu chcete mít server pro velmi málo domén, je jednoduché jim udělat zone fily a použít BIND modul.

Další zajímavá možnost je poměrně jednoduché psaní vlastních modulů. Kdysi jsem zkoušel napsat modul pro tinydns "zónové soubory" a udělal jsem to v PHP. A kupodivu to bylo funkční i použitelné (výkonově). Viz odkaz, je tam i stručný popis výkonnostních parametrů.

4.3.2014 01:09 alkoholik | skóre: 35 | blog: Alkoholik
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Odpovědět | Sbalit | Link | Blokovat | Admin
Njn, Paul Vixie kdysi trosku drzkoval, ze ho provozujeme na jedne root domene misto Bindu.
4.3.2014 08:58 alkoholik | skóre: 35 | blog: Alkoholik
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Samozrejme TLD domene..
4.3.2014 09:01 Patvor
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Odpovědět | Sbalit | Link | Blokovat | Admin
Proč "provedeme restart"? Zrestartujeme nebo restartujeme, podle kontextu.

Děkuji za článek, je dobře promyšlený a strukturovaný.
pavlix avatar 5.3.2014 11:51 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Podle mě je to v pořádku.
5.3.2014 18:25 petr_p | skóre: 59 | blog: pb
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Požádáme o provedení úkonů za účelem vyvolání restartu :)
4.3.2014 09:02 Marv-CZ | skóre: 21
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Odpovědět | Sbalit | Link | Blokovat | Admin

No zrovna ten modul pro LDAP je psaný člověkem mimo vývoj PowerDNS. Respektive byl, protože už ho udržovat přestal a nikde se o něj nestará a nefungují v něm nové věci, jako DNSSEC.

4.3.2014 09:17 j
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Odpovědět | Sbalit | Link | Blokovat | Admin
Po svych velmi "milych" zkusenostech s rozjeblym mysql ... bych vzivote nepouzival zadnou kritickou aplikaci, ktera zrovna tuhle db pouziva ... zlaty textovy soubory. Stejne jde jen o to, aby se to pri startu nacetlo do pameti ...
Heron avatar 4.3.2014 11:46 Heron | skóre: 51 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Po svych velmi "milych" zkusenostech s rozjeblym mysql

+1

Aktuálně tu mám server s více než stovkou rozbitých DB. Serveru se nikdy nic nešťastného nestalo, fs je v pořádku. MySQL se rozjebalo prostě za provozu.

4.3.2014 19:11 PetrHL | skóre: 16 | blog: petr_h | Neratovice
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Samo od sebe skoro nikdy nic. Ja to resil nedavno. Muzete sem hodit, co to psalo do logu? Docela by mne to zajimalo.
"Do, or do not. There is no 'try.'" -- Jedi Master Yoda | CQRLOG | HamQTH
Heron avatar 5.3.2014 10:14 Heron | skóre: 51 | blog: root_at_heron | Olomouc
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server

Není to můj server a nemám od zákazníka právo zveřejňovat cokoliv.

Ale píše to klasickou chybu:

/usr/libexec/mysqld: Table './db/table' is marked as crashed and last (automatic?) repair failed

Samozřejmně opravit nejde, nejde ani zjistit jakékoliv informace o dané tabulce.

Mám podezření na to, že to vzniklo tím, když začal řádit OOMK, ale nechce se mi věřit, že by db bylo možno nakopnout obyč. killem. Pokud ano, tak je to jen další do řady důvodů, proč mi mysql už několik let nesmí přes práh.

9.3.2014 11:43 Dundee5 | skóre: 16 | blog: Dundee5 | Praha
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Tak ono dost záleží na tom, jestli je ta tabulka MyISAM (neručím za nic, ale jsem rychlý) nebo InnoDB (ručím za konzistenci). Když si někdo vybere MyISAM a čeká od ní naprostou spolehlivost a dodržování ACID, tak se pak nemůže divit, že se to jednou rozbije...
Kdo se vzdá svobody, aby získal jistotu, ztratí nakonec obojí. --Benjamin Franklin
4.3.2014 15:22 Miloslav Ponkrác
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Ano, to je bohužel důsledek zastaralých verzí v Linux balíčích. Plus aktivita balíčkovačů v linux distribucích.

Když převzal MySQL Sun, začaly se množit chyby v MySQL, na které Sun zvysoka kálel. Zejména v InnoDb. Sun dal přesný plán, co kdy musí vyjít v jakém termínu za feature, a programátoři to prostě museli vydat.

Sun nebyl schopen vydat ani bezchybnou dokumentaci, běžně jsem od něj stahoval manuály, kde chyběly stránky či stránky hlásily chyby. Zejména CHM soubory byly katastrofální.

Co převzal MySQL Oracle, tak se MySQL stala velmi stabilní a dobrou databází. Všechno dali do pořádku. Ale linuxové distribuce mají běžně ještě starší, rozbité verze, často i roky staré. Pak není divu.

Kromě toho některé chyby v bugzille se projevují jen u přebalených binárek balíčkovači linuxových distribucí a nikdy v originálních balíččích. Představa, že balíčkovači dokáží správně a bez chyby odladit a zkompilovat všechny programy v distribuci se statisticky blíží nule.

Pokud potřebujete kritické nasazení, nechávají se databázové tabulky zásadně v MyISAM.

Ale hlavní co chci říci, že mnoho linuxových distribucí má v balíččích starší chybné verze, někdy dokonce navíc i chybně sestavené.

Používám originální soubory od Oracle, nebo MariaDb a v posledních verzích nemám problém.

Hlavní problém MySQL byl Sun a linuxoví balíčkovači.
4.3.2014 19:38 j
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
"Pokud potřebujete kritické nasazení, nechávají se databázové tabulky zásadně v MyISAM."

lol lol lol ....

Ano, netransakcni prostredi je pro jakykoli nasazeni databaze to prave orechove ...
Josef Kufner avatar 4.3.2014 21:46 Josef Kufner | skóre: 67
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Transakce jsou přeceňované. Race conditions se lze vyhnout i jinak a s mírným narušováním integrity dat lze počítat. V jednodušších případech stačí vhodně seřadit dotazy a počítat s tím, že někde může něco chybět.
Hello world ! Segmentation fault (core dumped)
4.3.2014 23:10 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
V jednodušších případech stačí vhodně seřadit dotazy a počítat s tím, že někde může něco chybět.

Schválně jak se na tenhle přístup bude dívat berňák, když takhle budeš dělat účetnictví ;-)
Quando omni flunkus moritati
5.3.2014 09:29 sid
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Takze ked vam nabuduce banka miesto 1000 eur da 50 a potesi vas informaciou ze doslo k miernemu naruseniu integrity dat tak poviete ok? Samozrejme transakcie nie su vsade treba a nie vzdy treba dajme tomu najvyssi level ale takto to zhrnut je dost mimo.
Josef Kufner avatar 5.3.2014 12:09 Josef Kufner | skóre: 67
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
To ale znamená, že tam mají chybu. To s nepoužitím transakcí nijak nesouvisí. Pokud se transakce nepoužijí, je potřeba řešit race-conditions a podobné věci jinak, ne je neřešit vůbec. Nikde jsem netvrdil, že stačí smazat begin a commit a tvářit se, že to funguje.
Hello world ! Segmentation fault (core dumped)
pavlix avatar 5.3.2014 12:24 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Buďme konkrétní, pak je potřeba ta data zamykat, což s sebou nese samozřejmě své výhody i nevýhody.
5.3.2014 19:07 j
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Technicky si muzes transakce realizovat i v aplikaci ... coz mi prijde prinejmensim hodne blbe.

Udelas to jednoduse trebas tak, ze posles do DB sekvenci insert/update ... a pak selectama overis, ze tam je to, co si tam poslal. Jinak receno, proc delat veci jednoduse, kdyz to jde slozite.
pavlix avatar 5.3.2014 11:52 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Transakce jsou přeceňované.
Spíš bych řekl, že hrubě podceňované.
5.3.2014 19:11 j
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Mnoho dodatelu "profi" aplikaci vubec netusi, co to transakce je ... mam tu cest zcela osobne ...
pavlix avatar 5.3.2014 21:58 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Aneb...

To mi dělal kamarád. A von je profík, von tomu fakt rozumí, von má na to dokonce i firmu.
4.3.2014 09:34 iwk
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Odpovědět | Sbalit | Link | Blokovat | Admin
Superslave sa mi zdala byt pekna myslienka. Skusal som to pouzivat (cez 700 domen). Ale mal som len problemy. Ak mastri zmazala nejaka domena, slave nevedel, ze je uz zmazana a stale sa pokusal o transfer....Je to nejak doriesene? A ako backend som mal sqlite3 to sa nejak po par dnoch rozbilo. Netusim preco, mne sa podla logu zdalo ze powerdns chcel zapisovat/zapisal viac domen naraz, asi tam bol nejaky problem s lockovanim. Nemal som cas to riesit, vratil som sa k bindu + skriptu na generovanie konfigu slave domen z mastra, kde mi vsetko fungovalo...

4.3.2014 09:57 Filip Jirsák
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Odpovědět | Sbalit | Link | Blokovat | Admin
Na „master – master“ konfiguraci není nic nečistého. Master/slave není věc DNS protokolu, ale implementace v Bindu, od kterého to přebírají některé další servery. Třeba djbdns ale tohle neřeší. Tam je prostě sada autoritativních serverů, a jakým způsobem se mezi nimi replikují data, to není starost djbdns. Mně osobně se tohle řešení líbí víc, protože pro replikaci dat máme specializované protokoly (rsync pro textové soubory, replikace SQL databází), a není potřeba to znovu řešit v DNS serveru.
4.3.2014 10:59 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Mně osobně se tohle řešení líbí víc, protože pro replikaci dat máme specializované protokoly (rsync pro textové soubory, replikace SQL databází), a není potřeba to znovu řešit v DNS serveru.

Do kamene tesat.

DJB to popisuje na svém webu, http://cr.yp.to/djbdns/tcp.html, What are zone transfers?

Poslední věta - "By combining all these tools, you can finally approach the functionality of a trivial rsync script. Wow." - by byla k smíchu, kdyby to nebylo k pláči.
Quando omni flunkus moritati
4.3.2014 13:12 Ondřej Surý | skóre: 14
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Takže pro každou slave zónu, kterou budu chtít hostit na svém serveru mám nastavit rsync daemona? Nebo ssh uživatele? Nebo snad replikaci mysql? To moc pěkně škáluje... zvlášť, když překročíte hranice jednoho zdroje dat (tj. ve chvíli, kdy máte nějaké zákazníky).

Taky už úplně vidím, jak v rámci rsync přenosu zajišťujete, že obsah zóny je validní.

Jo, a doporučuji nahlédnout do RFC1034, než budete příště tak autoritativně tvrdit, že primary-secondary (neboli master-slave) není součást protokolu.
Nehledejte zlý úmysl tam, kde je dostatečným vysvětlením hloupost.
4.3.2014 17:23 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
To, že něco neumíte, neznamená, že to nejde.
Takže pro každou slave zónu, kterou budu chtít hostit na svém serveru mám nastavit rsync daemona? Nebo ssh uživatele?
Jasně, asi by to šlo. Ale mnohem přičetnější bude dělat rsync celého adresáře, ve kterém jsou zónové soubory uloženy. Nebo u zmíněného djbdns přenesete jenom jeden soubor, ve kterém jsou všechny zóny.
Nebo snad replikaci mysql?
Na replikaci databáze je špatné co? Přenáší to (jenom) změny, děje se tak téměř v reálném čase, nevýhody nevidím.
To moc pěkně škáluje... zvlášť, když překročíte hranice jednoho zdroje dat (tj. ve chvíli, kdy máte nějaké zákazníky).
Jo, škáluje to docela pěkně, děkuju za optání. A vážně - jak souvisí počet zákazníků a zdrojů dat s tím, jak se do nameserveru ta data krmí?
Jo, a doporučuji nahlédnout do RFC1034, než budete příště tak autoritativně tvrdit, že primary-secondary (neboli master-slave) není součást protokolu.
Doporučuji pořádně číst. Příspěvek nad Vámi neříká nic o tom, že primary-secondary není součást protokolu. To akorát vy jste si tady udělal logickou spojku primary-secondary <=> master-slave servery. Jenže tahle spojka je - hádám - založená na nějakém předpokladu, který máte naučený z Bindu.

Když budu mít 2 master servery a nakrmím je stejnými - důraz na slovo stejnými - daty, tak je výsledek nerozpoznatelný* od stavu, kdy budu dělat zónové přenosy pomocí [AI]XFR.

* rozhodně pro účely této diskuze.
Quando omni flunkus moritati
4.3.2014 18:36 Ondřej Surý | skóre: 14
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Teď si představte, že jste slave server a těch zákazníků máte 100k-1000m. Chtěl bych vidět ten setup, kde jedete přes rsync nebo replikovanou databázi...

Kromě toho jste vymazal tu podstatnou část o validaci příchozích dat... hmm...

[AI]XFR má v DNS světě své místo, a nezmění na tom nic ani to, že se djb rozhodl.

Možná by pomohlo[*], kdybyste si to RFC1034 otevřel a trochu se do něj začetl, než mi začnete podsouvat Vaše myšlenky a domněnky.
* rozhodně pro účely této diskuze.
Nehledejte zlý úmysl tam, kde je dostatečným vysvětlením hloupost.
4.3.2014 19:14 Filip Jirsák
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Já si tedy bezpečnou synchronizaci přes rsync dovedu představit mnohem snáz, než bezpečnou synchronizaci přes DNS. Validace příchozích dat se musí dělat v každém případě. Transfer zóny má dnes v DNS své místo, protože ho chtě nechtě každý musí implementovat. To ale ještě neznamená, že je to nejlepší řešení, a že to povinně musí používat každý, kdo potřebuje mít více autoritativních serverů.

RFC1034 říká, že transfer zóny je preferovaný způsob synchronizace, ale neříká, že je jediný. A také (podle mne záměrně) používá terminologii primary/secondary, tedy server, na kterém je změna provedena jako první, a servery, kde je změna provedena až jako druhá v pořadí. To je přeci jenom trochu něco jiného, než master/slave - u primary/secondary je třeba možné každou změnu provést na jiném serveru.

Těch 1000m, zákazníků, to opravdu byla myšlena miliarda? To je největší operátor v galaxii, ne?
4.3.2014 23:12 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
[AI]XFR má v DNS světě své místo
Jo, to je pravda, vynalézání šišatého kola bohužel lidem prochází poměrně často.
Možná by pomohlo[*], kdybyste si to RFC1034 otevřel a trochu se do něj začetl, než mi začnete podsouvat Vaše myšlenky a domněnky.

Možná by pomohlo, kdybyste mluvil konkrétně.
Quando omni flunkus moritati
4.3.2014 19:47 j
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Boze ....

Vis milej zlatej ... kdybys mel aspon potuchy jak DNS funguje, tak bys trebas zjistil, ze jeden DNS server muze klidne obsluhovat desitky tisic domen desitek tisic zakazniku. Ti si chteji trebas replikovat SVUJ zaznam na nejake SVE servery.

Je pak neobycejne efektivni a povznasejici cinnost konfigurovat extra protokoly ... kazdemu userovi extra... misto zapisu jedne IP adresy (kterou si navic muze zapsat sam klient) do konfigurace.

Navic zcela zjevne vubec netusis ... ze ... v pripade DNS transferu muze ten prenos vyvolat jak sekundar tak primar. Fakt chci videt, jak na tisicich serverech konfigurujes rsync ... lol, nebo jeste hur ... replikaci databazi. No asi proto to takhle nikdo normalni nepouziva.
4.3.2014 23:15 trekker.dk | skóre: 71
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Víš, milej anonymní, víš hov**.
Quando omni flunkus moritati
5.3.2014 19:14 j
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Jo, to je argument ... a proto 100% DNS serveru pouziva rsync pripade replikaci SQL...
pavlix avatar 5.3.2014 11:59 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
FreeIPA na master-master používá LDAP a DNS servery stojí nad tím a o replikaci se nemusí starat.
4.3.2014 10:14 Ondřej Surý | skóre: 14
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Odpovědět | Sbalit | Link | Blokovat | Admin
Moje osobní zkušenost s PowerDNS jako slave serverem (s BIND backendem) byla, že se zónový soubor po pár hodinách až dnech rozsynchronizoval a musel se udělat znovu bootstrap. Takže to šlo hodně rychle pryč.
Nehledejte zlý úmysl tam, kde je dostatečným vysvětlením hloupost.
the.max avatar 5.3.2014 07:36 the.max | skóre: 46 | blog: Davidovo smetiště | Bílina
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
Odpovědět | Sbalit | Link | Blokovat | Admin
Škoda, že v článku není šířeji rozebrána problematika DNSSEC na PDNS, ale jinak dobré, Sám PDNS používám už dlouhé roky.
KERNEL ULTRAS Fan Team || Sabaton - nejlepší učitel dějepisu || Gentoo - dokud nás systemd nerozdělí.
pavlix avatar 5.3.2014 11:57 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: PowerDNS – přívětivý a jednoduchý DNS server
A zvlášť problematika výkonu s těmito všemu vlastnostmi zapnutými. Řešli jsem teď toto téma jak s vývojáři BINDu, tak s vývojáři KnotDNS. Osobně sice nemám vysoké potřeby co do výkonu, ale PowerDNS bych si nenasadil z principu. Chci používat věci, které škálují natolik, abych je mohl dále doporučovat a nasazovat.

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.