Accueil / Notes techniques / Diagnostic ARP Miss du mappage NAT Server

Le mappage NAT Server est mort : le diagnostic ARP Miss

L'entrée server-map est correcte. La route est correcte. L'entrée ARP est correcte. Et le mappage ne fonctionne toujours pas — car c'est précisément le fait que toutes ces vérifications passent qui permet à cette panne de se cacher de l'ordre de dépannage évident. Voici la chaîne de diagnostic qui va un cran plus loin, jusqu'au compteur du plan de transfert qui nomme réellement le problème.

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

Quand toutes les vérifications de configuration passent et que le mappage ne fonctionne toujours pas

server-map normal, route normale, ARP normal — et le client sur internet ne peut toujours pas atteindre le serveur mappé.

Un mappage NAT Server qui ne fonctionne tout simplement pas est l'une des pannes les plus déroutantes sur un routeur Huawei AR, précisément parce que les trois premières choses que tout le monde vérifie — display firewall server-map nat-server, display ip routing-table, display arp — reviennent toutes propres. Si vous avez déjà configuré NAT Server correctement (voir notre guide de configuration Easy IP pour la mise en place elle-même), la panne n'est pas dans la définition du mappage ; elle se situe quelque part dans le chemin de transfert en dessous, et le moyen le plus rapide d'y arriver est une vérification de la table de sessions suivie d'un compteur de rejet de paquets du plan de transfert, pas un nouveau regard sur la configuration NAT.

Voici cette chaîne de diagnostic dans l'ordre, les causes racines qu'elle révèle réellement, et des réponses de FAQ tirées de cas de terrain sur les comportements de NAT Server qui continuent de prêter à confusion.

Comprenez la chaîne avant de revérifier le mappage

Quatre vérifications semblent parfaitement normales dans cette panne, une par une, avant que le rejet réel n'apparaisse sur un compteur du plan de transfert que personne ne pense à vérifier en premier.

C'est une chaîne linéaire, pas une bifurcation — chaque étape confirme soit « pas ici » et vous envoie à la vérification suivante, soit nomme la cause réelle et vous évite de revérifier une configuration qui n'a jamais été le problème.

1. server-map nat-server — Normal 2. Route + ARP to inside address — Normal 3. Trigger traffic, check session tableNo session created -> drop confirmed 4. forward information cpu-forward pfa counterERROR_CNT_IPV4_ARPMISS climbing 5. Interface config — nat enable missingRoot cause: fix with nat enable on ingress interface

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

Les deux premières étapes valent la peine d'être confirmées rapidement puis d'être faites confiance — retourner revérifier le server-map ou la route une deuxième et une troisième fois après qu'elles soient déjà revenues propres est le plus grand gouffre à temps de cette panne. La table de sessions et le compteur de transfert sont ce qui distingue réellement « le mappage est faux » de « le mappage est correct mais le transfert ne l'utilise jamais ».

Parcourir la chaîne

Les deux premières vérifications confirment que le mappage n'est pas le problème — les deux dernières prouvent le rejet et le nomment.

Étapes 1 et 2 — Confirmer que le mappage et la route ne sont pas le problème

Trois commandes, toutes propres, et aucune d'elles n'est là où se trouve réellement la panne.

  1. Exécutez display firewall server-map nat-server et confirmez que les entrées avant (Nat Server) et arrière (Nat Server Reverse) existent toutes deux pour l'adresse et le port mappés.
  2. Exécutez display ip routing-table pour l'adresse interne du serveur et confirmez qu'une route se résout vers la bonne interface de sortie.
  3. Exécutez display arp network pour l'adresse interne et confirmez qu'une entrée dynamique avec un vrai MAC existe — pas Incomplete.
  4. Si les trois reviennent propres, arrêtez de vérifier la configuration NAT elle-même et passez à la table de sessions — c'est le point de cette panne où relire une deuxième fois les trois mêmes sorties cesse d'être utile.
<sysname> display firewall server-map nat-server
 Current Total Server-map : 2
 Type: Nat Server,  ANY -> 100.1.1.101[192.168.205.101],  Zone:---,  protocol:---
 Vpn: public -> public
 Type: Nat Server Reverse,  192.168.205.101[100.1.1.101] -> ANY,  Zone:---,  protocol:---
 Vpn: public -> public,  counter: 1
