Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 22/03/2015, à 23:04

Steph_Net38

Samba 4 ADDC - Bind en back end BIND_DLZ - Mise à jour par DHCP

Bonsoir,

Je suis entrain d'installé un contrôleur de domaine avec Samba4. Je souhaite utiliser BIND9 en backend de samba en utilisant l'option BIND9_DLZ.
Tout fonctionne bien jusqu'au moment ou je souhaite ajouter une entrée dans le DNS via le serveur DHCP.
Tous les tutoriels que j'ai trouvé sur le Net parle d'un script lancer par les événements on_commit, etc du DHCP. C'est à ce moment que ça ne fonctionne plus.

Je suis sur une ubuntu server 14.04.2 LTS
Bind9
Samba4
isc-dhcp-server

C'est trois composants ont été installé par le gestionnaire de paquet.

En gros, j'ai le script suivant :

#!/bin/sh

## CONFIGURATION ##

realm=DOMAINE.FR
principal=dhcp@$realm
keytab=/etc/dhcp/dhcpd.keytab
domain=domaine.fr
ns=zeus.domaine.fr

KRB5CCNAME="/tmp/krb5cc_0"

#PATH=/usr/bin

folder=$(pwd)
logger -s -p daemon.error -t updatedns chemin : $folder

tool=$(find /* | grep samba-tool)
logger -s -p daemon.error -t updatedns chemin : $tool

# keytab can be generated using
# $ ktutil
# ktutil: addent -password -p dhcpduser@EXAMPLE.COM -k 1 -e aes256-cts-hmac-sha1-96
# Password for dhcpduser@EXAMPLE.COM:
# ktutil: wkt dhcpduser.keytab
# ktutil: quit

## VARIABLES ##

action=$1
ip=$2
name=$(echo $3 | awk -F '.' '{print $1}')
mac=$4
usage()
{
echo "USAGE:"
echo $0 add 192.0.2.123 testhost 00:11:22:33:44:55
echo $0 add 192.168.0.127 "" 00:11:22:44:33:55
echo $0 delete 192.0.2.123 testhost 00:11:22:33:44:55
echo $0 delete 192.0.2.127 "" 00:11:22:44:33:55
}

if [ "$ip" = "" ]; then
echo "IP missing"
usage
exit 101
fi
if [ "$name" = "" ]; then
#echo "name missing"
#usage
#exit 102
name=$(echo $ip | awk -F '.' '{print "dhcp-"$1"-"$2"-"$3"-"$4}')

if [ "$action" = "delete" ]; then
name=$(host $ip | awk '{print $5}' | awk -F '.' '{print $1}')

echo $name | grep NXDOMAIN 2>$1 >/dev/null
if [ "$?" = "0" ]; then
exit 0;
fi
fi
fi

ptr=$(echo $ip | awk -F '.' '{print $4"."$3"."$2"."$1".in-addr.arpa"}')

## KERBEROS ##

#export LD_LIBRARY_PATH=/usr/local/krb5-1.7/lib
#export PATH=/usr/local/krb5-1.7/bin:$PATH

$(klist 2>&1 | grep $realm | grep '/' > /dev/null)
if [ "$?" = 1 ]; then
expiration=0
else
expiration=$(klist | grep $realm | grep '/' | awk -F ' ' '{system ("date -d \""$2"\" +%s")}' | sort | head -n 1)
fi
now=$(date +%s)
if [ "$now" -ge "$expiration" ]; then
echo "Getting new ticket, old one expired $expiration, now is $now"
$(kinit -F -k -t $keytab $principal)
fi

case "$action" in
add)
echo "Setting $name.$domain to $ip on $ns"

oldname=$(host $ip $ns | grep "domain name pointer" | awk '{print $5}' | awk -F '.' '{print $1}')
if [ "$oldname" = "" ]; then
oldname=$name
elif [ "$oldname" = "$name" ]; then
oldname=$name
else
echo "Also deleting $oldname A record"
fi

logger -s -p daemon.error -t updatedns samba-tool dns add $ns $domain $name A $ip
Errorstr=$(/usr/bin/samba-tool dns add $ns $domain $name A $ip)
result2=$?
logger -s -p daemon.error -t updatedns End of add : $result2 - $Errorstr
;;

delete)
$(samba-tool dns delete $ns $domain $name A $ip)
logger -s -p daemon.error -t updatedns Deleting $name.$domain to $ip on $ns
result2=$?
logger -s -p daemon.error -t updatedns End of delete : $result2
;;
*)
echo "Invalid action specified"
exit 103
;;
esac

result=$result2
if [ "$result" != "00" ]; then
#echo "DHCP-DNS Update failed: $result"
logger -s -p deamon.error -t updatedns DHCP-DNS Update failed: $result
fi

logger -s -p daemon.error -t updatedns End of udate.sh : $result

exit $result

Ce script lancer à la main fonctionne correctement. il met bien à jour le DNS et le controleur.

Quand je le lance via le dhcp :

on commit {
set noname = concat("dhcp-", binary-to-ascii(10, 8, "-", leased-address));
set ClientIP = binary-to-ascii(10, 8, ".", leased-address);
set ClientMac = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6));
set ClientName = pick-first-value(option host-name, host-decl-name, config-option host-name, noname);
log(concat("Commit: IP: ", ClientIP, " Mac: ", ClientMac, " Name: ", ClientName));
execute("/etc/dhcp/update.sh", "add", ClientIP, ClientName, ClientMac);
}

Je n'ai pas de mise à jour du DNS et du controleur, voici les logs :

Mar 22 21:59:47 zeus dhcpd: DHCPREQUEST for 192.168.30.252 (192.168.30.253) from 52:54:00:2e:c1:79 via eth0
Mar 22 21:59:47 zeus dhcpd: DHCPACK on 192.168.30.252 to 52:54:00:2e:c1:79 via eth0
Mar 22 21:59:47 zeus dhcpd: Commit: IP: 192.168.30.252 Mac: 52:54:0:2e:c1:79 Name: ares
Mar 22 21:59:47 zeus dhcpd: execute_statement argv[0] = /etc/dhcp/update.sh
Mar 22 21:59:47 zeus dhcpd: execute_statement argv[1] = add
Mar 22 21:59:47 zeus dhcpd: execute_statement argv[2] = 192.168.30.252
Mar 22 21:59:47 zeus dhcpd: execute_statement argv[3] = ares
Mar 22 21:59:47 zeus dhcpd: execute_statement argv[4] = 52:54:0:2e:c1:79
Mar 22 21:59:47 zeus updatedns: chemin : /
Mar 22 21:59:47 zeus updatedns: chemin : /usr/bin/samba-tool /usr/share/man/man8/samba-tool.8.gz /var/lib/dhcp/samba-tool
Mar 22 21:59:47 zeus updatedns: samba-tool dns add zeus.domaine.fr domaine.fr ares A 192.168.30.252
Mar 22 21:59:47 zeus updatedns: End of add : 255 -
Mar 22 21:59:47 zeus updatedns: End of udate.sh : 255
Mar 22 21:59:47 zeus dhcpd: execute: /etc/dhcp/update.sh exit status 65280

En gros, il semblerait que la commande samba-tool n'est pas lancée ou autre, chose.
J'ai pensé que le serveur dhcp est chrooté ou autre.

Pouvez-me donner des pistes voir un résolution de mon problème ?

Merci d'avance pour votre aide.
A bientôt

Stéphane

Dernière modification par Steph_Net38 (Le 22/03/2015, à 23:07)

Hors ligne