2 votes

Pourquoi le DHCP fonctionne-t-il même lorsque l'UDP 67 est bloqué?

J'ai un serveur dhcp sur mon raspberry pi. J'ai configuré un pare-feu qui n'autorise que les services ssh, dns et samba. Cependant, le serveur dhcp fonctionne également parfaitement, mais pourquoi?

Voici les règles du pare-feu:

table ip filter {
    chain input {
        type filter hook input priority filter; policy drop;
        tcp flags == 0x0 drop
        tcp flags & (fin | psh | urg) == fin | psh | urg drop
        tcp flags & (syn | ack) == syn | ack ct state new drop
        tcp dport { 22, 139, 445 } accept
        udp dport { 53, 137, 138 } accept
        ct state { established, related } accept
        iifname "lo" accept
    }

    chain forward {
        type filter hook forward priority filter; policy accept;
        ip daddr { 10.0.0.2, 10.0.0.3 } meta mark set 0x00000002
        ct mark set meta mark
    }
}
table ip nat {
    chain postrouting {
        type nat hook postrouting priority filter; policy accept;
        masquerade
    }
}

3voto

James Mertz Points 390

De nombreux clients et serveurs DHCP (IPv4) utilisent des sockets "bruts", qui contournent le pare-feu au niveau IP.

  • Côté client, lorsqu'un client DHCP (IPv4) démarre, il n'a généralement aucune adresse IP du tout. Par conséquent, il ne peut pas utiliser de sockets UDP ordinaires et doit plutôt utiliser des sockets "brutes", où il crée ses propres en-têtes UDP voire IP. Pour diverses raisons, peut-être parce que le mode brut contourne la pile IP habituelle, il contourne également le pare-feu IP. (Vous pouvez remarquer la même chose en utilisant tcpdump, qui voit tous les paquets avant que le pare-feu n'ait une chance de les rejeter.)

  • Côté serveur, la situation est probablement similaire. Le serveur recevra des paquets de diffusion d'une adresse nulle, il doit savoir par quel interface ils arrivent (certains systèmes d'exploitation ne disposaient pas de mécanismes permettant aux applications de le savoir en ce qui concerne l'UDP), les développeurs voulaient simplement réutiliser le même code, etc.

(Cela ne s'applique pas au DHCPv6, car les hôtes IPv6 ont toujours une adresse IP - l'adresse fe80:... de lien local - et le logiciel peut utiliser des sockets UDP ordinaires, qui sont affectées par le pare-feu et peuvent être liées à l'adresse d'une interface spécifique.)

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X