Bind avoir deux types de requètes

Bonjour,

J’ai une zone noeud3.noeud.2.noeud1. Le serveur feuille1 (feuille1.noeud3.noeud2.noeud1) a autorité sur la zone.
Je dois faire en sorte que feuille1 résout des noms de domaines sur lesquels il n’a pas autorité par des requêtes itératives sur les serveurs root.

Mais le problème c’est que je dois faire des requêtes itérative sur la zone dont je n’ai pas autorité et des récursive sur la zone dont j’ai autorité.

Je voulais au début utilisé l’option forwaders et mettre les adresses des serveurs racines dedans mais je ne sais pas comment appliquer seulement les requêtes itératives qu’a eux

j’ai crée deux zones dans mon fichier named.conf.local

view "zoneConnue" 
{
	match-clients {192.168.0.0/16;};
	recursion yes;
	zone "stic.univ.run"
	{
		type master;
		file "/etc/bind/stic.univ.run.db";
	};

	zone "168.192.in-addr.arpa"
	{
		type master;
		file "/etc/bind/168.192.in-addr.arpa.db";
	};

}

view "zonesInconnues"
{
	match-clients {192.168.0.0/16;};
	recursion no;
	zone "."
	{
		type hint;
		file "/etc/bind/serveurs_racines.db";
	};

}

le fichier serveur_racines.db

;
; BIND data file for local loopback interface
;
$TTL	2d ; 2 jours
$ORIGIN .
@	IN	SOA	. root. (
			27022017	; Serial
			7200		; Refresh
			900		; Retry
			2300000		; Expire
			604800 )	; Negative Cache TTL
;

.	IN      NS      A.
.	IN      NS      B.
.	IN      NS      C.
.	IN      NS      D.
.	IN      NS      E.
.	IN      NS      F.
.	IN      NS      G.
.	IN      NS      H.
.	IN      NS      I.
.	IN      NS      J.
.	IN      NS      K.
.	IN      NS      L.
.	IN      NS      M.
A.	IN      A       198.41.0.4
B.	IN      A       128.9.0.107
C.	IN      A       192.33.4.12
D.	IN      A       128.8.10.90
E.	IN      A       192.203.230.10
F.	IN      A       192.5.5.241
G.	IN      A       192.112.36.4
H.	IN      A       128.63.2.53
I.	IN      A       192.36.148.17
J.	IN      A       198.41.0.10
K.	IN      A       193.0.14.129
L.	IN      A       198.32.64.12
M.	IN      A       202.12.27.33

Pas seulement sur les serveurs racines. Ils ne sont que la première étape de la résolution itérative.

Mauvaise idée. Les “forwarders” sont censés être des serveurs récursifs, alors que les serveurs racine sont des serveurs faisant autorité (pour la zone racine) non récursifs.

La “récursion” peut se faire de deux façons :

  • en faisant suivre toutes les requêtes récursives à un ou plusieurs serveurs récursifs définis dans l’option “forwarders”
  • ou en faisant la résolution itérative soi-même consistant à interroger les serveurs faisant autorité en partant de racine, si aucun forwarder n’est défini ou ne répond et si l’option “forward” n’est pas définie à “only”.[quote=“correction, post:1, topic:72797”]
    j’ai crée deux zones
    [/quote]
    Ce ne sont pas des zones mais des vues. Tu n’as pas besoin de vues pour faire ce que tu veux
    Le contenu de la seconde vue est aberrant (récursion désactivée et zone racine de type “hint”). De toute façon elle ne devrait jamais être utilisée puisqu’elle a le même critère de sélection que la première vue.

Bonjour,

en faisant la résolution itérative soi-même consistant à interroger les serveurs faisant autorité en partant de racine, si aucun forwarder n’est défini ou ne répond et si l’option “forward” n’est pas définie à “only”.

j’ai pas trop compris ^^ , pour faire la résolution itérative je mets rien ?

Rien dans la liste des forwarders. Cela forcera BIND à faire la résolution récursive en interrogeant les serveurs faisant autorité (résolution itérative).

J’ai mis forwaders { }; et j’obtiens une erreur quand je fais nslookup.

