nikotinux
Posts: 707
Joined: Sat Feb 02, 2013 2:11 am

Memo install DHCP + BIND avec dyndns et rpz

Mon Aug 12, 2019 8:49 am

Pour moi et pour ceux que cela peut intéresser, je laisse ici un résumé de l'installation de bind9 avec une Reponse-Policy-Zone et mise a jour des dns locaux via isc-dhcp-server. Je ne détaille pas, RTFM, mais n’hésitez pas a commenter !
le domaine local est mydom.local ...

- installer bind

-initialiser rndc, séparer la conf et la clé
rndc.conf

Code: Select all

# Start of rndc.conf
include "/etc/bind/rndc.keys"; 

options {
	default-key "local-rndc-key";
	default-server 127.0.0.1;
	default-port 953;
};
rndc.keys

Code: Select all

key local-rndc-key {
	algorithm hmac-md5;
	secret "lacle...";
	};

- modifier named.conf , les serveurs bind et dhcp sont sur la meme machine !

Code: Select all

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

include "/etc/bind/rndc.keys"; 
controls {
	inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { local-rndc-key; };
};
- dans le fichier d'options on inclue la zone rpz et on en profite pour dispatcher un peu les logs
named.conf.options

Code: Select all

options {
	directory "/var/cache/bind";

	forwarders {
		8.8.8.8;
		8.8.4.4;
		};

	forward first;

	response-policy { zone "rpz.mydom.local"; };

	dnssec-validation auto;

	auth-nxdomain no;    # conform to RFC1035
	listen-on-v6 { any; };
	version "none";

};


logging{
	channel default_log {
		file "/var/log/named/error.log";
		print-category yes;
		print-severity yes;
		print-time yes;
		};
	channel query_log {
		file "/var/log/named/query.log";
		print-category yes;
		print-severity yes;
		print-time yes;
		};
	channel rpz_log {
		file "/var/log/named/rpz.log";
		print-category yes;
		print-severity yes;
		print-time yes;
		};
	channel client_log {
		file "/var/log/named/client.log";
		print-category yes;
		print-severity yes;
		print-time yes;
		};
	channel update_log {
		file "/var/log/named/update.log";
		print-category yes;
		print-severity yes;
		print-time yes;
		};
	category update {
		update_log;
		};
	category client {
		client_log;
		};
	category queries {
		query_log;
		};
	category rpz {
		rpz_log;
		};
	category default {
		default_log;
		};
};
j'ai mis les dns de google en forward pour que cela soit "parlant", a adapter bien sur ..

- on declare les fichiers de zone dans named.conf.local

Code: Select all

zone "rpz.mydom.local" {
	type master;
	file "/var/lib/bind/zone.rpz.mydom.local";
};

zone "space.local" {
	type master;
	file "/var/lib/bind/zone.mydom.local";
        allow-update { key local-rndc-key; };
        notify yes;
};

zone "xxx.168.192.in-addr.arpa" {
	type master;
	file "/var/lib/bind/zone.mydom.local";
        allow-update { key local-rndc-key; };
        notify yes;
};
- les fichiers de zones sont classiques, par exemple
zone.mydom.local

Code: Select all

$ORIGIN mydom.local.
mydom.local.	IN	SOA	serveur.mydom.local. root.localhost. (
			1908112224 ; serial
			12H
			1H
			1W
			1D )
mydom.local.	IN	NS	serveur.mydom.local.

serveur.mydom.local.	    IN	A	192.168.xxx.yyy
zone.rev.mydom.local

Code: Select all

$ORIGIN xxx.168.192.in-addr.arpa.
xxx.168.192.in-addr.arpa.	IN	SOA	serveur.mydom.local. root.localhost. (
			1908112224 ; serial
            		12H
			1H
			1W
			1D )
xxx.168.192.in-addr.arpa.	IN	NS	serveur.space.local.

yyy.xxx.168.192.in-addr.arpa.	IN	PTR	serveur.mydom.local.
la zone rpz me sert essentiellement a filtrer les pubs et les serveurs potentiellement dangereux. J'envoie donc tout dans le grand néant sans subtilités ...
zone.rpz.mydom.local

Code: Select all

rpz.mydom.local.	IN	SOA	localhost. root.localhost. (
			1908112224 ; serial
			12H
			1H
			1W
			1D )
rpz.mydom.local.	IN	NS	localhost.

siteadegager.com                           CNAME  localhost
*.sitesadegager.com                        CNAME  localhost
- installer isc-dhcp-server

- la particularité dans la configuration du serveur dhcp consiste bien sur a autoriser la mise a jour des zones directe et inverse de bind

Code: Select all

include "/etc/bind/rndc.keys";

log-facility			local7;

authoritative;
allow client-updates;
allow unknown-clients;
ddns-update-style interim;
ddns-updates on;
ddns-domainname "mydom.local.";
ddns-rev-domainname "in-addr.arpa.";

option domain-name "mydom.local";

subnet 192.168.xxx.0 netmask 255.255.255.0 {
	range 192.168.xxx.20 192.168.xxx.99;
	}
	
# mydom.local
zone mydom.local. {
	primary localhost;
	key local-rndc-key;
	}
# reverse
zone xxx.168.192.in-addr.arpa. {
	primary localhost;
	key local-rndc-key;
	}
mettre les options supplémentaires comme il vous plaira !!


Les fichiers de zones dans /var/lib/bind vont grossir au fur et a mesure de l'utilisation du réseau. Pour les nettoyer de temps en temps j'ai sauvegardé les fichiers avec uniquement mes serveurs et je les remets en place avec un script. Les serials sont de la forme "annéemoisjourheureminute" et sont updatés.

