Redirection de port DNS quand slave + récurseur sur la même machine

Hello,

Sur toutes mes machines j’installe pdsn-recursor et modifie mon resolv.conf pour avoir ceci :

nameserver 127.0.0.1
nameserver 1.1.1.1

Simple.

Une de mes machines va accueillir le DNS secondaire. J’installe donc powerdns-server, que je configure sur le port 53. Evidemment, il y a embouteillage puisque le resolveur récursif occupe déjà le lit. Je modifie donc le port d’écoute du dns-recursif pour y mettre 1053 par exemple.

Je redémarre les deux services, mon DNS slave reçoit bien les maj du primaire, ça roule. Par contre mon DNS récursif cherche toujours à résoudre sur 127.0.0.1:53, ce qui n’est pas bon !

J’ai essayé de modifier mon resolv.conf pour lui dire explicitement :

nameserver 127.0.0.1:1053
nameserveur 1.1.1.1

Mais visiblement, on ne peut pas préciser le port du dns à interroger dans resolv.conf, enfin, suivant la distrib, ça marche, mais dans mon cas, ça ne marche pas.

En dehors de faire du pat, du coup, ou alors d’inverser le problème (envoyer le master mettre à jour le secondaire sur un autre port que le 53), voyez-vous une solution propre ?

Alors, j’ai pas tout compris, mais…
Et si le slave écoutait sur le 127.0.0.1:53, pour faire le taf en local et résoudre comme premier resolver de ton resolv.conf,
et le secondaire qui n’a pas à être récursif et qui va devoir répondre à des requètes externes, lui il écoute sur <ip de ta machine>:53
Ca peut se faire, ça ?

1 J'aime

Ce serveur à la base me sert pour héberger des applications non critiques ou secondaires (pour redondance).

Pour résoudre les noms, par défaut, je préfère passer par un résolveur local (127.0.0.1 avec powerdns-recursor sur le port 53) plutôt que d’interroger un résolveur distant (1.1.1.1) directement. Question de temps et de design de mon image de base (je charge des images KVM déjà préconfigurées).

A coté de ça, j’ai un VPS OVH qui ne me servait uniquement que de serveur DNS secondaire. Quand je dis serveur DNS secondaire, je parle d’un vrai serveur, qui gère des zones, pas d’un bête resolveur.

Je souhaiterais libérer ce VPS OVH qui ne me sert qu’à ça, mais du coup il faut que mette mon DNS secondaire quelquepart. L’idée m’est donc venue de la mettre sur une de mes VM KVM, et donc sur cette VM qui me sert plus ou moins pour de la redondance.

Donc j’installe mon pdns-server sur cette machine, je fais la conf, mais celui-ci refuse de démarrer puisque sur le port 53 j’ai déjà pdns-recursor qui écoute. J’ai donc changé le local-port de pdns-recursor pour le mettre sur le 5353.

Mais lorsque je fais une requête dns sur cette machine, genre nslookup toto.com, j’ai ceci :

;; Got recursion not available from 127.0.0.1, trying next server
Server:         1.1.1.1
Address:        1.1.1.1#53

Non-authoritative answer:
Name:   toto.com
Address: 153.127.134.218
;; Got recursion not available from 127.0.0.1, trying next server

On voit qu’il interroge par défaut le 53 (du coup, il interroge non pas pdns-recursor, mais pdns-server qui ne sait pas lui répondre puisqu’il ne sert qu’à gérer des zones).

mais si je fais un dig -p 5353 toto.com

; <<>> DiG 9.11.5-P4-5.1-Debian <<>> -p 5353 toto.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 54009
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;toto.com.                      IN      A

;; ANSWER SECTION:
toto.com.               600     IN      A       153.127.134.218

;; Query time: 174 msec
;; SERVER: 127.0.0.1#5353(127.0.0.1)
;; WHEN: ven. nov. 29 18:53:00 CET 2019
;; MSG SIZE  rcvd: 53

En précisant le port 5353, la requête passe bien et le résolveur fait son boulot.

Ma question est donc : comment faire en sorte que toutes les requêtes de résolution DNS qui passent d’abord par 127.0.0.1 soient faites sur le port 5353 au lieu du 53 ?


Ta proposition est qu’au lieu de dire au pdn-server d’écouter en 127.0.0.1:53, d’écoute sur ip-publique:53, et de remettre mon récurseur en 127.0.0.1:53 ?
Je vais essayer, ça me semble une bonne idée ! je te tiens au courant.

C’est ça. Et uniquement sur ce port, et pas sur lo.
Mais pas sur qu’on puisse faire ça même si sur le papier je ne vois pas pourquoi.

Super, ça marche !

Donc dans la conf de /pdns/recursor.conf, j’ai repassé le local-port en 53 et sur pdns.conf j’ai mis local-address=IP-PUBLIC.

J’ai relancé d’abord le serveur (pour libérer la socket) puis le récurseur (qui a pris la socket).

Et là mon nslookup mes résolutions fonctionnent bien.

Un grand merci :slight_smile:

Voilà, j’ai pas tout maîtrisé, mais si ça marche, de rien.