Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Bind9 sous Debian : un ping ne fonctionne pas

23 réponses
Avatar
Francois
Bonjour à tous,

Je suis en train d'apprendre à faire un petit serveur DNS simplement en
"mode cache" (le DNS ne fait que renvoyer la balle au DNS de mon FAI)
sous une debian 5.0 version stable et j'ai du mal. Je vais essayé d'être
complet, désolé pour la longueur du message.

a) Je "suis derrière" ma freebox dont le dhcp n'est pas activé.

b) J'ai une distribution ubuntu qui me sert de client DNS dont les
paramètres sont :
IP = 192.168.0.1 avec le masque 255.255.255.0
Passerelle par défaut = 192.168.0.254 (IP de la freebox)
DNS = 192.168.0.2 (IP de la debian, le serveur DNS)

c) Sur Ubuntu j'ai installé en OS virtuel une debian donc, que j'essaye
de transformer en serveur DNS. Voici ses paramètres :
IP = 192.168.0.2 avec le masque 255.255.255.0
Passerelle par défaut = 192.168.0.254 (IP de la freebox)
Le domaine qu'elle est censée gérer s'appelle "dom" et le PC-serveur DNS
s'appelle "debian".

Voici certains fichiers sur le serveur DNS (debian) que j'ai
laborieusement essayé d'éditer correctement (sachant que j'ai installé
le paquet bind9 dessus) :

----------------
# /etc/host.conf
order hosts, bind
----------------

----------------
# /etc/hosts
127.0.0.1 localhost.dom localhost
192.168.0.2 debian.dom debian

# et des trucs qui étaient là au départ
# semble-t-il pour gérer l'IP6...
----------------

----------------
# /etc/resolv.conf
nameserver 127.0.0.1
domain dom
----------------

----------------
# /etc/bind/named.conf qui modulo des include donne ceci :

acl "dom" { 127.0.0.0/8; 192.168.0.0/24; };

options {
directory "/var/cache/bind";
allow-query { "dom"; };
forward first;
forwarders {
212.27.40.241; // DNS de free
212.27.40.240; // DNS de free
};
}

zone "." {
type hint;
file "/etc/bind/db.root";
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
----------------


Voilà pour la configuration. Et bien le DNS fonctionne un peu dans le
sens où pour aller chercher des hôtes sur le net (je parle du client
ubuntu), ça fonctionne. Et quand je tue le processus "named" (c'est bien
le processus du DNS ???) sur ma debian et bien là plus de navigation
possible sur Internet avec le client (Ubuntu) il n'arrive plus à
résoudre les noms. Par contre, pour avec le terminal d'ubuntu, un simple :

$ ping debian.dom

me renvoie un :

ping: unknown host debian.dom

Donc le DNS ne fait pas bien son travail et je ne vois absolument pas
pourquoi ? Si vous avez des idées... J'y est passé du temps et je
commence à m'embrouiller.

Au passage, je croyais que les deamons étaient tous répertoriés dans
/etc/init.d/. Or je ne vois pas de "named" dans ce répertoire, mais je
vois un "bind9". C'est normal ça ? On lance le deamom comment ? Avec la
commande "named" ou en lançant le script /etc/init.d/bind9 ? Est-ce
équivalent ? Dans mon esprit, ça me complique les choses, déjà que je
trouve ça compliqué...

Merci de m'avoir lu jusqu'au bout (et bravo ;-)).


À bientôt.



--
François Lafont

10 réponses

1 2 3
Avatar
La Bete des Vosges (Francis Chartier)
Le Wed, 22 Apr 2009 18:48:20 +0200, Fabien LE LEZ a écrit :

À un détail près : BIND est nettement plus chiant à installer sous
Windows que sous Linux.



Aucune idée, quand j'ai eu à installer un serveur DNS je ne me suis même
pas posé la question de le faire sous Windows.


--
La Bête des Vosges
Avatar
Antoine EMERIT
Francois écrivait
news:49edc09c$0$6721$:

Bonjour à tous,



Bonjour,

Au passage, je croyais que les deamons étaient tous répertoriés dans
/etc/init.d/. Or je ne vois pas de "named" dans ce répertoire, mais je
vois un "bind9". C'est normal ça ? On lance le deamom comment ? Avec
la commande "named" ou en lançant le script /etc/init.d/bind9 ? Est-ce
équivalent ? Dans mon esprit, ça me complique les choses, déjà que je
trouve ça compliqué...



Petite précision qui facilite la compréhension de cette histoire de DNS :

