Photographies, informatique et bien d'autres choses…

Serveur dédié – IP Failover, DNS et Reverse IP

9 septembre 2010 | Posté dans Serveur dédié | Vu 1 437 fois

Aujourd’hui nous allons nous attaquer à une étape qui demande de la patience, beaucoup de patience. Il s’agit de la configuration des DNS sur une adresse IP FailOver et de son Reverse IP.

Vous avez l’impression que je parle chinois ? Alors voici quelques explications :

Les serveurs DNS (Domain Name System) sont des serveurs capables de gérer un ou plusieurs niveaux de domaines, ce sont eux qui indiquent à votre navigateur sur quel serveur (ou plutôt sur quelle adresse IP) se trouve le site web que vous recherchez. C’est pourquoi lorsque vous commandez un nouveau nom de domaine, vous devez indiquer au moins deux serveurs DNS configurés correctement afin que ceux-ci puissent rediriger les visiteurs de votre site web vers le bon serveur. Et pourquoi deux me direz-vous ? Tout simplement pour palier à une éventuelle panne de l’un d’entre eux. Pour celles et ceux qui aimeraient plus d’information sur ce sujet, le site du zéro fourni une explication claire et détaillée.

Le problème avec les serveurs DNS, c’est qu’ils ne sont pas mis à jour en permanence, mais seulement à intervalles plus ou moins régulières, c’est pourquoi on dit qu’il faut compter entre 10 minutes et 48 heures pour la propagation des DNS et pour que votre serveur puisse être atteint via son nom de domaine.

Venons-en maintenant à l’IP FailOver. Tout serveur dédié se voit attribuer une adresse IP fixe, laquelle vous permet de vous connecter directement à votre serveur. Nous pourrions configurer les DNS et tous nos sites directement dessus, mais que se passerait-il si notre serveur devenait trop faible et que nous devions en prendre un plus performant ? Nous devrions tout configurer avec la nouvelle adresse IP du nouveau serveur et attendre à nouveau quelques heures voire quelques jours que la propagation des DNS se fasse, ce qui risquerait de provoquer des problèmes d’accès à tous nos sites web, et ce ne serait pas professionnel du tout ! Et c’est là qu’intervient l’IP FailOver.


Une IP FailOver est une adresse IP fixe supplémentaire que nous pouvons attribuer à n’importe lequel de nos serveurs. Nous pouvons même en avoir plusieurs pour un seul et même serveur. Ainsi, si votre serveur commence à atteindre ses limites, vous pouvez en commander un nouveau, vous y connecter via son adresse IP fixe, le configurer entièrement, copier les données de votre premier serveur puis, via le Manager d’OVH, rediriger l’IP FailOver sur le nouveau serveur et toutes les requêtes seront directement transmises au nouveau serveur, sans avoir à changer quoi que ce soit auprès de notre registrar.

Et le Reverse IP alors, qu’est-ce que c’est ? Et bien tout simplement, il s’agit de faire l’inverse de ce que fait normalement un serveur DNS. Lorsque vous demandez à un serveur DNS ou se trouve le site monsiteweb.ch, celui-ci va vous donner en retour l’adresse IP du serveur où se trouve le site en question. Le Reverse IP permet tout simplement de connaître le nom du serveur correspondant à une adresse IP donnée. Mais un exemple sera sans doute plus clair :

Quand vous essayez de vous connecter à un site web, votre navigateur va demander à ses serveurs DNS quelle est ou quelles sont les adresses IP du serveur :
[moi@chez-moi:~]$ nslookup e-grisel.net
Server:        192.168.1.1
Address:    192.168.1.1#53
Non-authoritative answer:
Name:    e-grisel.net
Address: 80.74.157.22

Nous voyons ainsi que l’adresse IP de mon site est 80.74.157.22, et si nous effectuons l’inverse :
[moi@chez-moi:~]$ nslookup 80.74.157.22
Server:        192.168.1.1
Address:    192.168.1.1#53
Non-authoritative answer:
22.157.74.80.in-addr.arpa    name = sinope.kreativmedia.ch.
Authoritative answers can be found from:

Comme vous le voyez, une recherche sur l’adresse IP de mon site web nous redirige vers sinope.kreativmedia.ch, le serveur qui héberge ce site. Cette fonction est souvent utilisée par les serveurs de mail pour vérifier que le serveur envoyer l’e-mail est bien un serveur et non pas un ordinateur personnel piraté qui essaie d’envoyer du spam. Aussi, si vous ne voulez pas que tous les mails que vous envoyez soient directement marqués comme spam, configurez bien votre Reverse IP.