// both forward and reverse entries present -- mapping itself is fine

[sysname] display ip routing-table 192.168.205.101
Destination/Mask    Proto   Pre  Cost   Flags NextHop         Interface
192.168.205.0/24    Direct  0    0       D    192.168.205.1   10GE0/0/1
// route resolves correctly

[sysname] display arp network 192.168.205.101 32
IP ADDRESS      MAC ADDRESS    EXP(M) TYPE/VLAN   INTERFACE     VPN-INSTANCE
192.168.205.101 0000-c0a8-cd65   11   D           10GE0/0/1
// real MAC, not Incomplete -- ARP is fine too

Étapes 3 et 4 — Prouver le rejet et le nommer

C'est là que la panne se révèle réellement — un cran en dessous de tout ce que vous avez déjà confirmé comme correct.

  1. Depuis l'extérieur du réseau, générez du trafic réel vers l'adresse publique et le port mappés (une tentative Telnet sur le port exact suffit), puis vérifiez si une session a été créée pour ce trafic. Aucune session du tout confirme que le trafic est rejeté quelque part dans le chemin de transfert, pas mal routé en silence.
  2. Activez le compteur de paquets du plan de transfert pour le trafic transféré par CPU, réinitialisez-le, régénérez le trafic, puis relisez-le en examinant spécifiquement ERROR_CNT_IPV4_ARPMISS et ERROR_CNT_BLACK_HOLE. Un compteur d'erreurs ARP-Miss en hausse ici — même si display arp lui-même semblait correct sur l'adresse interne — est le signal que ce trafic n'a jamais été résolu vers le bon prochain saut.
  3. Vérifiez directement la configuration de l'interface entrante avec display this. Si nat enable est absent sur l'interface faisant face au trafic côté public, voilà la réponse : les paquets destinés à l'adresse mappée ne sont jamais passés par la traduction server-map — ils ont été transférés comme une simple recherche IP pour la destination publique d'origine, qui n'a pas de route, d'où l'ARP Miss et le rejet en trou noir.
  4. Ajoutez nat enable sous l'interface et retestez avec le même déclencheur Telnet ; le mappage commence à fonctionner immédiatement une fois la traduction réellement appliquée au trafic entrant.
<sysname> system-view
[sysname] diagnose
[sysname-diagnose] display forward information cpu-forward slot 0 cpuid 0 "hsd diag set pfa counter debug 0 1"
[sysname-diagnose] display forward information cpu-forward slot 0 cpuid 0 "hsd diag clear pfa counter 1"
// trigger the Telnet attempt against the mapped port here, then read the counter
[sysname-diagnose] display forward information cpu-forward slot 0 cpuid 0 "hsd diag show pfa counter all 1"
Module     |        error                      |          Value
[ 4]IPV4
           [   4]ERROR_CNT_IPV4_ARPMISS                       14
           [   6]ERROR_CNT_IPV4_NHP_DWN                       14
           [  62]ERROR_CNT_BLACK_HOLE                         37
// ARP Miss and black-hole counts climbing -- traffic never resolved to the right next hop

[sysname] interface 10GE0/0/1
[sysname-10GE0/0/1] display this
#
interface 10GE0/0/1
 ip address 100.1.1.100 255.255.255.0
 device transceiver 10GBASE-FIBER
#
// nat enable is missing here -- ingress traffic never went through server-map translation
[sysname-10GE0/0/1] nat enable

5 causes racines qui reviennent sans cesse

Une fois que la chaîne ci-dessus vous a indiqué que le mappage et la route n'ont jamais été le problème, ces cinq causes couvrent l'essentiel du problème réel.

1. nat enable absent sur l'interface entrante

SYMPTÔMELe server-map, la route et l'ARP pour l'adresse interne sont tous propres, mais aucune session n'est jamais créée pour le trafic visant l'adresse publique mappée, et le compteur d'erreurs ARP-Miss du plan de transfert grimpe à chaque essai.

CAUSEL'entrée server-map existe globalement sur l'appareil, mais la traduction NAT ne s'exécute réellement que sur une interface où nat enable est configuré. Sans cela, le trafic destiné à l'adresse publique mappée est transféré comme une simple recherche IP contre cette adresse — qui n'était jamais censée être routée nulle part — au lieu d'être d'abord traduit vers l'adresse interne.

