Dla ruchu IP interesujące są dwa typy list ACL - standardowe i rozszerzone. Standardowa lista IP pozwala sprawdzić tylko adres źródłowy pakietu, np.:
ip access-list standard 10 permit host 192.168.0.10 ! Pozwalamy przejść pakietom z 192.168.0.10
Każda zdefiniowana ACLka zawiera domyślnie na końcu wpis odrzucający każdy ruch (default deny), jeśli więc skonstruujesz swoją ACLkę tak, by najpierw odrzucała jakiś konkretny ruch, a później chciałbyś żeby przepuszczała pozostały, musisz go wprost przepuścić, np. tak:
ip access-list standard 10 deny host 192.168.0.10 ! blokujemy wprost ruch z 192.168.0.10 deny host 192.168.0.11 ! blokujemy wprost ruch z 192.168.0.11 deny host 192.168.0.33 ! blokujemy wprost ruch z 192.168.0.33 deny host 192.168.0.91 ! blokujemy wprost ruch z 192.168.0.91 deny host 192.168.0.206 ! blokujemy wprost ruch z 192.168.0.206 permit any ! przepuszczamy pozostały ruch IP
Stworzenie standardowej listy ACL odbywa się przez nadanie jej identyfikatora od 1 do 99 (oraz od IOSu 12.0, z dodatkowego zakresu 1300-1999).
Rozszerzone ACL dostępne są w dwóch rodzajach - numerowane, w zakresie od 100 do 199 (od IOS 12.0 również 2000-2699), oraz nazwane. Termin rozszerzone oznacza, że pozwalają one sprawdzać ze szczegółami pewne standardowe pola pakietów (IP oraz w warstwie czwartej, czyli porty TCP/UDP oraz rodzaje i typy ICMP).
Załóżmy, że chcemy zablokować ruch do naszego routera o adresie 169.254.10.1 na port 80. Możemy napisać:
ip access-list extended 100 deny tcp any host 169.254.10.1 eq 80 ! ruch pakietów zawierających TCP z dowolnej lokalizacji ! (any) do hosta o adresie 169.254.10.1 na port docelowy 80 ! ma zostać zablokowany permit ip any any ! przepuszczamy pozostały ruch IP
Warto zwrócić na skrócony zapis - rozszerzone listy dostępu wymagają użycia adresu źródłowego i docelowego, jako pary adres i maska. Zamiast takiej konstrukcji można użyć słów any (odpowiada konstrukcji 0.0.0.0 0.0.0.0, czyli dowolny adres), oraz host A.B.C.D (co odpowiada konstrukcji A.B.C.D 255.255.255.255, czyli tylko ten konkretny jeden adres).
Rozszerzone ACL oferują pewne dodatkowe testy - podstawowe, dostępne w praktycznie wszystkich IOSach począwszy od 12.0 to między innymi:
Dla protokołów TCP i UDP dostępne są słowa kluczowe sprawdzające port:
Natomiast dla TCP możemy jeszcze dodatkowo wskazać flagi ustawione w pakiecie:
! ip access-list extended Internet2Serwer permit tcp any gt 1023 host 169.254.10.1 eq 25 syn !
Stworzoną ACL należy przypisać do interfejsu. Obowiązuje reguła, że do jednego interfejsu można przypisać dwie ACLki - jedną kontrolującą ruch wejściowy i jedną kontrolującą ruch wyjściowy (z routera, bądź przechodzący przez router i wychodzący tym akurat interfejsem).
interface serial 0.99 ip access-group 100 in ! ruch wchodzący interfejsem będzie sprawdzany wg ACLki 100 ip access-group 110 out ! ruch wychodzący interfejsem będzie sprawdzany wg ACLki 110