J'ai récemment rencontré un problème où l'ajout d'un NAT dynamique à une interface a interrompu tout le trafic traduit passant par l'interface avec des échecs RPF. Nous avons constaté que l'ajout de la commande a fait en sorte que le filtrage de chemin inverse NAT commence à abandonner la plupart du trafic sur l'interface, alors que la vérification du FPR ne se produisait pas (ou du moins, n'apparaissait pas dans les résultats de la commande packet-tracer
résultats).
L'interface disposait déjà de centaines d'exemptions NAT, de NATs statiques et de NATs de politique dynamique, mais l'ajout du premier NAT dynamique (avec une petite restriction de source /29 et une interface de destination sans rapport avec 99 % des traductions qui ont échoué) a déclenché les pannes.
Voici ce qui l'a brisé :
nat (Public) 33 172.16.14.0 255.255.255.248 outside tcp 0 0 udp 0
global (Voice) 33 10.0.8.180 netmask 255.255.255.255
La règle référencée dans les échecs du FPR était la règle PAT principale pour l'intérieur ; rien dans la configuration ajoutée n'aurait dû interférer avec l'inversion réussie de cette règle :
Phase: 9
Type: NAT
Subtype: rpf-check
Result: DROP
Config:
nat (public) 0 0.0.0.0 0.0.0.0 outside
nat-control
match ip Public any inside any
no translation group, implicit deny
policy_hits = 7274
Additional Information:
Full packet-tracer
résultats avant l'ajout du NAT : http://pastey.net/149630 et après : http://pastey.net/149631
La question est donc la suivante : est-ce que c'est vraiment comme ça que se comporte le NAT RPF - en filtrant seulement pour une interface une fois que cette interface a un NAT dynamique attaché ? Pourquoi un NAT dynamique le déclenche-t-il, alors que les NATs de politique dynamique (qui se comportent exactement de la même manière, mais avec une source et une destination spécifiées au lieu d'une simple source) ne le font pas ? Ou est-ce que cela se produisait toujours, simplement avec une autorisation implicite sur l'interface jusqu'à ce qu'il y ait un NAT dynamique, qui se transformait alors en un refus implicite si aucune règle ne correspondait ?
5520 fonctionnant sous 8.2.2, si ça compte.