[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Plusieurs config réseau sur la même machine



On Jan 28 Sami Dalouche wrote:

> > Je fais tourner un serveur de mail (exim, mais c'est par flemme de
> > prendre autre chose) et un serveur de noms (bind). J'envoie toujours le
> > mail vers smarthost@mon.univers, et je redémarre BIND dès que je me
> > connecte par PPP (avec des fichiers de configs déplacés en fonction du
> > fournisseur d'accès prévu). Je ne vois pas pourquoi tu ne pourrais pas
> > mettre en place le même système.

> Je serais bien intéressé de savoir comment faire celà. Pourrais tu m'envoyer
> les fichiers de configs avec qques brèves explications... 
> Merci 

Alors voilà... on installe d'abord bind, et on se crée deux trois petits
fichiers locaux:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/var/named/boot.zones
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; Name server zone boot file
; See named(8) for syntax and further information
;

; type          domain                  source          file
primary         0.0.127.in-addr.arpa                    primary/0.0.127
primary         14.168.192.in-addr.arpa			primary/14.168.192
primary         eidos.univers				primary/eidos.univers
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

J'ai décidé de me mettre sur un réseau fictif 192.168.x.y (en fait, avec
x=14, mais c'est pas important). Mon domaine s'appelle eidos.univers,
mais on peut l'appeller debian.nonet si on veut...

En local, on a pas besoin d'inverser les alias que l'on va définir, donc
c'est minimal:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/var/named/primary/0.0.127
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; BIND reverse data file for local loopback interface
;
@       IN      SOA     akasha.eidos.univers. akasha.eidos.univers. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Default TTL
;
@               NS      akasha.eidos.univers.
1               PTR     localhost.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Et de même pour la classe choisie:
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/var/named/primary/14.168.192
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; BIND reverse data file for local loopback interface
;
@       IN      SOA     akasha.eidos.univers. root.eidos.univers. (
                              1         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire 604800)       ; Default TTL
;
@               NS      akasha.eidos.univers.
1               PTR     localhost.eidos.univers.
14              PTR     akasha.eidos.univers.
42              PTR     cri.eidos.univers.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Le temps de vie de ces valeurs est totalement sans importance, puisque
les données ne sont jamais exportées. Si vous utilisez cette méthode
avec un petit réseau local (et que vous avez donc déjà configuré BIND),
je ne vous apprend probablement rien, et en plus, il faudra dans les
fichiers suivants faire changer les numéros de série. Il faudra
probablement mettre un temps de mise-à-jour plus court. En fait, si
quelqu'un a des idées... j'ai qu'une seule machine :-)

Voici donc les fichiers à construire
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/var/named/primary/eidos.univers.disconnect
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
@       IN      SOA     akasha.eidos.univers. root.eidos.univers. (
                      199900002         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
604800 )       ; Default TTL
;
                TXT     "Mon sous-domaine personnel"
                NS      akasha
                MX      10 akasha
                HINFO   "K6"    "Linux 2.2"localhost       A
127.0.0.1
akasha          A       127.0.0.1
nameserver      CNAME   akasha
cri             A       140.77.1.32
                TXT     "cri@ens-lyon.fr"
; smartmailer   A       192.168.14.255
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ce qui est important à voir, c'est que je n'ai pas défini de nom
smartmailer (; = commentaire).

Et il faut construire un fichier similaire pour chaque fournisseur
d'accès (par exemple, ici, free.fr).

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/var/named/primary/eidos.univers.free
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; BIND data file for local loopback interface
;
@       IN      SOA     akasha.eidos.univers. root.eidos.univers. (
                      199900002         ; Serial
                         604800         ; Refresh
                          86400         ; Retry
                        2419200         ; Expire
                         604800 )       ; Default TTL
;
                TXT     "Mon sous-domaine personnel"
                NS      akasha
                MX      10 akasha
                HINFO   "K6"    "Linux 2.2"
localhost       A       127.0.0.1
akasha          A       127.0.0.1
nameserver      CNAME   akasha
cri             A       140.77.1.32
                TXT     "cri@ens-lyon.fr"
smartmailer     CNAME   smtp.free.fr.
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Il est possible, si plusieurs services doivent être changés, de définir
d'autres alias...

Pour le DNS, j'utilise personnellement toujours le même (celui de
free.fr), mais dans le cas contraire, il faut rajouter deux-trois trucs
dans mes scripts...

Dans /etc, j'ai ceci:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/etc/named.boot
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; Boot file for name server
;

directory /var/named

; type          domain                  source          file
cache           .                                       named.root

; Zone boot information and daemon options are kept in other files

include boot.zones
include boot.options
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

et 

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/var/named/boot.options
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;
; Options for name server
; Use `bindconfig' to automatically configure this file
;

forwarders      212.27.32.5 212.27.32.6

;; Custom configurations below (will be preserved)
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


Si vous avez des serveurs différents, il faut créer un répertoire
options, contenant forwarders.disconnect (où on ne met pas de
forwarders), un fichier forwarders.fournisseur pour chaque fournisseur
que l'on utilise, et on change le
	include boot.options
de /etc/named.boot par
	include options/forwarders



Jusqu'ici, tout va bien, et vous avez juste un BIND qui fonctionne. Il
faut initialiser le tout par des liens symboliques adéquats:
	cd /var/named/primary
	ln -s eidos.univers.disconnect eidos.univers
et éventuellement
	cd /var/named/options
	ln -s forwarders.disconnect forwarders

Ensuite, il faut modifier les fichiers générés par pppconfig:

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/etc/ppp/peers/free-lyon
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
# This file was generated by pppconfig.  You can edit the following lines
# but please do not delete lines or the change the comments or you will
# confuse pppconfig.
noauth         #pppconfig_noauth
connect "/usr/sbin/chat -v -f
/etc/chatscripts/free-lyon"  #pppconfig_connect
debug          #pppconfig_debug     
/dev/ttyS0       #pppconfig_dev
115200      #pppconfig_speed
defaultroute         #pppconfig_route
noipdefault     #pppconfig_ipdefault
user jcdubacq  #pppconfig_user
# End of pppconfig controlled lines.  You can add lines below here
without
# confusing pppconfig.
remotename proxad
modem
ipcp-accept-remote
ipcp-accept-local
ipparam free
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Seule la dernière ligne a été rajoutée. Le mot "free" est le nom que
vous avez ajouté pour "fournisseur", comme le nom par exemple
/var/named/primary/eidos.univers.free

Enfin, il faut rajouter deux scripts, un déclenché à l'initialisation de
la connexion, et un à la fin...

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/etc/ppp/ip-up.d/00named
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#!/bin/sh
if [ -r /var/run/named.pid ]; then
    if [ -r /var/named/primary/eidos.univers.$PPP_IPPARAM -a -L /var/named/primary/eidos.univers ]; then
        /etc/init.d/bind stop
        rm /var/named/primary/eidos.univers
        ln -s /var/named/primary/eidos.univers.$PPP_IPPARAM /var/named/primary/eidos.univers
## rm /var/named/options/forwarders
## ln -s /var/named/options/forwarders.$PPP_IPPARAM /var/named/options/forwarders
## /usr/sbin/named-bootconf # Reconstruire le fichier de configuration suite au changement des forwarders
        sleep 1 # nécessaire si pas de reconstruction
        /etc/init.d/bind start
    fi
fi
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Les lignes commentées par ## sont pour le cas où vous devez changer de
nameserver.

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
/etc/ppp/ip-down.d/99named
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#!/bin/sh

if [ -r /var/run/named.pid ]; then
    if [ -r /var/named/primary/eidos.univers.disconnect -a -L /var/named/primary/eidos.univers ]; then
        rm /var/named/primary/eidos.univers
        ln -s /var/named/primary/eidos.univers.disconnect /var/named/primary/eidos.univers
        /etc/init.d/bind restart
    fi
fi
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Les lignes supplémentaires pour le cas où vous changez d'options sont
laissées en exercice (indication, voir le fichier précédents et
remplacez $PPP_IPPARAM par disconnect).

...

Ouf?

Alors vous avez un serveur de nom (BIND), qui lorsqu'il tourne utilise
un fichier de configuration reconstitué à partir de fichiers qui
diffèrent en fonction du fournisseur d'accès utilisé.

Dès que vous allez vouloir accéder à un service générique (je pense
évidemment à smarthost, mais cela peut aussi être l'ajout d'une série
d'alias, comme le proxy web, ou autre), votre machine va traduire de
façon automatique le nom demandé (smarthost.mondomaine.chezmoi) en ce
qu'il faut (smtp.free.fr ou smtp.monautrefournisseur.fr ou
smtp.monecole.fr).


Il y a probablement un autre moyen de faire ça. Il s'agit d'utiliser
bindconfig pour créer des configurations complètement différentes, et de
modifier /etc/init.d/bind pour qu'il utilise un éventuel deuxième
argument qui serait un fichier de configuration.

D'ailleurs, à propos du sleep 1, je tiens à ajouter que, de façon
non-testée, il doit être possible d'utiliser plutôt
	/etc/init.d/bind force-reload

J'ajoute la ligne de configuration adéquate d'exim:
smarthost:
  driver = domainlist
  transport = remote_smtp
  route_list = "* smartmailer.eidos.univers bydns_a"

end

Il y a sans doute plein de choses à dire sur cette configuration, mais
depuis que j'ai rajouté le sleep 1 (sans lui, des fois, le serveur ne se
relançait pas une fois la connexion obtenue), je n'ai jamais eu de
problèmes...

N'hésitez pas à me poser des questions...

-- 
Jean-Christophe Dubacq


Reply to: