Accueil / Notes techniques / IPSG bloque du trafic légitime

IP Source Guard rejette de bons paquets : le piège du MAC en transfert L3

IPSG s'active proprement sur chaque port d'accès, puis une liaison montante routée s'éteint silencieusement dès que vous l'activez. La cause n'est pas une mauvaise table de liaison — c'est que le transfert de couche 3 réécrit le MAC source du paquet avant même qu'IPSG ne l'examine. Voici comment le prouver avec une capture de paquets, et les pièges connexes issus de la même logique de table de liaison.

Par Yuwen Zhang (Atlas), fondateur d'AtlasCommTech — 13 ans de déploiements de réseaux opérateurs et d'entreprise · Mis à jour en juillet 2026

Pourquoi une table de liaison « qui fonctionne » rejette quand même du trafic

La table de liaison n'est pas fausse. Elle répond simplement à une question posée par IPSG au mauvais endroit du parcours du paquet.

IP Source Guard vérifie l'IP source, le MAC source, le VLAN et l'interface entrante d'un paquet par rapport à une table de liaison avant de décider de le transférer ou de le rejeter. Sur un simple port d'accès de couche 2, cette vérification est triviale — le MAC du client ne change jamais entre le moment où DHCP Snooping l'enregistre et le moment où IPSG examine le paquet suivant. Activez la même fonction sur une interface située en aval d'un transfert de couche 3, et elle peut commencer à rejeter du trafic qui n'a jamais été un problème de sécurité.

C'est l'une des pannes IPSG les plus contre-intuitives, car tout le reste du montage semble correct — la table de liaison a la bonne entrée, aucune ACL n'est impliquée, et l'interface elle-même ne montre aucune erreur. La panne se situe dans un détail que la plupart des ingénieurs ne pensent pas à vérifier avant d'avoir déjà relu la configuration, le câblage et la table DHCP Snooping deux fois chacun. Si la table de liaison que votre appareil construit semble fausse dès le départ, la note de dépannage DHCP Snooping est le point de départ à privilégier — cette note suppose que la table de liaison est déjà correcte et cherche pourquoi IPSG rejette quand même le trafic.

Lisez les deux chemins avant de toucher à la table de liaison

IPSG se comporte de manière identique sur les deux chemins ci-dessous. La seule différence est de savoir si quelque chose entre les deux a réécrit le MAC source du paquet.

Placer votre symptôme du bon côté de ce diagramme vous indique immédiatement si vous êtes face à un problème de table de liaison ou de transfert de couche 3 — et les deux se corrigent de manière totalement différente.

PATH A · L2 ACCESS PORT (DIRECT DHCP CLIENT) PATH B · L3-FORWARDED / ROUTED UPLINK Client packet leaves the hostSrc MAC = client's own MAC (AA:AA) · untouched Same packet, routed across a VLANIF hopL3 forwarding rewrites Src MAC to the outgoing interface's own MAC (BB:BB) DHCP Snooping binding table records AA:AAIP + AA:AA + VLAN + interface, built at the access edge Binding table still only knows AA:AADynamic entries never track the post-routing MAC rewrite IPSG compares packet Src MAC to the binding tableAA:AA = AA:AA -> match IPSG compares packet Src MAC to the binding tableBB:BB != AA:AA -> mismatch PASS -- link works normally DROP -- link goes dead once IPSG is enabled Same DHCP Snooping binding table, same IPSG feature -- the only variable is whether a routing hop rewrote the source MAC before the check.

Les légendes du schéma restent en anglais pour la clarté technique.

Le chemin A ne tombe presque jamais en panne, car rien entre le client DHCP et le point de vérification IPSG ne touche jamais le MAC source de la trame. Le chemin B mérite d'être relu deux fois : tout, dans la table de liaison, peut être parfaitement correct et IPSG rejettera quand même le trafic, parce que le paquet réellement examiné par IPSG n'est plus celui envoyé initialement par le client.

Confirmez que c'est la réécriture du MAC, pas une mauvaise table de liaison

Quatre vérifications, dans l'ordre — chacune écarte une cause plausible différente avant d'arriver à la capture de paquets qui le prouve réellement.

Étape 1 — Isoler IPSG comme cause réelle

