Archive

Posts Tagged ‘tinydns’

Установка Tinydns (djbdns) на linux

September 7th, 2009

Так как нормальных rpm нет придется ставить из исходников.
Сначала ставим daemontools, который будет запускать сервис tinydns, следить за его состоянием и тд.

cd /root
wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
tar zxvf ./daemontools-0.76.tar.gz
В src/conf-cc в строку с gcc добавляем -include /usr/include/errno.h
cd ./admin/daemontools-0.76/
./package/install

cd /root
wget http://cr.yp.to/ucspi-tcp/ucspi-tcp-0.88.tar.gz
tar zxvf ./ucspi-tcp-0.88.tar.gz
cd ./ucspi-tcp-0.88
В conf-cc в строку с gcc добавляем -include /usr/include/errno.h
make
make setup check

cd /root
wget http://cr.yp.to/djbdns/djbdns-1.05.tar.gz
tar zxvf ./djbdns-1.05.tar.gz
cd djbdns-1.05
echo gcc -O2 -include /usr/include/errno.h > conf-cc
make
make setup check

groupadd dnsuser
/usr/sbin/useradd -g dnsuser -s /sbin/nologin -d /dev/null tinydns
/usr/sbin/useradd -g dnsuser -s /sbin/nologin -d /dev/null dnslog
/usr/local/bin/tinydns-conf tinydns dnslog /etc/tinydns [ip-сервера]
ln -s /etc/tinydns /service/tinydns #говорим daemontools-у о новом сервисе, он сам его запустит через 5 сек

Заполняем файл зон (/etc/tinydns/root/data) по образцу:

.domain.com::ns1.domain.com.:2500
&domain.com::ns2.domain.com.:2500
@domain.com::mail.domain.com.:10:2500
+domain.com:serverip:2500
+*.domain.com:serverip:2500

Делаем в /etc/tinydns/root чтобы перекинуть данные в бинарную версию data.cdb:

make

Проверить что data.cdb содержит требуемые данные:

cd /etc/tinydns/root
tinydns-get a www.domain.com

Управление сервисами:

svc -d /service/tinydns #остановить сервис
svc -u /service/tinydns #запустить сервис
svc -t /service/tinydns #рестартануть сервис
svstat /service/tinydns #проверяем статус

Синхронизация зон со вторым ДНС-сервером.

Для синхронизации бинарного файла с данными по зонам (с другим сервером) воспользуемся scp.
На втором днс-сервере необходимо установить аналогичный комплект. Затем на первом сервере:

cd /root/.ssh
ssh-keygen -b 1024 -t dsa

На втором сервере:

/usr/sbin/useradd -s /bin/bash srv-dns-acct
cd /home/srv-dns-acct/
mkdir .ssh
В файл .ssh/authorized_keys копируем id_dsa.pub с первого сервера
chmod 700 .ssh
chmod 600 .ssh/authorized_keys

На первом сервере в файл /etc/tinydns/root/Makefile добавляем:

scp data.cdb srv-dns-acct@ns2.domain.com:/etc/tinydns/root/data.cdb

Теперь для синхронизации первого сервера со втором надо на первом сервере:

cd /etc/tinydns/root
make

Смотрите так же Скрипт добавления зон
Для добавления разных экзотических записей есть tinydns Record Builder

Примечание:
Если вдруг была удалена директория /etc/tinydns/supervise то надо сделать ps auxww |grep sup и грохнуть два процесса supervise. Затем сделать ps auxww |grep sv и грохнуть два процесса svscan. Инит перезапустит svscan, а тот перезапустит supervise и он пересоздаст каталоги.

dns ,

Скрипт добавления зон для tinydns

June 16th, 2009

Для добавления одной зоны:

#!/bin/bash

DIR="/service/srvdns/root"
cd $DIR

if [ "x$1" = "x" ]; then
    echo "Usage: domain.com owner ip"
    exit
fi
if [ "x$2" = "x" ]; then
    echo "Usage: domain.com owner ip"
    exit
fi
if [ "x$3" = "x" ]; then
    echo "Usage: domain.com owner ip"
    exit
fi

domainexist=`cat $DIR/data | grep -c $1`
if [ $domainexist != "0" ]; then
    echo "$1 already exist. Exit."
    exit
fi

sed -e "s/domain.com/$1/g" "$DIR/domain.com" > "$DIR/tmpfile"
sed -e "s/owner/$2/g" "$DIR/tmpfile" > "$DIR/tmpfile2"
sed -e "s/serverip/$3/g" "$DIR/tmpfile2" >> "$DIR/data"

rm $DIR/tmpfile
rm $DIR/tmpfile2
make

Для добавления нескольких зон из файла-списка:

#!/bin/bash

DIR="/service/srvdns/root"
cd $DIR

if [ "x$1" = "x" ]; then
    echo "Usage: owner ip"
    exit
fi
if [ "x$2" = "x" ]; then
    echo "Usage: owner ip"
    exit
fi

cat $DIR/domainsfile | while read domain; do

    domainexist=`cat $DIR/data | grep -c $domain`
    if [ $domainexist != "0" ]; then
        echo "$domain already exist. Skipped."
        continue
    fi

    sed -e "s/domain.com/$domain/g" "$DIR/domain.com" > "$DIR/tmpfile"
    sed -e "s/owner/$1/g" "$DIR/tmpfile" > "$DIR/tmpfile2"
    sed -e "s/serverip/$2/g" "$DIR/tmpfile2" >> "$DIR/data"

    rm $DIR/tmpfile
    rm $DIR/tmpfile2
done
make

Где файл domain.com такой:

###########################
#owner: domain.com
.domain.com::ns1.domainserver.com.:2500
&domain.com::ns2.domainserver.com.:2500
@domain.com::mail.domain.com.:10:2500
+domain.com:serverip:2500
+*.domain.com:serverip:2500

dns ,

установка tinydns на freebsd

December 25th, 2008

Сразу замечу, что tinydns это днс-сервер для авторитативных запросов. Если надо еще кэширующий днс-резолвер то необходимо настроить dnscache из того же комплекта.
Ставим из портов djbdns, daemontools.
затем:

echo svscan_enable="YES" >> /etc/rc.conf
tinydns-conf bind bind /etc/tinydns 1.2.3.5
mkdir /var/service
ln -s /etc/tinydns /var/service
/usr/local/etc/rc.d/svscan.sh start

создаем файлик /etc/tinydns/root/data с примерно таким содержимым:

#domain.com
.domain.com::ns1.domain.com.:2500
&domain.com::ns2.domain.com.:2500
+ns1.domain.com:192.168.0.1:2500
+ns2.domain.com:192.168.0.1:2500
+domain.com:192.168.0.3:2500
+www.domain.com:192.168.0.3:2500

Находясь в /etc/tinydns/root/ делаем tinydns-data

dns, FreeBSD ,