BOITE À OUTILS BIND
Publié par The Troll le 26 04 2015

Puisqu'avoir un serveur virtuel ça ne sert pas à grand chose si on ne peut pas le visiter, il faut y associer une résolution de noms pour que les femelles en chaleur puisse le trouver (Oui c'est sexiste, mais à mon crédit, lorsque les femelles en chaleur peuvent le trouver, les mâles en rut également.) Ok, çà n'améliore pas mon coté sexiste, j'irais me fouetter avec des orties fraîches.

Donc je disais : la résolution des noms avec bind. La encore, même technique que pour apache, un fichier de zone modèle, un script qui le remplit à la demande. Vous DEVEZ remplir les fichiers modèle et script avec VOS bonnes informations, sinon ça marchera pas.

================ zone_modele==============
    
$ttl 38400
DOMAIN.        IN    SOA    SERVER.    user.mail.com.    (
            NUMERO
            28800
            14400
            1209600
            38400    )
DOMAIN.        IN    NS    SERVER.
DOMAIN.        IN    NS    DNSSLAVE.
        IN    MX    10 Mail
mail        IN    A    IP
DOMAIN.        IN    TXT    "v=spf1 mx a ip4:IP/32 ~all"
DOMAIN.        IN    A    IP
www.DOMAIN.    IN    A    IP

Dans ce fichier, il faut juste personnaliser en mettant votre adresse mail. il est sous la forme username@domain.com. en remplaçant le @ par un point. SI dans votre username il y a aussi un point, il s'échappe avec un \ exemple : prenom\.nom.domain.com. Remarquez bien le point final, il est important.

Ensuite un fichier pour faire le travail

=============== do_dns===============

#!/bin/sh
echo "vérifier les infos de base : serveur dns secondaire et nom de machine"

LIP=88.888.77.877
SERVER=domain.com
DNSSLAVE=ns-slave.server.tld
STAMP=`date "+%Y%m%d01"`
DEST="/etc/bind/zones/"

sed -e 's/IP/'$LIP'/g' zone_modele > $1.hosts
sed -i -e 's/DNSSLAVE/'$DNSSLAVE'/g'  $1.hosts
sed -i -e 's/SERVER/'$SERVER'/g'  $1.hosts
sed -i -e 's/NUMERO/'$STAMP'/g'  $1.hosts
sed -i -e 's/DOMAIN/'$1'/g'  $1.hosts
echo "======================="
more  $1.hosts
echo "======================="
read -p "Config ok [o/n]]?" reponse

if [ $reponse = "o" ]; then

mv $1.hosts $DEST$1.hosts && echo "fichier copié $DEST$1.hosts"
echo "verif fichier ======================="
named-checkzone $1 $DEST$1.hosts
echo "======================="

echo "modifier aussi le fichier named.conf.local et y ajouter :"
echo "======================="
echo 'zone "'$1'" {'
echo "        type master;"
echo '        file "'$DEST$1.hosts'";'
echo "        };"
echo "======================="
named-checkconf
read -p "redemarrer le serveur ? [o/n]]?" reponse

if [ $reponse = "o" ]; then
rdnc reload
service bind9 restart
fi
fi

Il faut absolument personnaliser les lignes suivantes :
LIP=L'adresse IP de votre serveur
SERVER=Le nom de domaine de votre serveur (donc qui fait dns primaire)
DNSSLAVE=le nom de votre serveur dns secondaire *
DEST="/etc/bind/zones/" -je mets mes fichiers zone à cet endroit (il faut créer le répertoire)

* ne pas oublier que le serveur secondaire doit avoir le droit de transférer les infos : on l'ajoute donc dans le fichier named.conf.options dans allow-transfert, allow-recursion et allow-query-cache

Donc comme pour apache, les 2 fichiers dans un répertoire, exécutable pour do_dns et on l'appelle simplement


./do_dns mondomaine.tld

il crée le fichier mondomaine.tld.hosts que vous pouvez éditer dans un autre shell, pour vérifier. En cliquant sur o à la réponse "config ok ?", il le copie à la bonne place, vous propose les informations à copier dans le fichier named.conf.local (vous devez le faire, un copier-coller marche très bien) , un truc du style :


zone "toto.com" {
                type master;
                file "/etc/bind/zones/toto.com.hosts";
                };

Oui, je sais, je pourrais l'ajouter directement avec un echo >>, mais je ne l'ai pas encore fait.. un jour je le mettrais à jour.

Redémarre le serveur bind.

YAPU qu'a attendre le car de femelles en chaleurs\w\w\w\w mâle en rut

commentaire(s)
Ajouter un commentaire