Forum Linux.général Serveur DHCP multi-pool sélection par adresse mac.

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
0
24
déc.
2013

Bonjour à tous,

Je cherche à mettre en place une sélection de pool d'adressage en fonction l'adresse mac.
Un peu plus de détail :

Mon pool réseau est 172.16.0.0/16 je souhaite faire le trie entre les utilisateurs wifi, filaire et invité.
Je compte utilise les "sous-réseau" suivant :

Pool USER LOCAL 172.16.0.1 à 172.16.0.255
Pool USER LOCAL WIFI 172.16.1.1 à 172.16.1.255
Pool USER LOCAL GUEST 172.16.4.1 à 172.16.4.255

En recherchant j'ai trouvé la fonction dhcp client identifier mais cela nécessite une action sur le client et j'aimerai que les actions soient uniquement côté serveur.

Mon idéal serai de placé une access-list contenant les adresses mac autorisé pour chaque sous-réseau.

Pouvez-vous m'aider sur ce point ?

Je vous remercie d'avance.

  • # tu as tout ce qu'il te faut

    Posté par  . Évalué à 2.

    y a plus qu'a lire le mode d'emploi.

    man dhcpd.conf

    nous donne par exemple
    http://www.linuxmanpages.com/man5/dhcpd.conf.5.php

    subnet 10.0.0.0 netmask 255.255.255.0 {
      option routers 10.0.0.254;
    
      # Unknown clients get this pool.
      pool {
        option domain-name-servers bogus.example.com;
        max-lease-time 300;
        range 10.0.0.200 10.0.0.253;
        allow unknown-clients;
      }
    
      # Known clients get this pool.
      pool {
        option domain-name-servers ns1.example.com, ns2.example.com;
        max-lease-time 28800;
        range 10.0.0.5 10.0.0.199;
        deny unknown-clients;
      }
    }

    qui te permet de faire 2 pools clients connus/inconnus.
    mais ca suppose que tu connaisse les adresses MAC des machines considérées comme connues.

    dans ton cas je jouerais plutot avec les vlans (au sens 802.1q)
    un vlan pour le wifi
    un vlan pour le lan
    un vlan pour les guest

    meme si j'imagine que les guests peuvent etre sur le lan ou le wifi.

    dans ce cas là, il faudrait regarder du coté de Radius et la securisation reseau avec 802.1x
    qui permet d'identifier le client avec un login/mot de passe, pour ensuite lui attribuer un vlan et donc un bail IP particulier.

    • [^] # Re: tu as tout ce qu'il te faut

      Posté par  . Évalué à 1.

      Bonjour merci pour ta réponse. Je peux pas mettre de vlan en place.

      Cette pour cela que je regarde du côte de mon serveur DHCP. Je pense mettre en place quelque chose de se genre :

          subnet 10.0.0.0 netmask 255.255.255.0 {
        option routers 10.0.0.254;
      
        pool {
          option domain-name-servers bogus.example.com;
          max-lease-time 300;
          range 10.0.0.200 10.0.0.253;
          allow unknown-clients;
        }
      
      class "unknown-clients" (
          match if (
              (hardware,1,8) = "C0:18:85:3A:61:DF" or
              (hardware,1,8) = "D4:BE:D9:2E:92:08"))         
      

      Par contre je ne comprend pas à quoi corresponde les valeurs 1 et 8 après la condition hardware.

      Avez-vous une explication ?

      • [^] # Re: tu as tout ce qu'il te faut

        Posté par  . Évalué à 1.

        ca me semble logique, mais je l'explique

        hardware = mac address
        1,8 pour prendre les champs 1 à 8 de l'adresse MAC (soit la totalité de l'adresse)

        imaginons que tu ais des postes fixes, tous du meme contructeur, il est alors plus facile de dire

        (hardware, 1, 3) = "C0:18:85"

        • [^] # Re: tu as tout ce qu'il te faut

          Posté par  . Évalué à 1.

          Merci je n'avais pas percuté que les valeur 1,8 était la octet a vérifier.

        • [^] # Re: tu as tout ce qu'il te faut

          Posté par  . Évalué à 3.

          surement, ça parait logique,
          maintenant pourquoi pas (hardware,1,6) ?

          Les vrais naviguent en -42

          • [^] # Re: tu as tout ce qu'il te faut

            Posté par  . Évalué à 3.

            maintenant pourquoi pas (hardware,1,6) ?

            pas bete comme question, c'est vrai qu'une MAC address, c'est 6 groupes.

            mais le 1,8 doit etre documenté quelque part.

            • [^] # Re: tu as tout ce qu'il te faut

              Posté par  . Évalué à 4.

              Je me demande si le 8 n'est pas une erreur faite par certains croyant qu'il faille prend en compte les « : », par exemple dans match if substring (hardware,1,8) = "xx:xx:xx"; (exemple trouvé avec google dans 2 -3 forums), il y a 8 caractères, mais il faut bien en compter que 3.

              À mon avis, il faut faire un match if substring(hardware,1,6) = "xx:xx:xx:xx:xx:xx", comme on peut le voir dans la doc. Le 1, est parce qu'on prend un offset de de 1 car le premier caractère de hardware est le type de réseau (ethernet, fddi, token ring), et le 6 est la longueur.

              « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

Suivre le flux des commentaires

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