Code: Select all

#!/bin/bash

SERIAL=$(date +"%y%m%d%H%M")

# /etc/init.d/isc-dhcp-server stop
# /etc/init.d/bind9 stop
systemctl stop isc-dhcp-server.service
systemctl stop bind9.service

cp -fb /etc/bind/zones/zone.rev.mydom.local /var/lib/bind/
cp -fb /etc/bind/zones/zone.mydom.local /var/lib/bind/
chown root:bind /var/lib/bind/zone.rev.mydom.local
chown root:bind /var/lib/bind/zone.mydom.local
echo "new serial : $SERIAL"
sed -i -e "/serial/s/YYMMDDhhmm/$SERIAL/" /var/lib/bind/zone.rev.mydom.local
sed -i -e "/serial/s/YYMMDDhhmm/$SERIAL/" /var/lib/bind/zone.mydom.local

# /etc/init.d/bind9 start
#/etc/init.d/isc-dhcp-server start
systemctl start bind9.service
systemctl start isc-dhcp-server.service

epoch1970
Posts: 4237
Joined: Thu May 05, 2016 9:33 am
Location: Paris, France

Re: Memo install DHCP + BIND avec dyndns et rpz

Mon Aug 12, 2019 9:07 am

L’utilisation de .local comme nom de domaine est en conflit avec mDNS qui est actif par défaut sur Raspbian.
"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème." Les Shadoks, J. Rouxel

nikotinux
Posts: 707
Joined: Sat Feb 02, 2013 2:11 am

Re: Memo install DHCP + BIND avec dyndns et rpz

Mon Aug 12, 2019 9:48 am

tout a fait !! j'eus pu mettre localdomain mais on aurait pu croire que c'est limitatif alors que la config est valable pour un domaine internet.

et je pisse allégrement sur mDNS.

epoch1970
Posts: 4237
Joined: Thu May 05, 2016 9:33 am
Location: Paris, France

Re: Memo install DHCP + BIND avec dyndns et rpz

Mon Aug 12, 2019 10:01 am

nikotinux wrote:
Mon Aug 12, 2019 9:48 am
et je pisse allégrement sur mDNS.
Alors dis-le car tout le monde ne fait pas la différence entre les deux...
"S'il n'y a pas de solution, c'est qu'il n'y a pas de problème." Les Shadoks, J. Rouxel

nikotinux
Posts: 707
Joined: Sat Feb 02, 2013 2:11 am

Re: Memo install DHCP + BIND avec dyndns et rpz

Mon Aug 12, 2019 10:29 am

J'ai fait vraiment un mémo rapide ! on peut écrire tout un chapitre sur l'utilisation de RPZ, nouveauté controversée de bind9 mais qui est devenue pour moi indispensable, alors que je n'ai fait que l'invoquer !

Si je dois préciser aussi une nouveauté de debian, on trouve sur le net énormément de tutos ou les logs sont dans /var/log/bind qui font que bind ne démarre plus. La raison est la mise en fonction par défaut de apparmor, configuré pour les logs dans /var/log/named. On peut modifier ce comportement mais ce n'est pas recommandé.

iznobe
Posts: 376
Joined: Sun Feb 05, 2017 4:14 pm
Location: Avignon , FRANCE

Re: Memo install DHCP + BIND avec dyndns et rpz

Fri Aug 23, 2019 9:24 am

Bonjour ,

joli memo , mais pour un noob comme moi , quel est l ' interet final de toute cette demarche ?

quel est le but recherché de cette instal ?

nikotinux
Posts: 707
Joined: Sat Feb 02, 2013 2:11 am

Re: Memo install DHCP + BIND avec dyndns et rpz

Fri Aug 23, 2019 9:23 pm

Les serveurs Dhcp et Bind sont des outils et, comme tous les outils, on peut les trouver totalement inutiles ou complètement indispensables selon l'usage et la maîtrise que l'on en a. Chacun fait son choix, encore faut il savoir que l'outil existe et a quoi il sert ...

Je pense que tous ceux qui sont ici on une idée a peut prêt claire de ce qu'est un serveur Dhcp, je passe donc en vitesse.

Bind est un serveur DNS, il transforme une requête d'un nom de machine en adresse IP. C'est totalement indispensable a l'utilisation d'internet. Dans une utilisation classique a la maison, on utilise les serveurs de son provider ou ceux de Google ou autre. Ces serveurs ne connaissent bien sur pas la topologie du réseau de la maison et il est donc inutile de leurs demander l'adresse IP de l'imprimante qui est dans le bureau. C'est quand on a besoin de ce genre de service que la mise en place d'un serveur DNS dans un réseau local ce fait sentir. Bien sur il sert aussi a faire des requêtes pour les nom de machines sur internet.
Dans la config que j'ai présenté, on renseigne au départ dans la zone locale les adresse IP des machines avec une adresse fixe. Ensuite le serveur Dhcp communiquera avec Bind pour l'informer de l'arrivée ou de la disparition des machines qu'il connaît pour que Bind tienne a jour la liste des machines du réseau local et de leurs IP correspondante.
Quant a la zone rpz, elle permet, grosso modo, de faire mentir les requêtes sur les noms de domaines internet. Elle peut servir par exemple a faire du contrôle parentale ou comme AdBlock, avec une portée sur tous les services et sur toutes les machines du réseau.

Je suis dispo pour plus éclaircissements !!

Return to “Français”