# commands to create database for GnuDIP 2.3 ###################################### # create GnuDIP database # create database gnudip2; # ^ GnuDIP database ###################################### # grant access to GnuDIP database tables to GnuDIP user # the gnudip user will be created if needed grant select, insert, update, delete on gnudip2.* to gnudip identified by 'gnudippass'; grant select, insert, update, delete on gnudip2.* to gnudip@localhost identified by 'gnudippass'; # ^ GnuDIP user ^ GnuDIP password ###################################### # use GnuDIP database use gnudip2; ###################################### # domains create table domains ( id int(10) not null auto_increment, domain varchar(50), changepass varchar(5), addself varchar(5), primary key (id) ); ###################################### # globalprefs create table globalprefs ( id int(10) not null auto_increment, param varchar(30), value varchar(255), primary key (id) ); ###################################### # users create table users ( id int(10) not null auto_increment, username varchar(20) default '' not null, password varchar(32), domain varchar(50) default '' not null, email varchar(50), createdate datetime, forwardurl varchar(60), updated datetime, level enum('USER','ADMIN') default 'USER' not null, currentip varchar(15), autourlon varchar(5), MXvalue varchar(60), MXbackup enum('YES','NO') default 'NO' not null, wildcard enum('YES','NO') default 'NO' not null, allowwild enum('YES','NO') default 'NO' not null, allowmx enum('YES','NO') default 'NO' not null, primary key (id), key domain (domain), key username (username) ); Zapisz plik i zaimportuj bazę.
mysql -vp < /tmp/gnudip-2-3-5/gnudip.mysql
Enter password:
W odpowiedzi powinieneś otrzymać :
--------------
create database gnudip2
--------------
--------------
grant select, insert, update, delete on gnudip2.* to gnudip identified by 'gnudippass'
--------------
--------------
grant select, insert, update, delete on gnudip2.* to gnudip@localhost identified by 'gnudippass'
--------------
--------------
create table domains (
id int(10) not null auto_increment,
domain varchar(50),
changepass varchar(5),
addself varchar(5),
primary key (id)
)
--------------
--------------
create table globalprefs (
id int(10) not null auto_increment,
param varchar(30),
value varchar(255),
primary key (id)
)
--------------
--------------
create table users (
id int(10) not null auto_increment,
username varchar(20) default '' not null,
password varchar(32),
domain varchar(50) default '' not null,
email varchar(50),
createdate datetime,
forwardurl varchar(60),
updated datetime,
level enum('USER','ADMIN') default 'USER' not null,
currentip varchar(15),
autourlon varchar(5),
MXvalue varchar(60),
MXbackup enum('YES','NO') default 'NO' not null,
wildcard enum('YES','NO') default 'NO' not null,
allowwild enum('YES','NO') default 'NO' not null,
allowmx enum('YES','NO') default 'NO' not null,
primary key (id),
key domain (domain),
key username (username)
)
--------------
Konfiguracja GnuDIP
Usuń linki
rm /usr/local/gnudip/lib/dbprefs.pm
rm /usr/local/gnudip/lib/dbusers.pm
i stwórz aktualne
cd /usr/local/gnudip/lib/
ln -s dbprefs_flat.pm /usr/local/gnudip/lib/dbprefs.pm
ln -s dbusers_flat.pm /usr/local/gnudip/lib/dbusers.pm
Tworzenie kluczy do uwierzytelniania GnuDIP w BIND9
mkdir /etc/bind/tmp
cd /etc/bind/tmp/
dnssec-keygen -a hmac-md5 -b 128 -n HOST gnudip-key
ls ?l
Kgnudip-key.+157+04571.key
Kgnudip-key.+157+04571.private
cat ./Kgnudip-key.+157+04571.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: QZcFJhB8W4L3Bz28s4RxOQ==
Wygenerowany klucz będzie potrzebny przy konfiguracji strefy w BIND. (QZcFJhB8W4L3Bz28s4RxOQ==)
Przenieś pliki ?Kgnudip-key.+157+04571.key? ? Kgnudip-key.+157+04571.private? do katalogu z /usr/local/gnudip/etc/.
Przejdź do katalogu
cd /usr/local/gnudip/etc/
vi ./gnudip.conf
w BIND9 zmień ścieżkę do pliku Kgnudip-key.+157+04571.private
nsupdate = /usr/bin/nsupdate -v ?k /usr/local/gnudip/etc/ Kgnudip-key.+157+04571.private
Konfiguracja BINDa
Stwórz plik do przechowywania danych klucza
touch /etc/bind/gnudip-keyfile
sprawdź i skopiuj klucz
cat /usr/local/gnudip/etc/Kgnudip-key.+157+04571.private
Private-key-format: v1.2
Algorithm: 157 (HMAC_MD5)
Key: QZcFJhB8W4L3Bz28s4RxOQ==
Plik gnudip-keyfile powinien mieć wpisy jak poniżej
vi /etc/bind/gnudip-keyfile
key gnudip-key {
algorithm hmac-md5;
// the TSIG key
secret "QZcFJhB8W4L3Bz28s4RxOQ==";
};
W pliku konfiguracyjnym BIND named.conf dopisz:
vi /etc/bind/named.conf
// GNUDIP key
include "/etc/bind/gnudip-keyfile";
// GnuDIP dynamic DNS zone
zone "12345.net" in {
type master;
file "master/zone-12345.net";
allow-query { any; };
// allow-update {key gnudip-key; };
update-policy { grant gnudip-key subdomain 12345.net; };
};
Stwórz strefę dla domeny która ma obsługiwać DynDNS
vi /var/cache/bind/master/zone-12345.net
$TTL 86400 ; default TTL (1 day)
@ IN SOA ns.12345.net. admin.12345.net. (
0 ; serial
3600 ; refresh (1 hour)
1800 ; retry (30 minutes)
604800 ; expire (1 week)
0 ; TTL for NACK-s (0 seconds)
)
@ NS ns.12345.net.
gnudip 60 IN A 192.168.1.63
chmod a+r /usr/local/gnudip/etc/*
chmod a+w /etc/bind/zone-12345.net
Konfiguracja Apache
Na końcu pliku /etc/apache2/apache2.conf dopisz:
Alias /gnudip/html/ /usr/local/gnudip/html/
Options Indexes
ReadmeName .README
HeaderName .HEADER
RemoveHandler .pl
RemoveType .pl
AddType text/plain .pl
ScriptAlias /gnudip/cgi-bin/ /usr/local/gnudip/cgi-bin/
I zrestartuj apache
/etc/init.d/apache2 restart
Uruchamianie demona
apt-get install xinetd
vi /etc/services
gnudip 3495/tcp
vi /etc/xinetd.conf
service gnudip
{
flags = REUSE
socket_type = stream
protocol = tcp
wait = no
user = nobody
server = /usr/local/gnudip/sbin/gdipinet.pl
bind = 0.0.0.0
only_from = 192.168.1.0/24
only_from += 127.0.0.1
only_from += 24.64.0.0/13
only_from += 64.5.210.224/31
only_from += 64.5.221.128/27
}
Prawa do plików
W katalogu /usr/local/gnudip/run/database/ i podkatalogach konieczne jest prawo zapisu i odczytu dla użytkownika na którym pracuje Apache. W przypadku Ubuntu 7.04 Server jest to www-data.
chown www-data:www-data /usr/local/gnudip/run/database/ - R
Do pliku ze strefą domeny głównej (12345.net) musi mieć prawa zapisu BIND.
chown root:bind /var/cache/bind/master/ -R
chmod 660 /var/cache/bind/master/ -R
Zakładanie domeny i użytkowników w GnuDIP
W celu konfiguracji domeny i użytkowników musisz wejść na stronę http://192.168.1.63/gnudip/cgi-bin/gnudip.cgi
Aby stworzyć konto administratora użyj polecenia:
/usr/local/gnudip/sbin/gdipadmin.pl admin haslo
Teraz już możesz się zalogować http://192.168.1.63/gnudip/cgi-bin/gnudip.cgi
Po zalogowaniu zacznij od stworzenia domeny w tym przypadku była to 12345.net. Następnie możesz przejść do zakładania użytkowników dla tej domeny. Subdomeny są tworzone automatyczne na zasadzie użytkownik.domena (np.: artur.12345.net).
Klient dla Windows
Konfiguracja polega na wpisaniu adresu IP serwera www udostępniającego interfejs do obsługi GnuDIP.

Potem wystarczy podać użytkownika, hasło i subdomenę istniejącą na serwerze.

Testy
Obserwacja logów podczas instalacji i konfiguracji. Ja zawsze używam polecenia tail dzięki czemu mogę na bieżąco śledzić logi.
tail ?f /var/log/syslog
poniższe logi przedstawiają poprawne działanie podczas łączenia się za pomocą klienta Windows:
Jul 4 14:24:55 gnudip gnudip-updt: 192.168.1.51 - User user.12345.net successful update to ip 192.168.1.51
Jul 4 14:27:32 gnudip named[5580]: client 127.0.0.1#4803: transfer of '12345.net/IN': AXFR started
Jul 4 14:27:32 gnudip named[5580]: client 127.0.0.1#4803: transfer of '12345.net/IN': AXFR ended
Jul 4 14:39:02 gnudip /USR/SBIN/CRON[5734]: (root) CMD ( [ -d /var/lib/php5 ] && find /var/lib/php5/ -type f -cmin +$(/usr/lib/php5/maxlifetime) -print0 | xargs -r -0 rm)
Jul 4 14:42:42 gnudip gnudip-updt: 192.168.1.51 - User user.12345.net remains at ip 192.168.1.51
Jul 4 14:42:56 gnudip last message repeated 2 times
Jul 4 14:43:56 gnudip gnudip-updt: 192.168.1.51 - Invalid login attempt from 192.168.1.51: user user11.12345.net
Jul 4 14:44:03 gnudip gnudip-updt: 192.168.1.51 - Invalid login attempt from 192.168.1.51: user user11.12345.net
Jul 4 14:44:07 gnudip gnudip-updt: 192.168.1.51 - User user.12345.net remains at ip 192.168.1.51
Jul 4 14:44:12 gnudip named[5580]: client 192.168.1.63#2552: updating zone '12345.net/IN': deleting rrset at 'user.12345.net' A
Jul 4 14:44:12 gnudip gnudip-updt: 192.168.1.51 - User user.12345.net successful remove from ip 192.168.1.51
Jul 4 14:44:18 gnudip named[5580]: client 192.168.1.63#2263: updating zone '12345.net/IN': deleting rrset at 'user.12345.net' A
Jul 4 14:44:18 gnudip named[5580]: client 192.168.1.63#2263: updating zone '12345.net/IN': adding an RR at 'user.12345.net' A
Jul 4 14:44:18 gnudip gnudip-updt: 192.168.1.51 - User user.12345.net successful update to ip 192.168.1.51
Odpytaj lokalny serwer DNS o swoją domenę , najprościej jest poleceniem dig. Jak widać poniżej została dopisana subdomena user.12345.net w strefie domeny głównej 12345.net
dig AXFR @localhost 12345.net
; <<>> DiG 9.3.4 <<>> AXFR @localhost 12345.net
; (1 server found)
;; global options: printcmd
12345.net. 86400 IN SOA ns.12345.net. admin.12345.net. 11 3600 1800 604800 0
12345.net. 86400 IN NS ns.12345.net.
12345.net. 86400 IN A 192.168.1.63
gnudip.12345.net. 86400 IN A 192.168.1.63
ns.12345.net. 86400 IN A 192.168.1.63
user.12345.net. 60 IN A 192.168.1.51
12345.net. 86400 IN SOA ns.12345.net. admin.12345.net. 11 3600 1800 604800 0
;; Query time: 4 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Jul 4 14:27:32 2007
;; XFR size: 7 records (messages 1)