- 'bind' est le nom propre d'un serveur DNS (voir http://www.isc.org/).
C'est une des implémentations (libres) du protocol DNS.

- 'bind9' est le nom symbolique de la série 9.x de bind, et on le
retrouve en général dans le nom du package intégré aux distributions
Linux et comme nom de script de démarrage (/etc/init.d/bind9) et des
fichiers de configurations (/etc/bind).

- 'named' est le nom du binaire fourni par bind, c'est-à dire le nom du
démon qui s'exécute sur le serveur.

Donc on parle de bind ou de named pour la même chose, mais on ne retrouve
pas d'exécutable nommé bind sur le serveur.


Bind (named en fait) sers à la machine local à travers les fichiers de
configuration /etc/host.conf (ordre des résolutions de noms sur le
serveur lui-même) et /etc/resolv.conf (liste des serveurs DNS a appeler,
et suffixe de domaine par défaut pour les recherches, localement au
serveur). Ces 2 fichiers font parti de la librairie client 'resolv'
utilisée par les programmes qui tournent sur la machine.

Dans le cas d'un poste client de type *nix ce sont les fichiers
/etc/host.conf et /etc/resolv.conf du poste client qui sont utilisées et
non pas ceux du serveur. Il n'y a aucun lien entre le client et le
serveur pour ces fichiers.

En revanche, quand le poste client accède au serveur DNS, il intéragie
directement avec le binaire named qui résoud pour lui les noms de
machine. Ce sont alors uniquement les fichiers de bind, contenu en
général dans /etc/bind, qui entrent en jeux.


A+
Avatar
Francois
Déjà, je remercie tout ceux qui m'ont apporté des éléments de réponses
et autres suggestions. J'ai eu le temps de faire quelques tentatives
mais sans succès. Je ne suis pas du tout au clair, loin de là, avec la
configuration des zones et il faudra donc que je lise de la doc. Bref,
je pense que je ne solutionnerai pas mon problème tout de suite. :-)

Antoine EMERIT a écrit :

Donc on parle de bind ou de named pour la même chose, mais on ne retrouve
pas d'exécutable nommé bind sur le serveur.



Question simple et précise : y a t-il une différence entre les deux
commandes suivantes ?

1) named
2) /etc/init.d/bind9 start

Merci pour vos précisions.

--
François Lafont
Avatar
YBM
Francois a écrit :
Déjà, je remercie tout ceux qui m'ont apporté des éléments de réponses
et autres suggestions. J'ai eu le temps de faire quelques tentatives
mais sans succès. Je ne suis pas du tout au clair, loin de là, avec la
configuration des zones et il faudra donc que je lise de la doc. Bref,
je pense que je ne solutionnerai pas mon problème tout de suite. :-)

Antoine EMERIT a écrit :

Donc on parle de bind ou de named pour la même chose, mais on ne
retrouve pas d'exécutable nommé bind sur le serveur.



Question simple et précise : y a t-il une différence entre les deux
commandes suivantes ?

1) named
2) /etc/init.d/bind9 start



Lis le script /etc/init.d/bind9, tu verras bien ce qu'il lance
quand tu luis passe l'argument start.

En réalité on s'en fout : le paquet Debian fournit le script
/etc/init.d/bind9 qui *nécessairement* lance (ou arrête, relance,
etc.) BIND correctement (en allant lire la conf comme il faut, en
le lançant avec le bon user, etc.), DONC il FAUT utiliser ce
script pour lancer BIND.

Pour lui demander de relire sa configuration tu as le choix par contre :
/etc/init.d/bind9 reload ou bien rndc reload reviennent au même.
Avatar
Regis
Antoine EMERIT a écrit :
[Une longue explication]

Merci Antoine, je viens de prendre une lecon et ca me fait plaisir de
voir qu'il y a des gens assez passionnes pour donner de telles
precisions afin de faciliter la comprehension ; merci encore.

Amicalement,

Regis.

--
Avatar
Francois
(Re)bonjour à tous,

YBM a écrit :

DONC il FAUT utiliser ce script (bind9) pour lancer BIND.



Ok, c'est compris merci.


Je remonte ce fil car j'ai eu récemment le temps de me pencher à nouveau
sur bind9 et je pense être arrivé à quelque chose, mais j'aimerais votre
avis et j'ai quelques questions aussi. Je vous rappelle ce que je
voulais faire :