SOLUTIONConfirmez avec display this sur l'interface entrante, puis ajoutez nat enable.

[sysname-10GE0/0/1] display this
#
interface 10GE0/0/1
 ip address 100.1.1.100 255.255.255.0
#
[sysname-10GE0/0/1] nat enable

2. La session inverse de NAT Server prime sur une règle de refus de source-NAT

SYMPTÔMELe trafic dans une direction sur le même chemin fonctionne bien ; l'autre direction échoue, même si la configuration des deux extrémités et la liaison elle-même sont vérifiées — display ike sa (ou l'équivalent du tunnel) montre tout établi.

CAUSELe comportement automatique de session inverse de NAT Server prime sur une politique de source-NAT, même une qui refuse explicitement de traduire le trafic protégé. L'adresse privée est traduite en adresse publique de toute façon sur le chemin de retour, cassant ce qui attendait que ce trafic arrive non traduit.

SOLUTIONConfigurez no-reverse sur la commande nat server lorsque l'adresse côté serveur ne devrait jamais être traduite qu'en entrée, jamais sur son propre trafic sortant ; vérifiez display firewall server-map pour l'entrée « Nat Server Reverse » afin de confirmer qu'elle est réellement en jeu.

[sysname2] nat server 0 protocol tcp global 2.1.1.10 3389 inside 10.1.2.2 3389 no-reverse

3. Route en trou noir manquante pour l'adresse globale

SYMPTÔMEAucun symptôme évident tant que vous n'approfondissez pas — mais sous charge, ou après un changement de topologie, le trafic vers l'adresse globale du NAT Server commence à boucler entre l'appareil et le routeur en aval au lieu d'atteindre le serveur.

CAUSELorsque l'adresse du pool NAT ou l'adresse globale du NAT Server n'est pas sur le même sous-réseau que l'interface de sortie, l'appareil a quand même besoin qu'une route pour elle existe localement afin qu'un appareil en aval n'essaie pas de renvoyer le trafic correspondant. Sans route en trou noir, l'appareil en aval croit que la destination est encore accessible via l'appareil et la renvoie, formant une boucle.

SOLUTIONConfigurez une route en trou noir pour l'adresse globale du NAT Server (ou la plage du pool NAT) chaque fois qu'elle n'est pas sur le même sous-réseau que l'interface de sortie physique — et envisagez-en une même quand c'est le cas, car cela empêche aussi l'appareil de générer des requêtes ARP inutiles pour une adresse qui n'est en réalité jamais un vrai hôte.

[sysname] ip route-static 100.1.1.101 255.255.255.255 NULL0

4. L'adresse de destination de la politique de sécurité est l'adresse post-NAT, pas l'originale

SYMPTÔMELe mappage et la route semblent tous deux corrects, mais le trafic est toujours rejeté, et le rejet ne se dissipe qu'une fois la politique de sécurité/ACL réécrite pour référencer l'adresse privée du serveur plutôt que la publique.

CAUSELa traduction NAT Server se produit avant la vérification de la politique de sécurité dans l'ordre de transfert — dès qu'un paquet correspond à l'entrée server-map, son adresse de destination est déjà réécrite vers l'adresse interne au moment où l'évaluation de la politique a lieu. Une politique écrite contre la destination publique d'origine ne correspondra jamais.

SOLUTIONÉcrivez l'adresse de destination de la politique de sécurité comme l'adresse privée (interne) du serveur, pas l'adresse publique configurée dans le mappage NAT Server.

5. Aucune commande n'affiche directement les compteurs de correspondance sur le server-map ou le pool NAT

SYMPTÔMEVous voulez confirmer que le trafic touche réellement une entrée NAT Server ou pool spécifique, par opposition à simplement exister en tant que mappage, et les commandes évidentes n'affichent pas de compteur par entrée.

CAUSEIl n'existe aucune commande display qui indique directement combien de paquets ont correspondu à une entrée spécifique de NAT Server ou de pool d'adresses NAT.

SOLUTIONUtilisez plutôt display nat-policy rule all — elle indique un compteur HITS par règle de politique NAT, ce qui est le meilleur indicateur disponible pour confirmer qu'une règle donnée (et par extension son server-map ou pool associé) est réellement mise en correspondance par du trafic réel.

