Power DNS na bazie MySQL + panel do zarządzania DNS'ami na serwerze poprzez panel PDNS-Admin na demonie httpd: Apache2. PDNS-Admin umożliwia zarządzanie serwerem Power DNS oraz tworzenie użytkowników, którzy mogą trzymać swoje strefy na naszym DNSie. Takie rozwiązanie może być zastosowane, gdy chcemy się podzielić swoim serwerem DNS ze znajomymi. Kilku znajomych z takim rozwiązaniem i mamy w miarę stabilne DNS'y naszych domen.
poldek:/all-avail> install mysql mysql-client mysql-libs pdns pdns-backend-gmysql bind-utils apache apache-mod_dir apache-mod_php php-mysql php-xml php-xmlreader php-xmlwriter php-dom php-gd php-gettext php-iconv php-mbstring php-mcrypt php-openssl php-readline php-session php-spl
Log instalacji dostępny tutaj dla porównania w razie błędów link.
Init bazy danych:
$ /etc/init.d/mysql init
Initializing cluster /var/lib/mysql................................
Installing MySQL system tables for /var/lib/mysql/mysqldb/db.......[ ZROBIONE ]
...
Filling help tables................................................[ ZROBIONE ]
$ /etc/init.d/mysql start
Uruchamianie usługi MySQL /var/lib/mysql...........................[ ZAJĘTY ]
Waiting for MySQL to start.........................................[ ZROBIONE ]
$ echo "update mysql.user set password=password('naszehaslo_mysql') where user='mysql'; FLUSH PRIVILEGES;" | mysql -u mysql -S /var/lib/mysql/mysqldb/mysql.sock
$ echo "update mysql.user set password=password('naszetajnehaslo_mysqladmin') where user='mysql_sysadmin'; FLUSH PRIVILEGES;" | mysql -p -u mysql -S /var/lib/mysql/mysqldb/mysql.sock
Przy resetowaniu hasła dla mysql_sysadmin poprosi nas o hasło. Podajemy hasło: naszehaslo_mysql - czyli te, które podaliśmy dla użytkownika mysql.
Podstawowa konfiguracja bazy:
Zatrzymujemy bazę:
$ /etc/init.d/mysql stop Zatrzymywanie usługi MySQL /var/lib/mysql..........................[ ZROBIONE ]
Ulubionym edytorem edytujemy plik: /var/lib/mysql/mysqld.conf - zmieniamy w konfigu:
character-set-server=utf8 collation-server=utf8_general_ci ;skip-networking bind-address=127.0.0.1 language = polish [mysqladmin] user = mysql_sysadmin password = naszetajnehaslo_mysqladmin
Uruchamiamy bazę:
$ /etc/init.d/mysql start Uruchamianie usługi MySQL /var/lib/mysql...........................[ ZROBIONE ]
Dodajemy bazę danych dla Power DNS'a:
$ mysql -p -u mysql Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.1.45-log PLD Linux Distribution MySQL RPM Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql> CREATE USER 'pdns'@'localhost' IDENTIFIED BY 'haslo_do_bazy'; Query OK, 0 rows affected (0.00 sec) mysql> CREATE DATABASE pdns; Query OK, 1 row affected (0.00 sec) mysql> GRANT ALL PRIVILEGES ON pdns.* TO pdns@localhost; Query OK, 0 rows affected (0.00 sec)
Zapisujemy do pliku /root/pdns.sql:
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 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;
Tworzymy strukturę bazy:
$ mysql -p -u pdns pdns < /root/pdns.sql Enter password:
Konfigurujemy Power DNS'a:
Edytujemy ulubionym edytorem plik: /etc/pdns/pdns.conf - upewniamy się, aby te opcje były ustawione:
launch=gmysql #bind-example-zones slave=yes log-dns-details=yes log-failed-updates=yes logging-facility=0 loglevel=4 query-logging=no use-logfile=yes
Logi Power DNS'a:
$ mkdir /var/log/pdns $ chmod 750 /var/log/pdns $ chown root:logs /var/log/pdns
Konfigurujemy Syslog-ng pod DNS'a:
Edytujemy ulubionym edytorem plik: /etc/syslog-ng/syslog-ng.conf - na końcu dopisujemy:
filter proc_pdns { program("^pdns$"); };
destination d_pdns_info { file("/var/log/pdns/pdns.info"); };
destination d_pdns_warn { file("/var/log/pdns/pdns.warn"); };
destination d_pdns_err { file("/var/log/pdns/pdns.err"); };
log { source(s_sys); filter(proc_pdns); filter(p_info); destination(d_pdns_info); };
log { source(s_sys); filter(proc_pdns); filter(p_err); destination(d_pdns_err); };
log { source(s_sys); filter(proc_pdns); filter(p_warn); destination(d_pdns_warn); };
Przeładowanie konfiguracji Syslog'a:
$ /etc/init.d/syslog-ng reload Przeładowanie usługi syslog-ng.....................................[ ZROBIONE ]
Uruchomienie Power DNS'a:
/etc/init.d/pdns start Uruchamianie usługi PowerDNS (Powered DNS server)..................[ ZROBIONE ]
Ściągamy PDNS-Admin'a i rozpakowujemy go do katalogu demona httpd:
$ wget "http://pdnsadmin.iguanadons.net/index.php?a=files&s=download&cid=2&fid=18" $ mv ./index.php?a=files\&s=download\&cid=2\&fid=18 pdnsadmin1.1.9.tgz $ tar xzvf ./pdnsadmin1.1.9.tgz $ mv ./pdnsadmin1.1.9 ./pdnsadmin $ mv ./pdnsadmin /home/services/httpd/html/ $ chown -R http:http /home/services/httpd/html/pdnsadmin/ $ chmod -R o-rwx /home/services/httpd/html/pdnsadmin/
Uruchamiamy demona httpd:
$ /etc/init.d/httpd start Uruchamianie usługi Apache 2.2 Web Server (prefork)................[ ZROBIONE ]
Wchodzimy na stronę: http://10.100.5.68/pdnsadmin/ - gdzie 10.100.5.68 to nasze IP serwera, Twoje będzie zapewne inne:)
Wybieramy: New … i klikamy na Continue
Wpisujemy ustawienia bazy oraz dane administratora, jakie będą obowiązywać w panelu i klikamy Continue
Teraz należy usunąć folder instalacji PDNS-Admin:
$ rm -fr /home/services/httpd/html/pdnsadmin/install
W panelu dodajmy domenę i sprawdźmy czy działa serwer DNS:
$ host domena.com.pl. localhost Using domain server: Name: localhost Address: 127.0.0.1#53 Aliases: domena.com.pl has address 194.145.96.21 domena.com.pl mail is handled by 10 mail.domena.com.pl.
/var/lib/mysql/mysqld.conf /etc/pdns/pdns.conf /root/pdns.sql /etc/syslog-ng/syslog-ng.conf
Wszelkie uwagi i ew zapytania słać na: kamil@kamilm.net ;)