Bonjour,
Je cherche à configurer un serveur DNS ( sous debian 7.X , bind9 ) afin de relayer des requêtes vers l'extérieur.
L'architecture est la suivante :
- réseau local très simple ( réseau 172.17.0.0/16 )
- un serveur (A) sur mon réseau sous linux avec isc-dhcp-server et bind9. bind9 résout des noms de machines internes au réseau, il est donc nécessaire.
- sur ce réseau est ajouté une machine externe (B) ( sous entendu n'appartenant pas à mon entreprise ) servant de passerelle vers internet. Je ne sais pas trop ce qu'il y a dedans, mais je sais que ca fait passerelle et serveur DNS.
- mon serveur A attribue donc des adresses IP dynamiques aux machines ( ipad ) qui se connectent, avec pour adresse de passerelle la machine externe B , et pour serveur DNS (A).
- j'ai donc configuré le serveur DNS de (A) avec l'option "forwarder ip_de_B".
Mon problème est le suivant. Pour une raison que j'ignore , le relayage ne se fait pas bien.
- si le DHCP de (A) attribue un DNS externe ( ex : 8.8.8.8 ) , pas de problème j'ai accès à internet avec mes ipads.
-> je ne peux pas faire ca, car (B) filtre les accès internet et les attribue ou non selon des règles bien précises (que je ne connais pas exactement ), en gros on tombe d'abord sur un portail comme dans les hotels, on s'inscrit et ensuite on a accès à internet. Ca utilise apparemment le DNS de (B) dans le mécanisme.
- si le DHCP de (A) attribue comme DNS la machine (B) , pas de problème j'ai accès à internet également, avec le système de portail comme expliqué ci-dessus.
-> je ne peux pas faire ca, car j'ai besoin de résoudre également des noms qui ne sont résolus que par le DNS de (A)
- si le DHCP de (A) attribue 2 serveurs DNS ( celui de A et celui de B ) cela ne marche pas non plus , j'ai l'impression que le DNS secondaire est là seulement quand le primaire n'est pas là, pas quand il ne sait pas résoudre un nom ( si j'interroge le premier, qu'il me répond en me disant je connais pas le nom, le second n'est pas interrogé, ca fait peut être partie de la norme, je ne la maitrise pas ).
- si le DHCP de (A) attribue comme DNS la machine (A) , et que ce DNS est configuré avec l'option "forwarder ip_de_B", cela ne marche pas. Si je trace avec wireshark, je vois :
* demande de l'ipad à DNS de A
* DNS de A demande à DNS de B ( normal j'ai mis forwarder )
* DNS de B répond à DNS de A ( qui contient l'ip donc )
* la je m'attends à ce qu'il retransmette à ipad mais non, à la place : redemande du DNS de A à DNS de B
* DNS de B répond à nouveau ( la même chose ) à DNS de A
* puis DNS de A répond "failed" à ipad.
A noter que si je simule "B" avec une autre machine ( une debian dans une VM VBOX par exemple, ou autre ), à priori ca marche. Mais avec d'autres serveurs DNS ( comme un serveur DNS sous windows ) , ca ne marche pas bien non plus mais que pour certains noms ( les .org ??!! ).
Bref, peut-être tout simplement que le relais DNS se configure autrement qu'avec la simple options "forwarder" ? ou encore il y a des serveurs DNS incompatibles entre eux ( version de protocole ? ).
Une dernière chose : si je configure une route sur mon serveur A ( route add default gw ip_de_b dev eth0 ) , cette fois ci la résolution marche bien, mais avec wireshark, je vois en fait les 2 premieres demandes auprès du DNS de B qui echouent comme ci-dessus, puis une 3eme demande auprès d'un DNS externe qui cette-fois réussit ( sauf que ce n'est pas ce que je veux ).
Avez-vous une idée de la raison ? est ce que ce que je souhaite faire est possible ou tout simplement impossible ( résoudre à la fois des noms interne par un premier DNS, et le reste - interne - par un autre DNS interne sur une machine ne m'appartenant pas ) ?
Merci d'avance