---
title: "ACL Cisco — Standard, Étendue & NAT"
domain: network
subdomain: acl
type: snippet
tags: [acl, cisco, nat, pat, standard, extended, named, ios, access-list]
difficulty: intermediate
status: stable
updated: "2025-05-14"
---
## Concepts fondamentaux

```
ACL (Access Control List) = liste de règles de filtrage appliquée sur une interface

Traitées séquentiellement de haut en bas — première règle qui matche = appliquée
Règle implicite finale : "deny any any" (tout ce qui n'est pas explicitement permis est refusé)

Types :
  Standard (1-99, 1300-1999)        : filtre sur IP SOURCE uniquement
  Étendue  (100-199, 2000-2699)     : filtre src/dst IP, protocole, ports L4
  Named                             : ACL avec nom (recommandé — plus lisible)

Direction d'application :
  in  : filtre le trafic entrant sur l'interface (avant le routage)
  out : filtre le trafic sortant sur l'interface (après le routage)

Placement recommandé (principe classique Cisco) :
  ACL étendue  → au plus près de la SOURCE (évite de consommer de la bande passante)
  ACL standard → au plus près de la DESTINATION (filtre uniquement sur src IP)

Wildcard mask = inverse du masque réseau
  255.255.255.0  → wildcard 0.0.0.255  (réseau /24)
  255.255.255.252→ wildcard 0.0.0.3    (réseau /30)
  0.0.0.0        → wildcard 255.255.255.255  = "any"
  255.255.255.255→ wildcard 0.0.0.0          = "host"
```

## ACL Standard

```text
conf t
! Numérotée (1-99)
access-list 10 permit {{ADMIN_IP}}
access-list 10 permit {{TRUSTED_SUBNET}} {{WILDCARD}}
access-list 10 deny any log            ! deny explicite avec log

! Appliquer sur interface (sortant — standard au plus près de destination)
interface GigabitEthernet0/1
 ip access-group 10 out

! Vérifier
show ip access-lists 10
show ip access-lists 10 | include matches   ! compteurs de matchs
```

## ACL Étendue

### Numérotée (100-199)

```text
conf t
! Autoriser HTTP/HTTPS depuis le LAN vers Internet
access-list 100 permit tcp {{LAN_SUBNET}} {{LAN_WILDCARD}} any eq 80
access-list 100 permit tcp {{LAN_SUBNET}} {{LAN_WILDCARD}} any eq 443
! Autoriser DNS
access-list 100 permit udp {{LAN_SUBNET}} {{LAN_WILDCARD}} any eq 53
access-list 100 permit tcp {{LAN_SUBNET}} {{LAN_WILDCARD}} any eq 53
! Autoriser ICMP
access-list 100 permit icmp {{LAN_SUBNET}} {{LAN_WILDCARD}} any
! Connexions établies (retour)
access-list 100 permit tcp any {{LAN_SUBNET}} {{LAN_WILDCARD}} established
! Deny implicite — explicite pour avoir les logs
access-list 100 deny ip any any log

interface GigabitEthernet0/0
 description ** WAN **
 ip access-group 100 in     ! étendue au plus près de la source (entrant sur WAN)
```

### Named ACL (recommandé)

```text
conf t
! ACL étendue nommée — plus lisible, permet insertion/suppression par séquence
ip access-list extended POLICY_LAN_OUT
 remark ** Politique de sortie LAN vers Internet **
 10 permit tcp {{LAN_SUBNET}} {{LAN_WILDCARD}} any eq 80
 20 permit tcp {{LAN_SUBNET}} {{LAN_WILDCARD}} any eq 443
 30 permit tcp {{LAN_SUBNET}} {{LAN_WILDCARD}} any eq 22
 40 permit udp {{LAN_SUBNET}} {{LAN_WILDCARD}} any eq 53
 50 permit icmp {{LAN_SUBNET}} {{LAN_WILDCARD}} any
 60 deny ip {{LAN_SUBNET}} {{LAN_WILDCARD}} {{DMZ_SUBNET}} {{DMZ_WILDCARD}} log
 999 permit ip any any       ! si ACL permissive (ou 999 deny ip any any log)

interface GigabitEthernet0/1
 description ** LAN **
 ip access-group POLICY_LAN_OUT in

! Ajouter une règle dans une ACL existante (insérer à la séquence 55)
ip access-list extended POLICY_LAN_OUT
 55 permit tcp {{LAN_SUBNET}} {{LAN_WILDCARD}} any eq 8443

! Supprimer une règle par numéro de séquence
ip access-list extended POLICY_LAN_OUT
 no 60
```

### ACL pour DMZ

```text
conf t
ip access-list extended POLICY_DMZ_IN
 remark ** Trafic entrant vers la DMZ **
 10 permit tcp any {{DMZ_SUBNET}} {{DMZ_WILDCARD}} eq 80
 20 permit tcp any {{DMZ_SUBNET}} {{DMZ_WILDCARD}} eq 443
 30 permit tcp {{ADMIN_SUBNET}} {{ADMIN_WILDCARD}} {{DMZ_SUBNET}} {{DMZ_WILDCARD}} eq 22
 40 deny ip {{LAN_SUBNET}} {{LAN_WILDCARD}} {{DMZ_SUBNET}} {{DMZ_WILDCARD}} log
 999 deny ip any any log

ip access-list extended POLICY_DMZ_OUT
 remark ** Trafic sortant depuis la DMZ **
 10 permit tcp {{DMZ_SUBNET}} {{DMZ_WILDCARD}} any eq 80
 20 permit tcp {{DMZ_SUBNET}} {{DMZ_WILDCARD}} any eq 443
 30 permit tcp {{DMZ_SUBNET}} {{DMZ_WILDCARD}} any eq 53
 40 permit udp {{DMZ_SUBNET}} {{DMZ_WILDCARD}} any eq 53
 ! Bloquer accès DMZ → LAN (isolation)
 50 deny ip {{DMZ_SUBNET}} {{DMZ_WILDCARD}} {{LAN_SUBNET}} {{LAN_WILDCARD}} log
 999 permit ip any any

interface GigabitEthernet0/2
 description ** DMZ **
 ip access-group POLICY_DMZ_IN in
 ip access-group POLICY_DMZ_OUT out
```

