IMPORTANT: Per accedir als fitxer de subversion: http://acacha.org/svn (sense password). Poc a poc s'aniran migrant els enllaços. Encara però funciona el subversion de la farga però no se sap fins quan... (usuari: prova i la paraula de pas 123456)

OpenFPnet/Hacklabs/Serveis de xarxa (DNS i DHCP) amb Ldap i Gosa

Vegeu també DNS i Ldap

Unir DNS a Ldap

Nota: Abans de seguir s'ha de crear un servidor dins del gosa amb el dns configurat i instal·lat. Anar a OpenFPnet/Hacklabs/Serveis de xarxa (DNS i DHCP) amb Ldap i Gosa/DNS amb GOSA

  • El primer que hem fet es instal·lat aquests paquets, ja que dir que ldap-utils, ja el tenim instal·lat anteriorment
$ apt-get install ldap2zone ldap-utils
  • L'ordre ldap2zone té tres paràmetres:
  1. Nom de domini
  2. Servidor Ldap al que volem connectar-mos
  3. TTL (Time to Live)
  • El millor que podem fer abans de continuar és executar la comanda ldap2zone amb els paràmetres adients, per comprovar que tenim el dns instal·lat i configurat correctament dins del gosa:
ldap2zone insebre.com. ldap://192.168.70.1/dc=insebre,dc=com 500               ;per la zona directa
ldap2zone 70.168.192.in-addr.arpa. ldap://192.168.70.1/dc=insebre,dc=com 500   ;per la zona inversa
  • Els fitxers /etc/default/ldap2zone/default i /usr/sbin/ldap2bind els hem modificat com s'indica a continuació:
  • Fitxer /etc/default/ldap2zone/default modificat. Aquest fitxer l'utiliza el ldapd2bind com podràs veure es creu que està ubicat a /etc/default, però no és així. Per tant tenim dos opcions el copiem a /etc/default amb el nom ldap2zone o modifiquem la primera línia del fitxer ldap2bind on es fa referència a aquest fitxer.
# Configuration file for automatic deployment of ldap2zone generated zones to bind
# Should we run the cronjob
# DEFAULT: "false"
RUN_DEPLOY="true"
LDAP_HOST_PARAM="192.168.70.1"
LDAP_BASE_DN="dc=insebre,dc=com"
# How the LDAP server can be accessed
# DEFAULT: "ldap://localhost"
LDAP_URI="ldap://$LDAP_HOST_PARAM/$LDAP_BASE_DN"
# Where the bind config is stored
# DEFAULT: "/etc/bind"
BIND_DIR="/etc/bind"
# Where the zonefiles are located
# DEFAULT: "/var/cache/bind"
#BIND_DATA="/var/cache/bind"
# Time to live value for a and ptr records
# DEFAULT: 500 Seconds
TTL="500"
# Prefix for zone definition files
# DEFAULT: "db."
# The zone definition file for 0.168.192.in-addr.arpa is stored as 'db.0.168.192.in-addr.arpa'
PREFIX="db."
# Allow Updates from these networks (semicolon separated and ended)
# DEFAULT: Don't allow updates
#ALLOW_UPDATE="192.168.0.0/24;"
# Allow Transfer to zones (semicolon separated and ended)
# DEFAULT: Dont allow zone transfer
#ALLOW_TRANSFER="192.168.0.1;"
# Allow notify to slaves (semicolon separated and ended)
# DEFAULT: Dont allow notify
#ALLOW_NOTIFY="notify yes;"
  • Fitxer /usr/sbin/ldap2bind modificat.
#!/bin/sh

[ -r /etc/default/ldap2zone ] && . /etc/default/ldap2zone

case "$LDAP_URI" in 
ldap://*|ldaps://*) ;; 
 *) LDAP_URI="ldap://${LDAP_URI}" ;; 
 esac

LDAPSEARCH=`which ldapsearch`

if [ -z "${LDAPSEARCH}" ]; then
        echo "ldapsearch program not in $PATH. Exiting..."
        exit 1
fi

LDAP_URI_PARAM=${LDAP_URI:+"-H $LDAP_URI"}

if [ "$ALLOW_NOTIFY" ]; then
        ALLOW_NOTIFY="$ALLOW_NOTIFY";
else ALLOW_NOTIFY=;
fi

if [ "$ALLOW_UPDATE" ]; then
	ALLOW_UPDATE_PARAM="allow-update {$ALLOW_UPDATE};";
else ALLOW_UPDATE_PARAM=;
fi

if [ "$ALLOW_TRANSFER" ]; then
	ALLOW_TRANSFER_PARAM="allow-transfer {$ALLOW_TRANSFER};";
else ALLOW_TRANSFER_PARAM=;
fi

# línia modificada
ZONES=`ldapsearch -LLL $LDAP_HOST_PARAM -x "(objectClass=dNSZone)" zoneName -b $LDAP_BASE_DN | grep zoneName: | sort | uniq | awk '{print $2}'`
ldap2zone=`which ldap2zone`
rndc=`which rndc`
#echo $ZONES
if [ -z "${ZONES}" ]; then
	echo "No domains configured. Exiting..."
	exit 0