Bien, maintenant que la théorie est faite, passons à la pratique.

Obtenir une IP FailOver

Pour cela rendez-vous dans votre manager, dans la rubrique Services puis dans la section Gestion IP et sélectionnez IP FailOver. Ensuite, cliquez sur Ajouter une IP Fail-Over, sélectionnez le pays correspondant à votre site web et choisissez le réseau que vous désirez. Il ne reste plus qu’à indiquer à quoi va vous servir cette IP FailOver et sur quelle IP fixe la router.

Configuration des DNS

La configuration des DNS se passe dans le dossier /etc/bind/. Les fichiers que nous allons modifier sont named.conf.local dans lequel nous allons enregistrer chacun des sites web que nous hébergerons, named.conf.options dans lequel nous configurerons les options nécessaires à la communication avec le serveur DNS secondaire d’OVH et nous allons aussi créer un fichier de type db.mondomaine.ch pour chaque domaine qui contiendra la configuration personnalisée du domaine.

named.conf.local

Dans ce fichier nous allons enregistrer une zone pour chacun de nos domaines comme suit :

zone "mondomaine.ch" {
    type master;
    file "/etc/bind/db.mondomaine.ch";
    allow-transfer {213.186.33.199; };
};

Dans la zone, indiquez votre nom de domaine entre guillemets, sans le www. Le type master indique que nous sommes en train de configurer le serveur DNS primaire. La ligne file « /etc/bind/db.mondomaine.ch »; indique où se situe le fichier de configuration de ce domaine, et la directive allow-transfer indique l’adresse IP du serveur DNS secondaire (dans mon cas, il s’agit de l’adresse IP de ns.kimsufi.com) afin que celui-ci soit autorisé à récupérer les informations de notre serveur DNS.

db.mondomaine.ch

Il s’agit ici du fichier indiqué précédemment dans la zone de notre domaine. C’est le fichier le plus important, car c’est ici que nous indiquons l’adresse IP du serveur hébergeant notre domaine.

$TTL    3H

@       IN      SOA     ns.mondomaine.ch.     postmaster.mondomaine.ch. (
                                              2010090805
                                              8H
                                              2H
                                              1W
                                              1D )

@       10800   IN      NS      ns.mondomaine.ch.
@       10800   IN      NS      ns.kimsufi.com.

@       10800   IN      A       188.165.37.xx
www     10800   IN      A       188.165.37.xx
ns      10800   IN      A       188.165.37.xx

La valeur de $TTL donne la durée de vie en secondes de l’enregistrement dans les caches. Le caractère @ remplace le nom de notre zone (dans notre exemple, mondomaine.ch, si vous préférez indiquer directement votre nom de domaine, n’oubliez pas d’ajouter un « . » à la fin). Après le SOA (Start Of Authority), nous devons indiquer notre serveur DNS primaire (ns.mondomaine.ch), suivi d’un « . » puis d’une adresse e-mail valide suivie directement d’un « . ». Remarquez que le @ est remplacé par un point. Si votre adresse e-mail contient un « . », vous devez l’échapper avec un « \ » (par exemple : etienne\.grisel.mondomaine.ch.). S’ensuit entre parenthèses les données suivantes :

serial : 2010090805 ; il s’agit d’un numéro de série composée de l’année, du mois, du jour et d’un numéro incrémenté à chaque modification (YYYYMMDD01)

refresh : 8H ; Ce paramètre donne l’intervalle de temps en secondes (ou abrégée en heures ou en jours) entre deux vérifications du numéro de série (serial) par le serveur DNS. La valeur recommandée est de 24 heures (1D ou 24H ou 86400) et devra être réduite si les modifications sont fréquentes pour cette zone.

retry : 2H ; La vérification du numéro de série par un serveur secondaire peut se solder par un échec dû par exemple à des problèmes de connexion. Dans ce cas la valeur du retry donne l’intervalle en secondes entre deux tentatives de lecture du serial du fichier de zone. La valeur recommandée est 21400, soit 6 heures. Elle devra être ajustée en fonction de la connectivité entre les serveurs autoritaires de la zone.