* Pour l'instant je suis en IP fixes partout ;
* j'ai une connexion Internet via un routeur dont l'IP côté LAN est
192.168.0.254 ;
* j'ai un PC tournant sur une debian qui est le serveur DNS. Son nom est
"debian" et ce serveur va faire autorité sur le domaine
"mondomaine.local." et sinon il redirigera les requêtes vers les DNS de
mon FAI ;
* j'ai un PC membre du domaine sur Ubuntu dont le nom est franPC
d'adresse IP (fixe) 192.168.0.1 ;
* j'ai un PC client sur XP PRO dont le nom est XPPRO d'adresse IP
192.168.0.2.

Modulo les "includes", voici mon fichier /etc/bind/named.conf (j'ai
laissé des lignes qui était là par défaut et qu'il ne faut pas toucher
apparemment) :

--------------------------------------------------
acl "mon_reseau" {127.0.0.1; 192.168.0.0/24;};

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

allow-query { "mon_reseau"; };

forward only;
forwarders {
212.27.40.241;
212.27.40.240;
};

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


// prime the server with knowledge of the root servers

zone "." {
type hint;
file "/etc/bind/db.root";
};

// be authoritative for the localhost forward and
// reverse zones, and for broadcast zones as per
// RFC 1912

zone "localhost" {
type master;
file "/etc/bind/db.local";
};

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

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

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

// --------MES ZONES------------

zone "mondomaine.local" {
type master;
file "db.mondomaine.local";
};

zone "0.168.192.in-addr.arpa" {
type master;
file "db.0.168.192.reverse";
};
--------------------------------------------------

Voici les deux fichiers /var/cache/bind/db.mondomaine.local
et /var/cache/bind/db.0.168.192.reverse :

----------------db.mondomaine.local-----------------
$TTL 1w
@ IN SOA debian.mondomaine.local. root.debian.mondomaine.local.(
2009050305
21600
1800
604800
900)

IN NS debian.mondomaine.local.

localhost IN A 127.0.0.1
debian IN A 192.168.0.253
franPC IN A 192.168.0.1
XPPRO IN A 192.168.0.2
--------------------------------------------------

-------------db.0.168.192.reverse-----------
$TTL 1w
@ IN SOA debian.mondomaine.local. root.debian.mondomaine.local.(
2009050305
21600
1800
604800
900)

IN NS debian.mondomaine.local.

253 IN PTR debian.mondomaine.local.
1 IN PTR franPC.mondomaine.local.
2 IN PTR XPPRO.mondomaine.local.
--------------------------------------------------

J'ai paramétré le résolveur ainsi :

-------------/etc/resolv.conf---------------------
nameserver 192.168.0.253 # j'ai mis 127.0.0.1 pour le DNS lui-même
domain mondomaine.local.
--------------------------------------------------

-------------/etc/host.conf---------------------
order hosts, bind
--------------------------------------------------

1) Est-ce que cela vous paraît correct ?

2) Quand je fais "dig debian" sur le PC franPC, ça fonctionne et à la
deuxième tentative on voit bien que le cache du DNS fonctionne car j'ai
un "Query time" beaucoup plus rapide. Mais l'adresse IP de debian
n'apparaît pas dans la sortie de la commande, est-ce normal ?
Si je fais "dig debiannnnnn", le nom est résolu aussi semble-t-il, mais
comment puis-je savoir qu'il est résolu négativement ?

3) Là je suis en IP fixe et donc au démarrage d'un "membre du domaine"
(par exemple de franPC), il faut que je configure correctement son
résolveur. Pour que la configuration se fasse automatiquement au
démarrage, j'ai édité le fichier /etc/rc.local comme ceci :

--------------------------------------------------
# On configure la carte reseau en IP fixe
# et on parametre la passerelle par defaut
ifconfig eth0 192.168.0.1
route add default gw 192.168.0.254

# On regle les parametres du resolveur
echo "
nameserver 192.268.0.253 # j'ai mis 127.0.0.1 pour le DNS lui-même
domain mondomaine.local.
" > /etc/resolv.conf

exit 0
--------------------------------------------------

Dans le cadre d'une politique en IP fixes, est-ce une manière correcte
de s'y prendre (notamment le fait de passer par le fichier
/etc/rc.local) ? Bon j'ai conscience que la bonne politique serait de
passer en DHCP, j'ai l'intention de me documenter sur ce point (quand
j'aurais le temps)...

4) Si j'ai une nouvelle machine que je veux intégrer au domaine, me
suffit-il de faire ceci ?
a) paramétrer son IP, sa passerelle et son résolveur (comme dans 3. ?)
b) puis, sur le serveur DNS, mettre une ligne supplémentaire dans les
deux fichiers /var/cache/bind/db.mondomaine.local
et /var/cache/bind/db.0.168.192.reverse

