Problème d’accès à l’IP publique d’une Freebox à travers le NAT

Voici un état des lieux : je dispose d’une Freebox v4, j’ai activé le NAT et le DHCP (adresses IP fixées par adresse MAC) pour mes PC. Il y en a un qui est entièrement accessible depuis internet grâce à l’option « IP DMZ » présente dans la console d’administration de la Freebox qui redirige toutes les connexions entrantes non encore établies en provenance d’internet vers l’adresse IP désignée, dans mon cas 192.168.0.1. Mon adresse IP publique est associée au domaine gnusquad.org donc tout le traffic à destination de ce domaine part sur le PC ayant l’IP 192.168.0.1.

Voici un schéma afin d’être plus clair :
Graphique Freebox

Le problème est qu’il est impossible depuis le PC ayant l’IP 192.168.0.2 d’accéder, par exemple, à mon blog (http://blog.gnusquad.org), la résolution DNS renvoyant mon adresse IP publique et la Freebox ne redirigeant le traffic « IP DMZ » que depuis le WAN et non le LAN !

Ma solution initiale était d’ajouter sur le PC ayant l’IP 192.168.0.2, une entrée dans le fichier « /etc/hosts » qui pour rappel, permet de fixer une adresse IP pour une liste de domaines et de sous-domaines :

root@gnusquad:~# vi /etc/hosts

192.168.0.1 gnusquad.org www.gnusquad.org blog.gnusquad.org man.gnusquad.org
...

Cette solution a le mérite d’être simple et rapide à mettre en œuvre mais a comme désavantage le fait de devoir tenir à jour cette entrée par rapport à la liste grandissante des sous-domaines hébergés sur la même machine.

Il était donc temps de trouver une solution plus confortable, c’est pourquoi j’ai décidé d’installer un proxy DNS, en l’occurence pdnsd qui me permettrait de modifier les enregistrements DNS à ma guise.

root@gnusquad:~# aptitude install pdnsd

L’installation vous demandera si vous préférez utiliser les DNS fournis par le programme resolvconf, les DNS des serveurs racines ou bien encore si vous préférez les indiquer manuellement.
Utilisant resolvconf, ce que je vous conseille au passage, j’ai choisi cette option ce qui aura pour conséquence, au lancement de pdnsd de mettre l’IP 127.0.0.1 dans le fichier /etc/resolv.conf à la place des DNS de votre FAI, ces derniers étant utilisés par le proxy pour la résolution de noms.

Il faut ensuite, désactiver la génération automatique du fichier de configuration du proxy en commentant la ligne AUTO_MODE du fichier /etc/default/pdnsd.conf . Vous pouvez également spécifiez des options de démarrage via la variable START_OPTIONS ce qui peut être utile pour activer le mode debug (option –debug). Voici ce que ça donne une fois le fichier modifié :

root@gnusquad:~# cat /etc/default/pdnsd.conf

# do we start pdnsd ?
START_DAEMON=yes
# auto-mode, overrides /etc/pdsnd.conf if set [see /usr/share/pdnsd/]
#AUTO_MODE=resolvconf
# optional CLI options to pass to pdnsd(8)
START_OPTIONS="--debug"

Maintenant il ne reste plus qu’à configurer le proxy DNS pour renvoyer l’IP 192.168.0.2 pour toutes demandes de résolution de noms portant sur le domaine gnusquad.org ce qui se fait aisément une fois après avoir lu la man page du fichier pdnsd.conf :

root@gnusquad:~# vi /etc/pdnsd.conf

...
rr {
    name=gnusquad.org;
    ns=localhost;
    reverse=on;
    a=192.168.0.1;
}
rr {
    name=*.gnusquad.org;
    a=192.168.0.1;
}
...

Il ne reste plus qu’à redémarrer le proxy DNS pour que les changements soient pris en compte :

root@gnusquad:~# /etc/init.d/pdnsd restart
Stopping pdnsd.
Starting pdnsd.

Pour terminer, sachez que pdnsd fait également office de cache DNS pour accélérer les résolutions de noms, ce cache se trouve dans le fichier /var/cache/pdnsd/pdnsd.cache que vous pouvez supprimer sans souci si vous rencontrez quelques problèmes durant vos tests. Quant aux logs, ceux-ci se trouvent dans le fichier /var/cache/pdnsd/pdnsd.debug.

À lire :

Vus : 561
Publié par Sylvain : 20