expire : 1W ; Un serveur peut ne pas réussir à vérifier le serial ou à transférer le fichier de zone. Le paramètre expire donne le temps maximum pendant lequel les données du serveur secondaire peuvent être diffusées avant d’être considérées comme périmées, si aucune vérification ni transfert de zone n’ont pu être effectuées depuis leur téléchargement. La valeur recommandée est de 3600000, soit 41 jours. Cette valeur doit être au minimum 7 fois plus importante que la valeur du refresh, sinon le registrar de votre nom de domaine risque de refuser l’inscription de notre serveur comme DNS.

ttl : 1D ; Défini la durée de vie pour le negative caching, c’est-à-dire le temps qu’une réponse négative doit rester dans les caches.

Ensuite les deux lignes contenant l’enregistrement NS, soit les serveurs DNS qui gèrent notre nom de domaine. Le @ reprend notre nom de zone, le chiffre représente la TTL (Time To Live) spécifique à cette ligne, le IN indique que nous sommes dans une classe internet (la seule encore vraiment utilisée de nos jours), le NS indique que nous parlons des serveurs de noms (DNS) et pour finir nous indiquons le nom de notre serveur. N’oubliez pas d’indiquer le « . » à la fin des noms des serveurs DNS, sinon le programme croira qu’il doit encore ajouter notre zone à la fin de la ligne (ce qui nous donnerait ns.mondomaine.ch.mondomaine.ch et ns.kimsufi.com.mondomaine.ch) et rendrait notre configuration inutilisable.

Pour finir nous mettons en correspondance notre adresse IP FailOver et les noms de machines. Encore une fois, le @ remplace notre zone (mondomaine.ch), le www indique notre sous-domaine principal (comme il n’y a pas de « . » après www, le programme l’interprète comme étant www.mondomaine.ch.) et le ns indique le sous-domaine correspondant à notre serveur DNS.

Je reviendrai sur ce fichier lors de la configuration du serveur de mail, car nous devrons y ajouter une ligne pour indiquer au serveur DNS où il se situe.

Vous trouverez plus d’information sur les différentes options de ce fichier sur le site de l’afnic.

named.conf.options

Dans ce fichier, nous allons uniquement commenter deux lignes avec un double « // » et ajouter la ligne allow-transfer pour permettre au serveur secondaire d’accéder à notre serveur DNS. Modifiez le fichier pour qu’il ressemble à ça :

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

        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.

        // forwarders {
        //      0.0.0.0;
        // };

        auth-nxdomain no;    # conform to RFC1035
//      listen-on-v6 { ::1; };
//      listen-on { 127.0.0.1; };
        allow-recursion { 127.0.0.1; };
        allow-transfer { 213.186.33.199; };
};

Les lignes modifiées sont indiquées en gras.

Reverse IP

Comme indiqué précédemment, la reverse IP permet de mettre en correspondance notre adresse IP FailOver (dans mon cas 188.165.37.xx) avec le nom de notre serveur (ns.mondomaine.ch).

Pour commencer, nous allons reprendre notre fichier named.conf.local et nous allons y ajouter la zone suivante :

zone "37.165.188.in-addr.arpa" {
    type master;
    file "/etc/bind/db.mondomaine.ch.rev";
};

Le nom de la zone est composé de notre adresse IP FailOver inversée, sans le dernier chiffre et suivie de .in-addr.arpa (dans mon cas, l’adresse IP 188.165.37.xx devient 37.165.188 suivie de .in-addr.arpa). Le nom du fichier utilisé est identique au précédant, sauf que nous y avons ajouté .rev pour éviter d’écraser le fichier configuré précédemment. Vous pouvez mettre n’importe quel nom de fichier, du moment que vous créer bien un fichier de ce nom contenant la configuration que nous allons voir maintenant.

/etc/bind/db.mondomaine.ch.rev
Ce fichier est très semblable au précédent, mais il y a quand même quelques petites différences à ne pas louper :

$TTL    3H

@       IN      SOA     ns.mondomaine.ch.     postmaster.mondomaine.ch (
                        2010090805
                        8H
                        2H
                        1W
                        1D )

@       10800   IN      NS      ns.mondomaine.ch.
@       10800   IN      NS      ns.kimsufi.com.

xx       IN      PTR     ns.mondomaine.ch.

