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: