[gull] Clamav

Daniel Cordey dc at mjt.ch
Fri Jan 2 17:17:02 CET 2004


On Wednesday 31 December 2003 12:15, Marc SCHAEFER wrote:

> Intéressant. Je fais également cela, mais au niveau du DNS: tout pointe
> sur une adresse unique (pas de CNAME, champs A). Avec des
> timeouts/refresh de 4h tu peux déjà faire pas mal de flexibilité avec
> ça.

L'objectif etant d'assurer un transition la plus rapide possible. En effet, 
les adresse IP peuvent rester dans les caches des serveurs/routers pendant 
quelques heures et il n'est pas raisonnable d'accelere les mises a jour. Le 
seul moyen que j'ai trouve et d'utiliser ces alias, car une machine peut 
reprendre la main de maniere automatique en rajoutant un alias sur son 
interface losrqu'elle voit que le serveur "primaire" du service n'est plus 
la. Reste ensuite le probleme du mapping des adresse MAC dans mon routeur 
local... resolu en effectuant un arp en mode brodcast avec l'adresse IP et a 
MAC address concernee. Ceci ne vas pas mettre a jour la table dans le routeur 
(securite !), mais l'obliger a refaire une requete ARP... et hop maintenant 
l'adresse est correctement routee. Je peux arriver a garantir un temps de 
commutation de service de quelques secondes (1-5 suivant le degre de 
nervosite). Ainsi, cette commutation passe totalement inapercue pour les 
clients des services.

Ainsi, je ne touche plus mes "zones" DNS et je n'ai plus besoin de redemarrer 
le serveur losrque je transfere un service d'une machine a l'autre.

Pour info, s'il est vrai que l'usage de CNAME peut apporter un peu de clarete 
dans un fichire de "zone", il introduit un niveau d'indirection et necessaite 
une requete suplementaire pour acceder a ce a quoi il se refere. DOnc chainer 
des CNAME peut s'averer couteux :-)

> Une alternative est de mettre un firewall/NAT devant. Je fais souvent ça
> pour les DMZ. Chaque service est alors `mappable' facilement. Les
> serveurs dans le DMZ possèdent une adresse privée.  Cela simplifie
> également les concepts `fail-over'.

Tout a fait. Mais comme je veux aussi beneficier de cette souplesse a 
l'interieur de mon Intranet, j'ai trouvais plsu elegant de ne pas toucher, ni 
le DNS, ni le firewall. De plus, router le traffic interne peut s'averer 
couteux chez nous. Nous avons enormement de traffic entre trois niveaux 
d'application dont chacune peut se deplacer horizontalement entre trois 
machines (redondance). Obliger tout le traffic a passer par le firewall 
serait penalisant. 

> Regarde
>     netstat -an | grep LISTEN | grep 53

Ceci me donnera bien le port tcp sur lequel named ecoute, mais pas l'udp; car 
les requetes DNS font, en general, moins de 512 bytes... d'ou l'usage de 
l'udp par defaut. Le mode d'acces en tcp est recent et doit souvent etre 
explicitement specifie suivant les versions de serveur (defaut en 9)

> Maintenant je rajoute un alias, je suppose que dans ce cas, BIND
> ne va pas rajouter un socket.

Non, en tout cas pas pour IPv6, mais il pourait avoir plusisures sockets pour 
IPv4 (j'ai oublie pourquoi mais j'ai vu ca dans le source).

> Il va donc recevoir sur 0.0.0.0, voire
> sur l'adresse IP principale de la carte et renverra par le chemin le
> plus logique.

CAD en utilisant l'adresse IP du socket ouvert.

> (souvenirs lointains de programmation socket UNIX)

:-)

> Je me demande si tout simplement un listen-on adresse-ip-virtuelle;
> ne va pas rajouter un socket de plus et donc résoudre ton problème.
> Essaie-voir ça et envoie le netstat -anp ...

C'est en ragardant le souce se server.c que j'ai commence a me poser des 
questions. En effet, les choses sont faites  proprement et tout me paraissait 
tres clair. Je vopyais donc bien que le code prenait bien l'option 
'listen-on' en compte... J'ai donc commence a douter de quelque chose et 
voila !

> > 	;; reply from unexpected source: 192.168.1.2#53, expected 192.168.1.30#5
>
> Ca semble très clair, effectivement.

Oui, maintenant tout s'explique, mais j'avoue avoir etet induit en erreur car 
ce message d'erreur ne semble etre generer que lors d'une connection tcp 
(trouver dans le code source de dig). 

> [ je ne comprends pas trop ta magouille :52 dans la mesure où tu ne dis
>   pas non plus au client qu'il doit faire du DNS sur le port 52]

Le but etant de verifier que ma regle etait bien capable de traiter les 
requetes DNS uniquement et de prouver que je recrivais correctement l'adresse 
IP. En modifiant le 'sport', je devais continuer a avoir le message d'erreur 
mais je devais voir que, si le port etait faux, l'adresse par contre etait 
maintenant bien juste. cqfd. Lorsque je mettais l'adresse 53, mon paquet se 
perdait dans la suite de la queue POSROUTING. Je n'etais donc pas au bon 
endroit dans le script !

Merci pour tes explications qui m'ont un peu mis la puce a l'oreille :-)

Daniel




More information about the gull mailing list