-----------pour db.mondomaine.local
lenouveau IN A 192.168.0.3
-----------

et

-----------pour db.0.168.192.reverse
3 IN PTR lenouveau.mondomaine.local.
-----------

Existe-t-il une commande pour ajouter un membre dans le domaine sans
éditer à la main les fichiers de zones ?


Merci d'avance et désolé pour ce message un peu fleuve.

--
François Lafont
Avatar
Francois
Francois a écrit :

Je remonte ce fil car j'ai eu récemment le temps de me pencher à nouveau
sur bind9 et je pense être arrivé à quelque chose...



J'ai parlé un peu vite car il y a quand même ceci que je ne comprends pas :

5) Si je tape sur le poste membre franPC :
$ ping debian
ça fonctionne, mais si je tape
$ ping debian.mondomaine.local.
il me répond "ping: unknown host debian.mondomaine.local." ???
Sur le serveur DNS, je n'ai pas ce problème.

Avez vous une explication ?



--
François Lafont
Avatar
Tarasz
Le Sun, 03 May 2009 16:12:39 +0200, Francois a écrit :

5) Si je tape sur le poste membre franPC : $ ping debian
ça fonctionne, mais si je tape
$ ping debian.mondomaine.local.
il me répond "ping: unknown host debian.mondomaine.local." ??? Sur le
serveur DNS, je n'ai pas ce problème.



Avez vous une explication ?



debian.mondomaine.local n'a pas été ajouté dans le fichier /etc/hosts de
la machine franPC
On doit trouver:

127.0.0.1 localhost
192.168.0.1 franPC.mondomaine.local franPC
192.168.0.2 XPPRO.mondomaine.local XPPRO
192.168.0.x debian.mondomaine.local debian

Et ça devrait rouler...
Avatar
YBM
Francois a écrit :
Francois a écrit :

Je remonte ce fil car j'ai eu récemment le temps de me pencher à
nouveau sur bind9 et je pense être arrivé à quelque chose...



J'ai parlé un peu vite car il y a quand même ceci que je ne comprends pas :

5) Si je tape sur le poste membre franPC :
$ ping debian
ça fonctionne, mais si je tape
$ ping debian.mondomaine.local.
il me répond "ping: unknown host debian.mondomaine.local." ???
Sur le serveur DNS, je n'ai pas ce problème.

Avez vous une explication ?



Commencez par utiliser un outil adapté afin de tester votre
configuration DNS : host et non ping :

host debian
host debian.mondomaine.local

éventuellement avec l'option -v (verbeux).
Avatar
Francois
YBM a écrit :

5) Si je tape sur le poste membre franPC :
$ ping debian
ça fonctionne, mais si je tape
$ ping debian.mondomaine.local.
il me répond "ping: unknown host debian.mondomaine.local." ???
Sur le serveur DNS, je n'ai pas ce problème.

Avez vous une explication ?



Commencez par utiliser un outil adapté afin de tester votre
configuration DNS : host et non ping :

host debian
host debian.mondomaine.local

éventuellement avec l'option -v (verbeux).



Merci pour cette réponse qui me fait avancer. En fait (et ça rejoint un
peu la question 2 de mon long message précédent), j'utilisais la
commande dig, car on m'avait déjà fait la remarque (à juste titre) sur
la non pertinence de la commande ping. Mais je n'arrive pas à savoir
avec dig si le nom est résolu positivement (le serveur DNS à trouver un
hôte correspondant) ou négativement (le serveur DNS estime qu'il n'y a
pas d'hôte correspondant) : par exemple "dig debiannnn" me renvoyait un
message qui ne me semblait pas très différent de "dig debian" et
d'ailleurs j'aimerais bien comprendre ceci.

La commande host est exactement ce que je recherchais et ça me donne ça :

:~$ host debian
debian.mondomaine.local has address 192.168.0.253
:~$ host debian.mondomaine.local.
debian.mondomaine.local has address 192.168.0.253

Donc le DNS semble faire son travail. Ça confirme une fois encore la non
pertinence de ping. Mais du coup, je comprends encore moins pourquoi le
ping ne fonctionne pas ?

:~$ ping debian.mondomaine.local.
ping: unknown host debian.mondomaine.local.


--
François Lafont
1 2 3