## ACL sur VTY (SSH/Telnet)

```text
conf t
! Restreindre l'accès SSH/Telnet à un réseau admin uniquement
ip access-list standard MGMT_ACCESS
 10 permit {{ADMIN_SUBNET}} {{ADMIN_WILDCARD}}
 20 deny any log

line vty 0 4
 access-class MGMT_ACCESS in         ! filtrage sur les sessions entrantes VTY
 transport input ssh                  ! SSH uniquement
 login local

line vty 5 15
 access-class MGMT_ACCESS in
 transport input ssh
```

## NAT Statique

```text
conf t
! NAT statique 1-to-1 (serveur avec IP publique fixe)
ip nat inside source static {{PRIVATE_IP}} {{PUBLIC_IP}}

! NAT statique avec port spécifique (port forwarding)
ip nat inside source static tcp {{PRIVATE_IP}} 80 {{PUBLIC_IP}} 80
ip nat inside source static tcp {{PRIVATE_IP}} 443 {{PUBLIC_IP}} 443
ip nat inside source static tcp {{PRIVATE_IP}} 22 {{PUBLIC_IP}} 2222

! Configurer les interfaces
interface GigabitEthernet0/0
 description ** WAN **
 ip nat outside

interface GigabitEthernet0/1
 description ** LAN/DMZ **
 ip nat inside
```

## NAT Dynamique avec Pool

```text
conf t
! Définir le pool d'adresses publiques
ip nat pool PUBLIC_POOL {{PUBLIC_START}} {{PUBLIC_END}} netmask {{PUBLIC_MASK}}

! ACL pour sélectionner les hôtes à NATer
ip access-list standard NAT_SOURCES
 permit {{LAN_SUBNET}} {{LAN_WILDCARD}}

! Associer ACL et pool
ip nat inside source list NAT_SOURCES pool PUBLIC_POOL

interface GigabitEthernet0/0
 ip nat outside

interface GigabitEthernet0/1
 ip nat inside
```

## PAT — Port Address Translation (overload)

```text
conf t
! PAT avec l'IP de l'interface WAN (IP dynamique — DHCP)
ip access-list standard PAT_SOURCES
 permit {{LAN_SUBNET}} {{LAN_WILDCARD}}

ip nat inside source list PAT_SOURCES interface GigabitEthernet0/0 overload

! PAT avec IP fixe (meilleure option si IP publique statique)
ip nat inside source list PAT_SOURCES interface GigabitEthernet0/0 overload

! Ou avec un pool + overload
ip nat pool PUBLIC_IP {{WAN_IP}} {{WAN_IP}} netmask {{WAN_MASK}}
ip nat inside source list PAT_SOURCES pool PUBLIC_IP overload

interface GigabitEthernet0/0
 ip nat outside

interface GigabitEthernet0/1
 ip nat inside
```

## NAT avec ACL de référence (combinaison NAT + ACL)

```text
conf t
! Scénario : LAN principal NATé, DMZ avec IP publiques statiques

! 1. NAT statique pour serveurs DMZ
ip nat inside source static {{DMZ_SERVER1}} {{PUBLIC_IP1}}
ip nat inside source static {{DMZ_SERVER2}} {{PUBLIC_IP2}}

! 2. PAT pour le LAN utilisateurs (reste du trafic)
ip access-list standard PAT_LAN
 permit {{LAN_SUBNET}} {{LAN_WILDCARD}}
 deny {{DMZ_SUBNET}} {{DMZ_WILDCARD}}   ! exclure la DMZ du PAT

ip nat inside source list PAT_LAN interface GigabitEthernet0/0 overload
```

## Vérifications

```text
! Lister toutes les ACL avec compteurs de matchs
show ip access-lists

! ACL spécifique
show ip access-lists POLICY_LAN_OUT

! ACL appliquées sur les interfaces
show ip interface GigabitEthernet0/0 | include access list

! Table de traduction NAT
show ip nat translations

! Traductions NAT détaillées
show ip nat translations verbose

! Statistiques NAT
show ip nat statistics

! Déboguer NAT
debug ip nat                           ! verbeux — lab uniquement
debug ip nat detailed

! Vider la table de traduction NAT (forcer renouvellement)
clear ip nat translation *
clear ip nat translation inside {{PRIVATE_IP}} outside {{PUBLIC_IP}}
```

### Interprétation `show ip nat translations`

```
Pro Inside global      Inside local       Outside local      Outside global
tcp 203.0.113.1:1024   192.168.1.10:1024  8.8.8.8:53        8.8.8.8:53
---       ↑                  ↑                 ↑                  ↑
     IP publique       IP privée LAN     Serveur distant    Serveur distant
```

<Tip>
Placer les ACL étendues au plus près de la source (interface entrante côté source) et les ACL standard au plus près de la destination (interface sortante côté destinataire). Ce principe minimise le trafic inutile sur le réseau : avec une ACL étendue proche de la source, les paquets filtrés ne traversent pas le réseau. Avec une ACL standard loin de la source, le trafic voyage jusqu'au routeur de destination avant d'être droppé.
</Tip>
