Forum Linux.debian/ubuntu Log des messages DHCP

Posté par .
Tags : aucun
1
7
sept.
2009
Bonjour,

Je souhaite logguer précisément et de façon complète les messages DHCP entrant sur le serveur et plus particulièrement les messages DHCPDISCOVER. Je voudrais voir de qui vient le message et quels sont ses options et plus particulièrement le contenu de l'option 61 : client-identifier.

J'ai donc pensé à un tcdump tournant tout le temps en filtrant sur les messages DHCP puis passer le tout à la moulinette pour extraire les informations. Mais cela ne va t-il pas surcharger la machine et n'y a t-il pas plus simple ? Car compter les octets ça ne risque pas d'être bien marrant.

N'y a t-il pas une option pour le serveur DHCP afin d'avoir des logs plus détaillés ?
  • # @MAC

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

    Tu as l'adresse mac pour identifier la machine emetrice.
    La localiser est un autre problème.

    Système - Réseau - Sécurité Open Source

    • [^] # Re: @MAC

      Posté par . Évalué à 1.

      Oui, je peux aisément localiser les différentes machines, cependant, il me faut savoir exactement ce qu'elles envoient dans le champ client-identifier.
      • [^] # Re: @MAC

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

        C'est une valeur unique qui est définie par le client.

        Le protocole dhcp ne va pas écrouler ton serveur en faisant un tcpdump, c'est pas trop volubile.( depends du nb de clients, du bail, ... )

        Système - Réseau - Sécurité Open Source

  • # Mode 'debug'

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

    N'y a t-il pas une option pour le serveur DHCP afin d'avoir des logs plus détaillés ?

    Pas à ma connaissance, mais il est possible de faire fonctionner dhcpd en mode 'debugging' qui devrait donner plus de détails (je n'ai pas testé) avec l'option -d. Au besoin, voir la page de manuel plus plus de précision.
  • # tcpdump coté client

    Posté par . Évalué à 1.

    Si tu as peur de charger le serveur avec tcpdump, tu peux sniffer a coté du client ... ce sera moins verbose et de toutes manières pas fait par le serveur.

    Sinon avec un tcpdump -n -i interface port 67 or port 68 -s0 -w /tmp/matrace.dump tu vas enregistrer les paquets qui t'intéressent, et tu pourra ouvrir ce fichier avec wireshark (sous linux ou windows).
  • # Exemple de log detaillé

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

    Ci dessous un extrait de config pour ISC DHCP 3 utilisable avec le dhcp-snooping de switchs ciscos:

    if exists agent.circuit-id
    {
    log ( info, concat( "Lease for ", binary-to-ascii (10, 8, ".", leased-address), " is connected to interface ",
    binary-to-ascii (10, 8, "/", suffix ( option agent.circuit-id, 2)), " VLAN ",
    binary-to-ascii (10, 16, "", substring( option agent.circuit-id, 2, 2)), " on switch ",
    binary-to-ascii(16, 8, ":", substring( option agent.remote-id, 2, 6))));

    log ( info, concat( "Lease for ", binary-to-ascii (10, 8, ".", leased-address),
    " raw option-82 info is CID: ", binary-to-ascii (10, 8, ".", option agent.circuit-id), " AID: ",
    binary-to-ascii(16, 8, ".", option agent.remote-id)));
    }

    Exemple de sortie
    dhcpd: Lease for aaxx.yy.200 is connected to interface 1/6 VLAN 40 on switch 0:23:5d:68:ec:0
    dhcpd: Lease for aa.xx.yy.200 raw option-82 info is CID: 0.4.0.40.1.6 AID: 0.6.0.23.5d.68.ec.0
    • [^] # Re: Exemple de log detaillé

      Posté par . Évalué à 1.

      Ça a parfaitement l'air de correspondre à ce que je recherche cependant, rien ne s'affiche :

      log-facility local7;

      if exists dhcp-client-identifier and option dhcp-message-type = 1 {
      log (debug, concat("OPTION-61 from ",
      substring(binary-to-ascii(16, 8, ":", hardware), 2, 24),
      " with dhcp-client-identifier = \"",
      binary-to-ascii(16, 8, ":", option dhcp-client-identifier), "\"."));
      } else {
      log (info, concat("Request from ",
      substring(binary-to-ascii(16, 8, ":", hardware), 2, 24),
      "with no dhcp-client-identifer."));
      }


      J'ai mis ça au début du fichier.

      Et dans mon dossier /etc/rsyslog.d, j'ai un fichier dhcpd.conf :
      local7.info -/var/log/dhcpd.log
      local7.debug -/var/log/dhcpd.log
      local7.error -/var/log/dhcpd.log
      local7.fatal -/var/log/dhcpd.log


      Mais aucune trace de ce que je veux tracer dans le fichier /var/log/dhcpd.log ni même dans /var/log/message.

      J'ajoute donc :
      log (debug, "DEBUG");
      log (info, "INFO");
      log (error, "ERROR");


      Mais toujours rien. En laçant la commande dhcpd3 -d, les lignes :
      DEBUG
      INFO
      ERROR

      s'affichent mais pas le message concernant le client identifier. :-s
      • [^] # Re: Exemple de log detaillé

        Posté par . Évalué à 1.

        Ah ben non ça fonctionne en fait :D
        Merci de ton aide ça correspond exactement à ce que je voulais, vive man dhcp-eval !

Suivre le flux des commentaires

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