Journal dnsmasq, un petit serveur DNS

Posté par .
Tags : aucun
0
17
nov.
2004
Bonsoir tout le monde,

Je vous fait part de ma découverte ce soir : ayant un petit réseau local depuis quelques mois déjà, je me suis mis en tête d'installer un serveur DNS pour ne pas surcharger les serveur DNS de mon FAI, mais surtout pour gagner en rapidité de connexion quand on surfe sur le net.
En effet, une requête DNS chez le serveur DNS du FAI prend un temps de l'ordre de 0,1s. Avec un serveur DNS local avec un cache, ce temps diminue fortement jusqu'à 0,01s à condition que le nom cherché soit déjà dans le cache.

Jusqu'à là, rien de bien nouveau. Je vais dans l'arbre de portage (parce que n'étant pas bête, j'utilise naturellement la meilleure distribution du monde : Gentoo ;-)
Je ne connaissais de nom que bind que je savais méchamment lourd et donc du genre pas facile à configurer. J'avais aussi déjà entendu parlé de dbjdns... ou djbdns, je me souviens plus. Mais avec un nom aussi imprononçable, j'ai décidé d'installer un autre programme : dnsmasq.
Parce qu'en plus, ce petit programme sais aussi faire serveur dhcp !

Un petit emerge dnsmasq et le tar.gz qui fait moins de 150 Ko se charge. Puis viens l'étape de la compilation : c'est très rapide, il n'y a qu'une petite dizaine de fichiers à compiler. Et hop, installation. Pendant ce temps je lis le lien [2] : la configuration a l'air des plus simple !
Me voilà à éditer le fichier /etc/dnsmasq.conf. Moins de 5 minutes et un /etc/init.d/dnsmasq start plus tard, j'ai un cache DNS qui fonctionne bien !

Voilà, je suis content et je le dis.

Pour l'instant, rien à reprocher, même si un truc me tracasse un peu : dnsmasq écoute le port 53 en tcp et udp, c'est plutôt normal pour un serveur DNS.
Par contre, il écoute aussi en udp sur un port qui change de numéro quand on le relance (dnsmasq, pas le port !) : j'ai eu pour l'instant 1113 et 1116.
Je n'ai trouvé aucune information sur l'utilité de l'ouverture de ce port et je ne suis pas gourou en lecture de code source. Si vous avez des pistes, je serais content de les suivre :)

Liens :
[1] La page officielle de dnsmasq, en anglais :
http://thekelleys.org.uk/dnsmasq/doc.html(...)
[2] Un petit HOWTO, en français :
http://www.drazzib.com/docs-dnsmasq.html(...)
  • # Egalement serveur dhcp

    Posté par . Évalué à 3.

    Dnsmasq fait également office de serveur DHCP rudimentaire.

    Pensez à décommenter cache-size dans votre /etc/dnsmasq.conf

    # Set the cachesize here.
    cache-size=256

    Sinon, ça ne va pas cacher grand chose :-)
    • [^] # Re: Egalement serveur dhcp

      Posté par . Évalué à 2.

      c'est la valeur par default, donc ca change rien tant que tu change pas la valeur ...
      • [^] # Re: Egalement serveur dhcp

        Posté par . Évalué à 2.

        Dans le paquet debian sid, c'était commenté
        Un ethereal montrait bien la différence, les nombreuses requêtes dns vers google étaient répétées vers l'extérieur.
        Ce n'était plus le cas après avoir décommenté cette ligne
        • [^] # Re: Egalement serveur dhcp

          Posté par . Évalué à 2.

          ben c'est commente chez moi (debian sid) :
          $dig kernel.org | grep "Query time"
          ;; Query time: 50 msec
          $dig kernel.org | grep "Query time"
          ;; Query time: 0 msec

          et ethereal ne voit rien sur le reseau lors de la seconde requette ...
          • [^] # Re: Egalement serveur dhcp

            Posté par (page perso) . Évalué à 2.

            bonjour,

            d'après le man, la valeur par défaut est à 150 entrée, donc effectivement décommenté permet d'avoir quelques entrée en plus :


              -c, --cache-size=
            Set the size of dnsmasq's cache. The default is 150 names. Set-
            ting the cache size to zero disables caching.


            dnsmasq 2.16
  • # Auto réponse (et flagellation)

    Posté par . Évalué à 6.

    Evidemment, à force de lire "Cherche sur Google pour trouver une réponse", j'ai même pas lu la FAQ qui contient la réponse à ma question métaportologique du port 1113 :
    Q: Why does dnsmasq open UDP ports >1024 as well as port 53.
       Is this a security problem/trojan/backdoor?
    
    A: The high ports that dnsmasq opens is for replies from the upstream
       nameserver(s). Queries from dnsmasq to upstream nameservers are sent
       from these ports and replies received to them. The reason for doing this is
       that most firewall setups block incoming packets _to_ port 53, in order
       to stop DNS queries from the outside world. If dnsmasq sent its queries
       from port 53 the replies would be _to_ port 53 and get blocked.
    
       This is not a security hole since dnsmasq will only accept replies to that
       port: queries are  dropped. The replies must be to oustanding queries
       which dnsmasq has forwarded, otherwise they are dropped too.
     
       Addendum: dnsmasq now has the option "query-port" (-Q), which allows
       you to specify the UDP port to be used for this purpose.  If not
       specified, the operating system will select an available port number
       just as it did before.
    
  • # tres bien

    Posté par . Évalué à 4.

    J'utilise moi aussi ce très bon petit soft depuis quelques mois.

    Ce qu'il y a de bien c'est qu'il est extrement simple a configuré et que les noms des machines dhcp sont envoyés dans le dns, ce qui est vraiment pratique.
  • # Question...

    Posté par . Évalué à 1.

    Comment faire pour se servir de dnsmasq en tant que simple cache local ???

    Mon Modem ADSL est branché sur le port ethernet de mon pc est l'adresse IP de mon interface eth0 est attribué par DHCP.

    Mon fichier /etc/resolv.conf est donc modifié automatiquement par DHCP. Mais dès que je modifie moi meme l'entrée "nameserver 192.168.0.1" (IP de mon modem) en " nameserver 127.0.0.1", la connection ne marche plus.

    Alors est-ce qu'il suffit simplement de lancer dnsmasq sans se poser de question pour qu'il fonctionnne comme cache local ???
    • [^] # Re: Question...

      Posté par (page perso) . Évalué à 2.

      "Alors est-ce qu'il suffit simplement de lancer dnsmasq sans se poser de question pour qu'il fonctionnne comme cache local ???"

      Non, il suffit de se poser les bonnes questions, et d'avoir les bons reflexes:

      man dnsmasq :

      In order to configure dnsmasq to act as cache for the host on which it is running, put "nameserver 127.0.0.1" in /etc/resolv.conf
      and put the real nameservers in /etc/resolv.dnsmasq (or similar) then run dnsmasq with the -r /etc/resolv.dnsmasq option.
      • [^] # Re: Question...

        Posté par . Évalué à 1.

        Merci.
        Effectivement, je reconnait ne pas avoir fait l'effort de lire la page man jusqu'au bout. PO BIEN ;)

        Donc, j'ai procedé comme indiqué, et tout marche bien.
        Cependant, il m'a fallut changer la configure du client dhcp et lui dire de ne pas mettre à jour la liste des serveurs de nom dans /etc/resolv.conf. Auquel cas, bien entendu, à chaque redémarage, dhcp m'aurai remis le paramètre par défaut, à savoir "nameserver 192.168.0.1", ce qui ne convient pas à mon cas.

        Merci encore :)

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.