La topologie qui j’ai mis en place est :
deux zones : noeud3.noeud2.noeud1 et noeud4.noeud3.noeud2.noeud1
feuille1 a autorité sur la zone noeud3.nœud.2.noeud1 et il délègue la zone noeud4 à feuille3 (qui dans la zone de noeud4 )

quand feuille3 reçoit une requête dont il n’a pas autorité il renvoie cette requête à feuille1.
j’ai une machine m1 qui est dans la zone de noeud4

feuille1.noeud3.nœud.2.noeud1 a l’ip suivant : 192.168.100.1
feuille3.noeud4.noeud3.noeud2.noeud1 : 192.168.100.3

donc normalement quand je fais une requête sur google.fr à partir m1 ca doit donnée ca:
m1 -> s3 -> s1 -> …

dans la machine m1 quand je fais nslookup google.fr j’obtiens cette erreur :

    ;; Got SERVFAIL reply from 192.168.100.3, trying next server
    Server:		192.168.100.3
    Address:	192.168.100.3#53

    ** server can't find google.fr: NXDOMAIN 

si non quand je fais nslookup s1.noeud3.nœud.2.noeud1 ou s3.noeud4.noeud3.nœud.2.noeud1
ça fonctionne parfaitement.

Tu as mis forwarders {} sur quel(s) serveur(s) ?
feuille1 arrive à résoudre des noms extérieurs ?

Note : les noms des NS dans ton fichier de zone racine ne sont pas les vrais.

J’ai enlevé le fichier ou il y a les ip des serveurs racines.
J’ai mis le forwaders dans feuille1.

fichier de feuille1

noeud3.noeud2.noeud1.db

;
; BIND data file for local loopback interface
;
$TTL	2d ; 2 jours
$ORIGIN noeud3.noeud2.noeud1.
@	IN	SOA	feuille1.noeud3.noeud2.noeud1. root.noeud3.noeud2.noeud1. (
			23022017	; Serial
			7200		; Refresh
			900		; Retry
			2300000		; Expire
			604800 )	; Negative Cache TTL
;
@	IN	NS	feuille1.noeud3.noeud2.noeud1
feuille1.noeud3.noeud2.noeud1	IN	A	192.168.100.1	
noeud4.noeud3.noeud2.noeud1	IN	NS	feuille3.noeud4.noeud3.noeud2.noeud1
feuille3.noeud4.noeud3.noeud2.noeud1	IN	A	192.168.100.3

named.conf.options

options {
	auth-nxdomain no;    # conform to RFC1035
	//listen-on-v6 { any; };
	//recursion yes;

	forwarders 	{};
	directory "/var/cache/bind";
}

Si tu n’actives pas la récursion, ça ne risque pas de marcher.

ça marche ^^, mais je ne comprends pas comment feuille1 sait quel serveur il doit contacter quand on fait google.fr ?

En suivant le processus de résolution itérative, bien sûr.

Au départ BIND ne connaît qu’une liste de serveurs racines initiale fournie par le fichier de zone “.” de type spécial “hint”. Au démarrage, il va interroger un de ces serveurs pour récupérer la liste à jour.

Ensuite, pour résoudre le nom “google.fr”, BIND envoie les requêtes suivantes :

  • google.fr” à un des serveurs racine qui renvoie la liste des NS de la zone “fr”, avec leurs adresses IP (glue records)
  • google.fr” à un des serveurs de la zone “fr” qui renvoie la liste des NS de la zone google.fr, sans leurs adresses IP car leurs noms sont en .com, pas en .fr ; BIND lance donc un sous-processus de résolution pour obtenir l’adresse de l’un d’eux, par exemple ns1.google.com :
  • ns1.google.com” à un des serveurs racine qui renvoie la liste des NS de la zone “com”, avec leurs adresses IP
  • ns1.google.com” à un des serveurs de la zone “com” qui renvoie la liste des NS de la zone “google.com” avec leurs adresses IP car ils sont en .com (glue records) ; ce sont les mêmes que pour la zone “google.fr”, donc fin du sous-processus
  • google.fr” à un des serveurs de la zone “google.fr” qui renvoie l’adresse IP.

bonjour,
merci de votre aide.