fi

if [ -z "${rndc}" ]; then
	echo "rndc program not in $PATH. Exiting..."
	exit 1
fi

if [ -z "${ldap2zone}" ]; then
	echo "ldap2zone program not in $PATH. Exiting..."
	exit 1
fi

if [ ! -d $BIND_DIR ]; then
	echo "The directory specified as $BIND_DIR does not exist. Exiting..."
	exit 1
fi

# Linies eliminades
#if [ ! -d $BIND_DATA ]; then
#        echo "The directory specified as $BIND_DATA does not exist. Exiting..."
#        exit 1
#fi


if [ -w $BIND_DIR/named.conf.ldap2zone ]; then
	>${BIND_DIR}/named.conf.ldap2zone
	for domain in $ZONES; do
		cat << EOF >> ${BIND_DIR}/named.conf.ldap2zone
zone "${domain}" {
	type master;
	$ALLOW_NOTIFY
	# línia modificada
	file "${BIND_DIR}/${PREFIX}${domain}";
	$ALLOW_UPDATE_PARAM
	$ALLOW_TRANSFER_PARAM
};
EOF
	done
	$rndc reconfig
fi

for domain in $ZONES; do
#        echo "Executing $ldap2zone $domain $LDAP_URI $TTL ..."
	if $ldap2zone $domain $LDAP_URI $TTL > /tmp/$domain; then
		lines=$(cat /tmp/$domain | wc -l)
		# línia modificada
		[ $lines -gt 1 ] && mv /tmp/$domain $BIND_DIR/${PREFIX}${domain}
	fi
#        echo "Executing $rndc reload $domain ..."
	result=$($rndc reload $domain 2>&1)
	if [ $? -ne 0 ]; then
		printf "Reloading the zone '$domain' failed: $result\n" 1>&2
	else
		printf "Reloading the zone '$domain' was successful\n" 1>&2
	fi
done
  • Un cop hem fet aquestes modificacions, executem aquesta comanda:
# /usr/sbin/ldap2bind
Reloading the zone '59.168.192.in-addr.arpa.' was successful
Reloading the zone 'inslesplanes.santabarbara.cat.' was successful
  • Aquesta comanda ens ha creat la zona directa i la inversa, aquests fitxer es troben a /etc/bind/ amb el nom db.insebre.com. i db.70.168.192.in-addr.arpa. .
  • Un cop fet aquest pas, el pròxim pas és ficar en el fitxer /etc/bind/named.conf, la següent línia:
include "/etc/bind/named.conf.ldap2zone";
  • S'ha de tenir en compte que si enteriorment havíem creat les zones del DNS a mà, tindrem que comentar la següent la línia del include del fitxer named.con.local:
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
// structure of BIND configuration files in Debian, *BEFORE* you customize 
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
//include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
include "/etc/bind/named.conf.ldap2zone";
  • Per acabar crearem el fitxer /etc/bind/named.conf.ldap2zone, que contindrà la configuració de zona creada anteriorment:
zone "insebre.com" {
        type master;
        file "/etc/bind/db.insebre.com.";
        notify yes;
};
zone "70.168.192.in-addr.arpa" {
        type master;
        file "/etc/bind/db.70.168.192.in-addr.arpa.";
	notify yes;
};
  • Comprovo que el cron s'executa una vegada cada hora, per fer-ho vaig a /etc/default/ldap2zone
# cat /etc/default/ldap2zone
  • I comprovo que aquesta variable, es trobi així:
 RUN_DEPLOY="true"
  • També ho podem comprovar, anem a:
# cat /etc/cron.d/ldap2zone 
PATH=/sbin:/bin:/usr/sbin:/usr/bin
@reboot   bind  /usr/sbin/ldap2bind
@hourly   bind  /usr/sbin/ldap2bind
  • També podem comprovar el fitxer /var/log/syslog, per veure si realment s'esta executant el cron cada hora.
#root@servidor:/etc# cat /var/log/syslog | grep ldap2bind
Nov 24 12:00:01 servidor CRON[3046]: (bind) CMD ( /usr/sbin/ldap2bind)
Nov 24 13:00:01 servidor CRON[2187]: (bind) CMD ( /usr/sbin/ldap2bind)
Nov 24 14:00:01 servidor CRON[2613]: (bind) CMD ( /usr/sbin/ldap2bind)
Nov 24 15:00:01 servidor CRON[2664]: (bind) CMD ( /usr/sbin/ldap2bind)
Nov 24 16:00:01 servidor CRON[2713]: (bind) CMD ( /usr/sbin/ldap2bind)
Nov 24 17:00:01 servidor CRON[3145]: (bind) CMD ( /usr/sbin/ldap2bind)
Nov 24 18:00:01 servidor CRON[20914]: (bind) CMD ( /usr/sbin/ldap2bind)