Avant de lire les fichiers de capture, confirmez que le blocage est bien dû à IPSG et non à quelque chose en amont.

  1. Désactivez la vérification des paquets IPSG sur l'interface et effectuez un ping sur le chemin — si cela passe et que la réactivation de la vérification casse à nouveau la connexion, c'est IPSG (pas le routage, pas l'ACL, pas le lien physique) qui rejette.
  2. Vérifiez display interface pour le port concerné. Les rejets IPSG n'apparaissent pas comme un compteur Discard ou CRC croissant — une interface d'apparence propre avec des compteurs d'erreur à zéro est exactement à quoi ressemble cette panne, pas une preuve du contraire.
  3. Vérifiez display dhcp snooping user-bind all (et la table statique le cas échéant) pour l'IP du client. Dans cette panne, l'entrée est présente et semble entièrement correcte — la table de liaison elle-même n'a jamais été la source du problème.
[Switch] display inter XGigabitEthernet 0/0/1
XGigabitEthernet0/0/1 current state : UP
Discard:              0, Pause:               0
Total Error:          0
// zero drops on the interface counters -- IPSG's own drop is not counted here

<Switch> display dhcp snooping user-bind all
DHCP Dynamic Bind-table:
IP Address     MAC Address    VSI/VLAN(O/I/P)/(BD-VLAN) Interface Lease
192.168.10.214 5451-1b84-0a1b 10 /-- /--                XGE1/0/0  2024.07.25-21:55
// binding table entry is present and looks correct -- this is not where the fault is

Étape 2 — Capturer des deux côtés du saut de transfert

C'est la vérification qui prouve réellement la théorie — tout ce qui précède ne fait que restreindre la recherche.

  1. Capturez du côté client du chemin et notez le MAC source de la trame — c'est l'adresse enregistrée dans la table de liaison.
  2. Capturez à nouveau sur l'interface où IPSG est activé, pour le même flux. Comparez les deux adresses MAC source.
  3. Si les deux captures montrent des adresses MAC source différentes pour ce qui est manifestement la même conversation, un saut de couche 3 entre les deux a réécrit la trame — c'est exactement ce que le routage fait à chaque trame qu'il transfère, et exactement ce que la table de liaison dynamique n'a jamais été conçue pour suivre.
// Capture near the client:
Frame 7: Ethernet II, Src: HuaweiTe_84:0a:18 (54:51:1b:84:0a:18), Dst: Dongguan_0b:3c:eb (3c:c7:86:0b:3c:eb)
Internet Protocol Version 4, Src: 192.168.7.81, Dst: 192.168.10.214

// Capture on the IPSG-enabled interface, same conversation:
Frame 10: Ethernet II, Src: Dongguan_0b:3c:e8 (3c:c7:86:0b:3c:e8), Dst: HuaweiTe_84:0a:18 (54:51:1b:84:0a:18)
Internet Protocol Version 4, Src: 192.168.10.214, Dst: 192.168.7.81
// same flow, but the source MAC seen at this interface is not the binding table's recorded MAC
// -- the L3 hop between the two capture points rewrote it

Étape 3 — Corriger sans désactiver IPSG

La solution n'est pas de désactiver la fonction — c'est de lui fournir une entrée de liaison qui correspond au paquet qu'elle verra réellement.

  1. Ajoutez une entrée de liaison statique sur l'interface où IPSG est activé, en utilisant l'adresse MAC observée par la capture sur cette interface — pas le MAC d'origine du client. Sur un chemin routé, c'est le MAC du saut précédent, pas celui du terminal.
  2. Réservez les liaisons dynamiques DHCP Snooping aux interfaces où les trames propres du client arrivent non modifiées. Ne comptez pas sur la table dynamique pour une interface en aval d'un point de transfert de couche 3.
  3. Lorsque IPSG doit se trouver sur plusieurs sauts routés du même chemin, vérifiez la liaison statique de chaque saut séparément — le MAC source change à chaque frontière de couche 3 qu'il traverse, pas seulement à la première.
[Switch] user-bind static ip-address 192.168.10.214 mac-address 3cc7-860b-3ceb interface XGigabitEthernet 1/0/1
[Switch] interface XGigabitEthernet 1/0/1
[Switch-XGigabitEthernet1/0/1] ip source check user-bind enable
// the MAC used here is the post-routing MAC actually seen at *this* interface,
// confirmed by the capture -- not the client's original MAC

5 pièges produits par la même logique de table de liaison

Une fois la panne de réécriture du MAC ci-dessus confirmée ou écartée, ces cinq pièges expliquent l'essentiel du reste de ce qui va mal autour d'IPSG et de ses tables de liaison.

1. Le transfert de couche 3 réécrit le MAC source — la table de liaison ne le voit jamais

SYMPTÔMELe ping et le trafic applicatif traversant un saut routé échouent dès que la vérification de paquets IPSG est activée sur cette interface ; la désactiver rétablit le trafic immédiatement, sans changement d'ACL, de route ou de lien.

CAUSELors du transfert de couche 3, le MAC source de la trame change pour devenir celui de l'interface sortante à chaque saut. La table de liaison dynamique de l'appareil, générée par DHCP Snooping, n'enregistre jamais que le MAC d'origine, inchangé, du client. IPSG compare le MAC source actuel du paquet en direct à cet enregistrement inchangé, de sorte qu'un paquet parfaitement légitime et parfaitement routé échoue à la correspondance et est rejeté.

SOLUTIONAjoutez une entrée de liaison statique sur l'interface routée / activée pour IPSG en utilisant le MAC post-transfert réellement observé sur cette interface, pas le MAC du client d'origine. Compter uniquement sur la table dynamique DHCP Snooping n'est sûr que sur les interfaces où les trames arrivent avec le MAC source intact.

2. Une seule entrée de liaison statique verrouille tous les autres utilisateurs sur ce port

SYMPTÔMEDès qu'une seule liaison statique IP+MAC est ajoutée sur une interface partagée, des utilisateurs sans rapport sur le même port perdent la connectivité — pas seulement le trafic que la liaison devait contrôler.

CAUSEDès qu'une entrée de liaison statique existe sur une interface avec la vérification de paquets IPSG activée, chaque paquet IP arrivant sur cette interface est comparé à la table de liaison — il n'existe pas de mode partiel où seule l'adresse liée est vérifiée et tout le reste passe sans y toucher. Le trafic des utilisateurs qui n'ont jamais reçu d'entrée de liaison n'a rien à quoi correspondre, il est donc traité comme une tentative d'usurpation et rejeté.

SOLUTIONAjoutez soit une entrée de liaison statique pour chaque utilisateur légitime partageant cette interface, soit supprimez complètement les liaisons statiques et comptez sur les liaisons dynamiques DHCP Snooping pour une interface d'accès partagée — mélanger quelques utilisateurs liés avec le reste non lié sur le même port ne fonctionne pas.

3. Les ports de confiance ignorent totalement la vérification — silencieusement

SYMPTÔMEIPSG est configuré et apparaît dans la configuration active, mais une interface spécifique ne bloque jamais rien, même un trafic qui devrait clairement échouer à la vérification de la table de liaison.

CAUSEUn port configuré comme port de confiance DHCP Snooping transfère chaque paquet sans aucune comparaison avec la table de liaison — le statut de confiance contourne totalement IPSG sur cette interface, par conception. La configuration semble identique à celle d'une interface IPSG fonctionnelle, car ce n'est pas la commande ip source check elle-même qui contrôle ce comportement.

SOLUTIONVérifiez le rôle de confiance/non-confiance DHCP Snooping du port avant de supposer un problème de table de liaison ou d'ACL — display dhcp snooping user-bind associé à la configuration de confiance de l'interface explique plus de tickets silencieux « IPSG ne fonctionne pas » qu'une mauvaise entrée de liaison.

4. La table de liaison dynamique expire sous un trafic qui fonctionnait

SYMPTÔMEUn appareil qui laissait passer le trafic normalement depuis des heures ou des jours commence soudainement à rejeter les paquets d'un client dont l'IP et le MAC n'ont pourtant pas changé.

CAUSELes liaisons dynamiques générées par DHCP Snooping suivent le même vieillissement basé sur le bail que le bail DHCP lui-même. Si le client ne renouvelle pas avant l'expiration de l'entrée, et n'envoie pas de nouvelle requête DHCP qui régénérerait la liaison, l'entrée disparaît simplement, et IPSG n'a alors plus rien pour faire correspondre le trafic continu du client.

SOLUTIONConfirmez que l'entrée de la table de liaison est toujours présente avec display dhcp snooping user-bind all avant de dépanner quoi que ce soit d'autre ; si elle a disparu et que le client n'a pas relancé de DHCP, corrigez soit le décalage avec une durée de bail adaptée, soit ajoutez une liaison statique pour les hôtes qui ne peuvent pas être fiables pour renouveler rapidement.

5. La granularité de la liaison statique détermine le rayon d'impact

SYMPTÔMEAprès l'ajout d'une liaison statique censée être limitée à un port ou VLAN spécifique, des utilisateurs ailleurs sur le réseau commencent à perdre la connectivité — ou inversement, les utilisateurs que la liaison était censée restreindre continuent de passer librement.

CAUSEUne entrée de liaison statique peut être définie avec n'importe quelle combinaison d'IP, MAC, interface et VLAN, en vue interface ou en vue VLAN — et la portée change complètement selon les champs inclus. Une entrée VLAN+IP sans interface ni MAC restreint uniquement par IP et VLAN, laissant passer n'importe quel MAC ou interface ; une entrée Interface+MAC sans IP fait l'inverse. Se tromper dans la combinaison n'échoue pas bruyamment — cela protège, ou bloque, simplement un ensemble de trafic différent de celui prévu.

SOLUTIONDécidez d'abord de la portée voulue — un utilisateur, un port ou un VLAN — et incluez exactement les champs correspondant à cette portée ; en cas de doute, une entrée Interface+IP+MAC+VLAN est la plus précise et la moins susceptible d'avoir un rayon d'impact non voulu.

Conceptions de solutions associées

Six questions qui reviennent sans cesse

Tirées directement du terrain — celles pour lesquelles il vaut la peine d'avoir une réponse prête.

Pourquoi display interface affiche zéro rejet alors qu'IPSG bloque clairement le trafic ?

Les rejets IPSG ne sont pas comptés dans les statistiques Discard ordinaires de l'interface — celles-ci suivent les rejets physiques et au niveau du buffer, pas ceux basés sur une politique. Un jeu de compteurs d'interface propre est exactement ce à quoi on s'attend avec cette panne, pas une preuve qu'IPSG n'est pas impliqué. Confirmez en activant/désactivant la vérification des paquets et en observant si le symptôme suit.

Quelle est la différence réelle entre les tables de liaison dynamique et statique ?

La table dynamique est générée automatiquement par DHCP Snooping à mesure que les clients louent des adresses, et expire avec le bail DHCP. La table statique est saisie manuellement et n'expire jamais — c'est l'outil adapté pour les hôtes à IP fixe, les hôtes derrière un saut routé où le MAC source change, ou tout appareil qui n'est pas un client DHCP. IPSG vérifie les deux tables ensemble ; il suffit que l'une des deux ait une entrée correspondante pour laisser passer le trafic.

Je veux corriger le cas du transfert L3 avec une liaison statique — quelle adresse MAC dois-je réellement utiliser ?

L'adresse MAC que l'interface où IPSG est activé verra réellement sur ce trafic — qui, sur un chemin routé, est le MAC du dernier appareil ayant transféré la trame, pas celui du client d'origine. Confirmez-le avec une capture sur cette interface spécifique plutôt que de supposer qu'il correspond à ce que DHCP Snooping a enregistré en amont.

Pourquoi IPSG ne fait-il absolument rien sur un port particulier ?

Vérifiez si ce port est configuré comme port de confiance DHCP Snooping. Les ports de confiance transfèrent tout paquet sans aucune comparaison de table de liaison, par conception — ce n'est pas un bug d'IPSG, c'est le comportement voulu du réglage de confiance, et il est facile d'oublier qu'il a été configuré ainsi des mois plus tard.

IPSG et un contrôle d'accès basé sur ACL peuvent-ils être utilisés sur la même interface ?

Oui, et ils sont évalués indépendamment — IPSG vérifie l'IP/MAC/VLAN/interface source par rapport à la table de liaison, tandis qu'une politique de trafic basée sur ACL correspond selon les champs spécifiés par ses règles. L'un des deux peut rejeter un paquet que l'autre aurait laissé passer, ce qui signifie qu'un ticket « bloqué » sur une interface exécutant les deux fonctions doit voir chacune écartée séparément plutôt que d'être attribué à l'autre par supposition.

IPSG protège-t-il contre un appareil usurpant la combinaison IP et MAC de quelqu'un d'autre ?

C'est exactement sa fonction sur les interfaces d'accès — une paire IP/MAC source usurpée qui ne correspond à rien dans la table de liaison est rejetée, que la table soit apprise dynamiquement ou configurée statiquement. Le mode de défaillance couvert dans cette note est le côté faux positif du même mécanisme : du trafic légitime qui ne correspond plus à la table parce que quelque chose en amont a changé le MAC, pas une véritable tentative d'usurpation.

Limites honnêtes de cette note

Limites honnêtes de cette note

Cette note s'articule autour de l'implémentation IP Source Guard des commutateurs Huawei série S et de ses tables de liaison basées sur DHCP Snooping, ainsi que des cas de terrain sous-jacents. Si votre couche d'accès est d'un autre fournisseur, les commandes exactes changent, mais la logique sous-jacente — une table de liaison construite en bordure d'accès, et une vérification de MAC source qui ne voit pas au-delà d'un saut de routage — s'applique directement. Elle ne couvre pas spécifiquement IPv6 Source Guard, ni les conceptions basées sur SAVI d'autres familles de normes.

Le trafic tombe juste après avoir activé IPSG ?

Dites-nous si le chemin concerné est un simple port d'accès ou se trouve derrière un saut routé, plus la sortie de display dhcp snooping user-bind, et nous vous aiderons à l'analyser.

Contacter un ingénieur sur WhatsApp →

Lectures associées

Nous n'utilisons des cookies que pour des statistiques anonymes — pas de publicité, pas de suivi intersites.Politique de confidentialité