Les premières lignes sont identiques au fichier précédent, nous avons uniquement supprimé la correspondance entre notre zone et notre adresse IP FailOver, que nous remplaçons par la dernière ligne indiquée ci-dessus. Elle commence par le dernier chiffre de notre adresse IP FailOver (indiqué par xx dans mon exemple), suivi de la classe IN, du record type PTR et du nom que nous voulons donner à notre serveur. Dans mon cas je veux qu’il indique la même chose que le nom de mon serveur DNS, mais nous aurions tout aussi bien pu mettre bidule.mondomaine.ch. ou machin.mondomaine.ch., du moment que le nom de notre domaine est indiqué et que nous n’oublions pas le « . » à la fin du nom de notre serveur.

Enfin, nous devons rajouter une interface réseau pour notre nouvelle adresse IP, sinon le serveur ne reconnaîtra pas l’IP FailOver. Pour cela nous éditons le fichier /etc/network/interfaces et nous y ajoutons les lignes suivantes :

auto eth0:0
iface eth0:0 inet static
        address notre.adresse.ip.failover
        netmask 255.255.255.255
        broadcast notre.adresse.ip.failover

et pour finir nous redémarrons l’interface réseau :

[root@serveur:~]# /etc/init.d/networking restart

Nous pouvons vérifier le résultat en effectuant un ping sur notre nouvelle adresse IP.

Pour terminer

Pour vérifier que notre configuration est correcte, nous pouvons utiliser la commande named-checkconf -z directement depuis notre serveur pour vérifier qu’il n’y a pas d’erreur :

[root@serveur:~]# named-checkconf -z
zone localhost/IN: loaded serial 2
zone 127.in-addr.arpa/IN: loaded serial 1
zone 0.in-addr.arpa/IN: loaded serial 1
zone 255.in-addr.arpa/IN: loaded serial 1
zone mondomaine.ch/IN: loaded serial 2010090805
zone 37.165.188.in-addr.arpa/IN: loaded serial 2010090805

Si cette commande n’affiche aucune erreur, nous rechargeons BIND pour qu’il prenne en charge nos modifications et qu’il lance la propagation :

[root@serveur:~]# /etc/init.d/bind9 reload

Vous pouvez préférer relancer le programme avec la commande suivante :

[root@serveur:~]# /etc/init.d/bind9 restart

Un autre utilitaire lui aussi très utile pour vérifier votre configuration est nslookup (nslookup.exe sous Windows) :

[root@serveur:~]# nslookup
> mondomaine.ch
Server:		127.0.0.1
Address:	127.0.0.1#53

Name:	mondomaine.ch
Address: 188.165.37.xx
>

Si vous ne voyez aucune erreur c’est que votre configuration est correcte. Pour en avoir le cœur net, nous pouvons encore tester (sous Linux uniquement) la commande dig :

# dig mondomaine.ch

; <<>> DiG 9.6-ESV-R1 <<>> mondomaine.ch
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43215
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;mondomaine.ch.			IN	A

;; ANSWER SECTION:
mondomaine.ch.		10800	IN	A	188.165.37.xx

;; AUTHORITY SECTION:
mondomaine.ch.		10800	IN	NS	ns.kimsufi.com.
mondomaine.ch.		10800	IN	NS	ns.mondomaine.ch.

;; ADDITIONAL SECTION:
ns.mondomaine.ch.		10800	IN	A	188.165.37.xx
ns.kimsufi.com.		23649	IN	A	213.186.33.199

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Sep  9 15:11:36 2010
;; MSG SIZE  rcvd: 118

Nous retrouvons en effet toutes les informations que nous avons enregistré précédemment.

Nous sommes presque au bout de nos efforts, mais avant que nous puissions passer à la suite, il faut encore que nous indiquions à notre serveur secondaire de venir prendre en charge notre configuration. Cela se passe dans le manager d’OVH, dans la rubrique Services, section Gestion DNS, option DNS secondaire. Nous cliquons sur Nouveau domaine, nous indiquons le nom du domaine que nous voulons ajouter, sans le www et nous sélectionnons l’adresse IP FailOver que nous avons utilisée un peu plus haut. Et c’est maintenant qu’il va nous falloir être patient ; en effet, il faut compter entre 10 minutes et 48 heures pour que notre configuration soit propagée sur le serveur secondaire. Pour vérifier que tout soit en ordre, nous pouvons utiliser les sites ZoneCheck et DNSdoctor pour tester la propagation et d’éventuelles erreurs résiduelles.

