#1 Le 22/03/2015, à 22: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, à 22:07)
Hors ligne