<sysname> display nat-policy rule all
Total:3
RULE ID  RULE NAME                  STATE        ACTION       HITS
1        test                       disable      no-nat          0
2        abc                        enable       src-nat         5
0        default                    enable       no-nat          0

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.

Puis-je utiliser l'adresse IP de l'interface du routeur lui-même comme adresse globale du NAT Server ?

Techniquement oui, mais évitez-le. Une fois que cette IP d'interface devient l'adresse globale du NAT Server, chaque paquet destiné à l'interface elle-même est d'abord traduit vers l'adresse interne du serveur — ce qui casse le ping, la gestion Web et Telnet vers l'appareil sur cette adresse. Utiliser l'IP de l'interface pour la traduction source-NAT à la place n'a pas ce problème, car le trafic activement initié vers l'interface suit le processus du premier paquet et contourne la politique de source-NAT.

Existe-t-il une commande qui montre combien de fois le trafic a réellement touché une entrée NAT Server spécifique ?

Pas directement. Il n'existe aucun compteur dédié à une seule entrée NAT Server ou pool NAT. display nat-policy rule all est ce qui s'en rapproche le plus — elle indique un compteur HITS par règle de politique NAT configurée.

Quand exactement un déploiement NAT a-t-il besoin d'une route en trou noir ?

Deux cas : lorsque le pool NAT ou l'adresse globale du NAT Server est sur un sous-réseau différent de l'interface de sortie (obligatoire, pour éviter une boucle de transfert), et — cela vaut la peine de le faire de toute façon — même lorsqu'elle est sur le même sous-réseau, car cela empêche l'appareil de générer des requêtes ARP inutiles pour une adresse qui n'a jamais été un vrai hôte.

Le mappage fonctionne pour l'accès entrant mais le serveur ne peut pas atteindre internet par lui-même — même NAT Server, pourquoi cette asymétrie ?

C'est le comportement no-reverse. Sans lui, la session inverse automatique du NAT Server traduit le propre trafic sortant du serveur vers la même adresse publique que le mappage — ce qui est généralement correct. Mais si une politique de source-NAT ou un pool d'adresses différent gère aussi le trafic sortant de ce serveur, les deux traductions divergent et les connexions échouent ; alignez-les sur la même adresse publique, ou appliquez no-reverse et configurez explicitement le NAT sortant pour cet hôte.

Notre politique de sécurité référence le serveur mappé par son IP publique, et le trafic est toujours bloqué — pourquoi ?

Parce que la traduction NAT Server se produit avant la vérification de la politique de sécurité. Au moment où la politique évalue le paquet, la destination est déjà devenue l'adresse interne privée. Pointez plutôt l'adresse de destination de la politique vers l'adresse interne.

Nous avons déjà un guide de configuration pour Easy IP / NAT Server — quand avons-nous besoin de cette note à la place ?

Le guide de configuration vous amène à un mappage correctement défini. Cette note concerne le cas où la définition est déjà correcte et que le trafic n'arrive toujours pas — ce qui signifie presque toujours que la panne se trouve un cran plus bas, dans le fait que la traduction NAT soit réellement appliquée à l'interface entrante, ou dans un rejet du plan de transfert que le mappage lui-même ne peut pas vous montrer.

Limites honnêtes de cette note

Limites honnêtes de cette note

Cette note s'appuie sur le modèle de panne NAT Server du routeur Huawei série AR, les diagnostics server-map / forward information cpu-forward et les cas de terrain qui les sous-tendent. Sur d'autres plateformes, les compteurs de rejet du plan de transfert équivalents se trouvent sous des commandes différentes, mais la chaîne sous-jacente — mappage, route, ARP, session, rejet de transfert, activation NAT sur l'interface — s'applique directement. Elle ne couvre pas en profondeur les déploiements NAT Server équilibrés en charge ou multi-actifs, ni les scénarios NAT64/NAT-PT.

Le mappage ne fonctionne toujours pas ?

Envoyez-nous votre sortie de display firewall server-map nat-server ainsi que l'étape de cette chaîne que vous avez confirmée propre, et nous vous aiderons à lire le reste.

WhatsApp avec un ingénieur →

Lectures connexes

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