Une fois que la propagation est effective et que les sites mentionnés précédemment n’indiquent plus d’erreur fatale, nous pouvons enregistrer nos DNS auprès de notre registrar. Dans mon cas il s’agit du site de la société Switch SA, qui gère les noms de domaine en .ch et .li. Commençons par enregistrer notre nouveau serveur de nom : dans le menu de gauche, rubrique Serveur de noms -> Enregistrer, indiquez votre serveur de nom (ns.mondomaine.ch) et l’adresse IP FailOver (188.165.37.xx). Une fois ceci fait, rendez-vous dans la rubrique Noms de domaine -> Gestion, cochez le domaine à modifier et cliquez sur Traiter ceux qui sont marqués. Dans la section Serveur de noms, cliquez sur autre pour ajouter le serveur primaire (ns.mondomaine.ch) et le serveur secondaire (ns.kimsufi.com) puis continuer. Si tout se passe bien et que les données ont bien été propagées, la rubrique Serveur de nom de la page récapitulative devrait vous afficher un joli vu vert ou orange. Sinon allez voir les détails et corrigez les erreurs indiquées.

Pour finir, nous allons enregistrer notre Reverse IP dans le manager d’OVH, rubrique Services, section Reverse IPv4, nous cliquons sur l’icône à droite de la ligne correspondant à notre adresse IP FailOver et nous indiquons le reverse que nous venons de configurer (ns.mondomaine.ch). Si tout se passe bien, vous aurez un message indiquant que tout s’est bien déroulé, sinon vous devrez patienter encore un peu que la propagation de votre configuration arrive au serveur d’OVH gérant les reverse IP.

Pour information, j’ai dû attendre une dizaine d’heures pour que la propagation soit effective sur le serveur secondaire (ns.kimsufi.com) et deux heures supplémentaires pour que ma demande de Reverse IP soit prise en compte, mais d’après ce que j’ai lu sur internet, cela peut prendre bien plus de temps dans certains cas. Et si après 3-4 jours vous n’y arrivez toujours pas, c’est peut-être qu’il y a quelque-chose qui cloche dans votre configuration, il ne vous restera alors plus qu’à tout revérifier ;-)

Prochaine étape : Apache, PHP, MySQL et PHPmyAdmin
Étape précédente : Un peu de sécurité supplémentaire avec Fail2ban

  1. 5 commentaires à “Serveur dédié – IP Failover, DNS et Reverse IP”

  2. Par Ronan le 2 août 2011

    Le meilleur tuto que j’ai pu voir sur le net concernant la configuration de bind9. Reverse IP en prime. Merci !

  3. Par Ronan le 2 août 2011

    Après avoir entièrement suivi le tutorial, j’ai un petit problème au niveau de DNSDoctor :

    Can’t find reverse for the nameserver IP address
    ns.rl.cx./88.190.240.192

    Il semblerait qu’il ne retrouve pas le reverse de l’IP. Je me demande si ce n’est pas à cause de la clause « allow-recurse 127.0.0.1″. Sauf que si je la change, ne vais-je pas ouvrir mon DNS pour toute sorte de requêtes ?

    Merci.

  4. Par etienne le 2 août 2011

    Bonjour Ronan,

    Le problème ne vient pas du « allow-recursion 127.0.0.1″ (qu’il faut à mon avis laisser), mais plutôt du temps de propagation des DNS.
    D’ailleurs, j’ai fait le test depuis chez moi et un ‘nslookup 88.190.240.192′ me donne le bon nom de serveur (ns.rl.cx).

  5. Par Ronan le 3 août 2011

    Merci !

    Parfait, tout à l’air de bien fonctionner et je commence à comprendre du coup le principe du reverse. Je crois que je n’avais pas tout compris au départ.

    Par contre, j’ai une dernière question si possible :)

    Comme expliqué dans le tuto, j’ai configuré une adresse IP de Failover cependant, à aucun moment je n’ai utilisé l’adresse IP principale de la machine. A quoi sert l’IP Failover dans ce cas ?

  6. Par etienne le 4 août 2011

    L’IP principale est l’IP physique du serveur, qui ne peut pas être attribuée à un autre serveur. A contrario, l’IP Failover est une IP virtuelle qui peut être balancée d’un serveur à un autre. Ainsi, lorsque vous commander un nouveau serveur, vous pouvez y balancer l’IP failover, après configuration et copie des données, et vous n’aurez pas besoin de reconfigurer tous les DNS chez vos prestataires de noms de domaines.

Poster un commentaire