Standart Numaralı IPv4 ACL'lerin nasıl çalıştığına dair ayrıntılı bir açıklama sunmaktadır. Bu karmaşık ismi anlamlı parçalara ayıralım:
Standart: Paketleri yalnızca kaynak IP adresine göre filtrelerler.
Numaralı: ACL'yi tanımlamak için numaralar (isimler değil) kullanırlar.
IPv4: Yalnızca IPv4 trafiğiyle çalışırlar.
Şimdi, paket eşleştirme mantığıyla başlayarak konuya dalalım.
ACL eşleştirme mantığı
Erişim kontrol listelerinin (ACL'ler) en önemli yönü, trafiği nasıl eşleştirdiklerini anlamaktır.
Bir ACL hem tek bir öğe hem de aynı zamanda eşleştirme eylemi girişlerinin bir listesidir. Örneğin, ACL 50 gibi tek bir öğe olarak, bunu bir arayüze tek yönde uygularsınız. Uygulandıktan sonra, bir liste gibi davranır; her giriş satırı, yönlendiricinin her paketin kaynak IP adresine karşı kontrol ettiği belirli eşleştirme koşullarını içerir.
Örneğin, aşağıdaki diyagrama bakalım. GI0/0 portuna bir paket ulaşır ve burada standart erişim listesi numarası 50 uygulanır.
Yönlendirici, paketin kaynak IP adresini (10.1.0.7) ACL'deki her bir girişle aşağıdaki gibi karşılaştırır:
Yönlendirici, paketin kaynak IP adresini, en düşük sıra numarasından (sıra 10) başlayarak, ACL satır satır kontrol eder.
Eşleşme bulduğu anda durur ve eşleşen kuraldan gelen eylemi (izin ver veya reddet) uygular. Örneğimizde, paket sıra 30'da eşleşiyor. Bu nedenle, pakete izin verilir.
Hiçbir kural eşleşmezse, yönlendirici paketi otomatik olarak reddeder. Bunun nedeni, Cisco ACL'lerinin her zaman görünmez bir "herhangi bir şeyi reddet" kuralıyla (kırmızı renkte) bitmesidir.
Önemli not: Bir paket bir sıra satırıyla eşleşir eşleşmez, eylem (izin ver veya reddet) uygulanır ve paket ACL'nin geri kalanına karşı kontrol edilmeyi bırakır. Daha sonraki bir giriş de paketin kaynak IP adresiyle eşleşse bile, değerlendirilmeyecektir.
Örneğin, yukarıdaki diyagramda, paket sıra 30 ile eşleşiyor ve izin veriliyor. Paketin kaynak IP adresiyle de eşleşse bile, 40. sıraya ulaşmayacak ve reddedilmeyecektir. Bu davranışa ilk eşleşme mantığı denir. Yönlendirici, her ACL satırını yukarıdan aşağıya doğru kontrol eder ve ilk eşleşmede durur.
Tam IP Eşleşmesi
Şimdi, ACL eşleşme mantığının birkaç örneğini inceleyelim. Belirli bir kaynak IP adresini eşleştirmek için, izin verme veya reddetme girişinin sonuna tam IP adresini yazmamız yeterlidir.
Örneğin, 192.168.1.1 adresinden gelen paketlere izin vermek için, aşağıdaki diyagramda solda gösterildiği gibi aşağıdaki yapılandırma sözdizimini kullanırız:
Tam olarak aynı kaynak IP adresini eşleştirmek için eski ve yeni bir sözdizimi olduğunu unutmayın. Yeni olanı kullanmanız önerilir. Modern cihazlar hala host ile eski komutu kabul eder, ancak host anahtar kelimesini otomatik olarak kaldırır ve komutu solda gösterildiği gibi yeni sözdizimine dönüştürür.
IP aralığını eşleştirme (Joker Maske)
Çoğu zaman, bir ACL'nin amacı tek bir IP adresini eşleştirmek değil, bir alt ağdaki veya birkaç alt ağdaki tüm adresler gibi bir adres grubunu eşleştirmektir. Başka bir deyişle, ACL'nin yalnızca bir IP adresini değil, bir IP aralığını kontrol etmesini istersiniz. Örneğin, aşağıdaki şemada gösterildiği gibi, yüzlerce doğrudan bağlı sunucuya sahip bir yönlendiriciniz var. Her sunucuyu tam IP adresiyle eşleştirmeye çalışmak pratik değildir. Yüzlerce ACL satırı eklemeniz gerekecektir.
Bu nedenle ACL, joker maske kullanarak bir IP adresi aralığını eşleştirmenize olanak tanır. Bu, alt ağ maskesiyle aynı şey değildir. Joker maske (veya WC maskesi), ACL'ye eşleştirme sırasında IP adresinin hangi kısımlarını yok sayacağını söyler ve bu kısımları "önemsiz" değerler olarak ele alır.
Joker maskeler hem ondalık hem de ikili olarak anlaşılabilir, ancak önce ondalık olarak düşünelim:
Joker maskede 0, "bu sekizliyi normal şekilde karşılaştır" anlamına gelir.
255, "bu sekizliyi yok say; her şeyle eşleşir" anlamına gelir.
Örneğin, 0.0.0.255 joker maskesi, ACL'ye IP adresinin son sekizlisini yok saymasını söyler, aşağıdaki şemada gösterildiği gibi.
Dolayısıyla, karşılaştırılan adres 192.168.1.0 0.0.0.255 ise, 192.168.1.1 ve 192.168.1.75 eşleşir. Aslında, son sekizlideki sayıdan bağımsız olarak, 192.168.1.* ile başlayan her IP adresi bu ACL girdisiyle eşleşir.
Aşağıdaki gibi daha gevşek bir joker maske ile aynı mantığı kullanabiliriz:
0.0.255.255 son iki sekizliyi yok sayar.
0.255.255.255 son üç sekizliyi yok sayar.
Örneğin, aşağıdaki standart numaralı erişim listesi, üçüncü ve dördüncü sekizlilerdeki sayılardan bağımsız olarak, 192.168.*.* ile başlayan tüm IP adresleriyle eşleşir.
Örneğin, 192.168.45.123 ACL ile eşleşiyor. 192.168.0.55 de eşleşiyor. 192.168.255.99 da eşleşiyor ve benzeri.
Basit bir dille ifade etmek gerekirse, joker maskede 255, bu sekizlinin * olduğunu, yani herhangi bir sayının eşleştiğini gösterir. Aşağıdaki diyagram, en yaygın üç joker maskeyi göstermektedir. Maskedeki 255'lere dayanarak, IP adresindeki sekizli her şeyle eşleşir (*).
Önemli not: Joker maskede 255 kullandığınızda, ACL eşleşen IP adresinin bu sekizlilerde 0 olmasını bekler. Yani joker maske 0.255.255.255 ise, ACL IP adresinin 10.0.0.0 olarak yazılmasını bekler. Bu, tüm 10.*.*.* adresleriyle eşleşecektir.
Son olarak, en yaygın üç joker maskeyle ilgili birkaç örneğe daha bakalım.
access-list 50 permit 172.16.1.0 0.0.0.255This means: Ignore the last octet, match anything starting with 172.16.1.*access-list 50 permit 172.16.0.0 0.0.255.255This means: Ignore the last two octets, match anything starting with 172.16.*.*access-list 50 permit 172.0.0.0 0.255.255.255This means: Ignore the last three octets, match anything starting with 172.*.*.*
Son olarak, joker maskeyi standart alt ağ maskesiyle karşılaştıralım. Bunların farklı kavramlar olduğunu anlamak çok önemlidir.
Karmaşık Joker Karakterler (CCNP Seviyesi)
Şimdiye kadar IP adresleri ve joker karakter maskeleriyle ondalık gösterimde çalıştık. Bu şekilde çalışmak daha kolay çünkü insanlar 0'dan 9'a kadar olan sayılara dayalı ondalık sistemi kullanıyor. Ancak bilgisayarlar ve ağ cihazları ikili sistemde çalışır - yalnızca 1'leri ve 0'ları anlarlar.
Ağ iletişiminde joker karakter maskeleri ondalık sayılara benzeyebilir, ancak gerçekte ikili sistemdedirler. Nasıl çalıştıklarını anlamak için onları ikili sisteme dönüştürmek ve bit bit karşılaştırmak gerekir. Aşağıdaki örnek, ikili sistemde en yaygın üç joker karakter maskesini göstermektedir.
Decimal: 0.0.0.255Binary: 00000000.00000000.00000000.11111111Decimal: 0.0.255.255Binary: 00000000.00000000.11111111.11111111Decimal: 0.255.255.255Binary: 00000000.11111111.11111111.11111111
Hem IP adresi hem de WC maskesi ikili sistemde olduğundan, bunları ikili sisteme dönüştürmedikçe anlaşılması zor olan IP/WC maskesi kombinasyonları olabilir. Örneğin, aşağıdaki diyagram, anında anlaşılması daha zor olan bir WC maskesinin ondalık gösterimini göstermektedir. Bu tür bir ACL girdisine hangi IP adresleri uyacaktır? Bunu ikili sistem kullanarak bulalım.
Öncelikle, ACL girişinin hem IP adresi bölümünü hem de joker maske bölümünü ikili sayıya dönüştürmemiz gerekiyor. Artık iki adet 32 bitlik ikili sayımız var. ACL, joker maskenin 0 olduğu her biti karşılaştırır ve joker maskenin 1 olduğu her biti yok sayar, aşağıdaki şemada gösterildiği gibi.
Bu bize şu sonucu verir: Bir kaynak IP adresinin ilk 27 biti, ACL girdisiyle eşleşmesi için 00001010.00000001.00000001.000 ile başlamalıdır. Son 5 bit değişebilir. Peki bu ondalık gösterimde ne anlama gelir? Aşağıdaki şemada gösterildiği gibi, IP bölümünün ikili gösterimini tekrar ondalık sayıya dönüştürmemiz gerekiyor.
Dolayısıyla, eşleşen IP aralığı 10.1.1.0 ile 10.1.1.31 arasındadır. Neyse ki, CCNA sınavında, ayrıntılı ikili dönüşümler gerektiren karmaşık joker maskelerle ilgili sorular görmeyeceksiniz. Sınavda karşılaşacağınız joker maskelerin çoğu 0.0.0.255 veya 0.0.255.255 gibi olacaktır. Ancak odak noktası, ağır ikili matematik yapmak değil, joker maskelerin nasıl çalıştığını anlamaktır.
Daha Karmaşık Joker Maskeler (CCIE seviyesi)
Bir alt ağ maskesi ile joker maske arasındaki büyük bir farkı tanıtalım. Bir alt ağ maskesi her zaman ikili sistemde 1'lerden sonra 0'ların geldiği sürekli bir dizidir. Örneğin:
The subnet mask 255.255.255.0 in binary is:11111111.11111111.11111111.00000000
Ancak joker maskenin sürekli olması gerekmez. Bitler herhangi bir yerde karışık olabilir; bazıları 0, bazıları 1 olabilir. Örneğin, standart olmayan (sürekli olmayan) bir joker maske şöyle görünür:
0.0.15.240 → 00000000.00000000.00001111.11110000
Bu, genellikle OSPF veya BGP filtrelerinde kullanılan özel bir kalıptaki IP'leri eşleştirir. Bu mantığı kullanarak, belirli bir alt ağda yalnızca TEK veya ÇİFT IP adreslerini eşleştiren ACL girişleri oluşturabilirsiniz. Veya yalnızca 16'lık adımlarla değişen IP adreslerini eşleştirebilirsiniz, örneğin 10.1.1.16, 10.1.1.32, 10.1.1.48, vb. Erişim Listelerinin alt ağ maskesi yerine joker maske kavramını kullanmasının nedenlerinden biri de budur. Joker maskeler, daha karmaşık kalıpları eşleştirmemizi sağlar. Bununla birlikte, CCNA veya CCNP sınavlarında bu tür gereksinimlerle karşılaşmanız olası değildir. CCIE sertifikasını almaya karar verirseniz, bu konuya daha yakından bakabilirsiniz.
Herhangi Birine İzin Ver
Bir ACL, eşleştirme-eylem kurallarının bir listesidir. Her kural, kaynak IP adresine bağlı olarak paketlere izin verir veya reddeder. Bir yönlendirici arayüzüne bir ACL uyguladığınızda, yönlendirici gelen her paketi sırayla listeye karşı kontrol eder.
Eğer "izin ver" girişi eklemezseniz ve yalnızca "reddet" girişleri kullanırsanız, cihaz varsayılan olarak diğer tüm trafiği reddedecektir çünkü her ACL'nin sonunda örtük "herhangi bir şeye izin ver" ifadesi bulunur.
Bu nedenle, "herhangi bir şeye izin ver" ifadesi bazen bazı "reddet" girişlerinden sonra diğer trafiğe izin verilmesini sağlamak için kullanılır.
access-list 50 deny 10.1.1.4 access-list 50 deny 192.168.1.5 access-list 50 permit any
Örtük "Herhangi Birini Reddet"
Bir paket ACL'deki hiçbir kurala uymuyorsa, yönlendirici varsayılan olarak paketi düşürür. ACL'de son bir "herhangi birini reddet" girişi görmeseniz bile, Cisco cihazları sanki oradaymış gibi davranır. Bu nedenle birçok mühendis, tüm trafiği yanlışlıkla düşürmeyi önlemek için ACL'nin sonuna açık bir "herhangi birine izin ver" ekler.
İşte standart numaralı IPv4 ACL'lerin çalışma prensibi. Kurallar basit, ancak listenin sırası ve eşleşme mantığı çok önemli. ACL'lerin yukarıdan aşağıya doğru işlediğini ve bir eşleşme bulduklarında durduğunu her zaman hatırlayın.
Standart ACL Komut Sözdizimi
Modern bir Cisco cihazında yeni bir standart numaralı erişim listesi oluşturmak için kullanabileceğiniz iki farklı sözdizimi vardır.
Hala yaygın olarak kullanılan eski yöntem, genel komutları kullanmaktır.
Biraz daha yapılandırılmış olan yeni sözdizimi, yeni bir ACL nesnesi oluşturur ve alt komutlar olarak erişim listesi girişleri (ACE'ler) eklemenize olanak tanır.
İşlevsellik açısından, ACL'leri nasıl yapılandırdığınızın hiçbir farkı yoktur. Ancak, ACL'lerin yapılandırılması ve düzenlenebilirliği açısından, iki yaklaşım arasında önemli bir fark vardır.
Genel Komutlar
Genel komutları kullanan sözdizimi, standart numaralı erişim listelerini yapılandırmanın daha basit bir yoludur.
access-list 50 deny 192.168.1.10access-list 50 permit any
Bu stilin en büyük avantajı basitliğidir. Çok az satırla basit bir ACL'yi hızlıca girmek istiyorsanız, bunu global komutu kullanarak eklemeniz yeterlidir. Ancak, aşağıdaki verimsizliklere sahiptir:
Her bir match-action satırı global olarak girilir.
Tek bir satırı doğrudan düzenleyemez veya kaldıramazsınız.
Değişiklik yapmak için tüm ACL'yi no access-list 50 komutuyla kaldırmanız ve yeniden girmeniz gerekir.
Örneğin, aynı erişim listesini kullanarak 10.1.1.1 sunucusuna erişimi engellemek istediğinizi varsayalım. Böyle bir giriş eklerseniz, aşağıdaki çıktıda gösterildiği gibi permit any satırından sonra görünecektir ve cihaz bunu kabul etmeyecektir çünkü hiçbir etkisi olmayacaktır.
1(config)# access-list 50 deny 192.168.1.10R1(config)# access-list 50 permit anyR1(config)# access-list 50 deny 10.1.1.1% Access rule can't be configured at higher sequence num as it is part of the existing rule at sequence num 20
Aşağıdaki çıktıda gösterildiği gibi, ACL'nin tamamını kaldırmanız, değiştirmeniz ve genel yapılandırma modunda doğru şekilde yeniden girmeniz gerekir.
R1(config)# no access-list 50R1(config)# access-list 50 deny 192.168.1.10R1(config)# access-list 50 deny 10.1.1.1R1(config)# access-list 50 permit any
Adlandırılmış Stil Alt Komutları
Adlandırılmış stil sözdizimi, ACL'leri yapılandırmanın daha yeni ve daha esnek bir yoludur. Arayüz veya yönlendirme yapılandırmasına benzer bir yaklaşım kullanır. Önce genel yapılandırma modunda erişim kontrol listesini tanımlarsınız ve ardından aşağıdaki çıktıda gösterildiği gibi alt komutlarla girişleri eklersiniz.
ip access-list standard 50 10 deny 192.168.1.10 20 permit any
Bu yaklaşım, aşağıdaki iyileştirmeler sayesinde çok daha esnektir:
Tek tek satırları düzenleyebilirsiniz.
Girişleri yönetmek için sıra numaraları (10, 20, vb.) kullanabilirsiniz.
Yeni bir girişi, satırların sırasına göre istediğiniz yere ekleyebilirsiniz.
Örneğin, adlandırılmış stil sözdizimi kullanılarak tanımlanan aynı erişim listesini kullanarak 10.1.1.1 sunucusuna erişimi engellemek istediğinizi varsayalım.
R1(config)# ip access-list standard 50R1(config-std-nacl)# 15 deny 10.1.1.1 R1(config-std-nacl)# end!R1# show run | s access-listip access-list standard 50 10 deny 192.168.1.10 15 deny 10.1.1.1 20 permit any
Önemli Noktalar
Standart ACL, paketleri yalnızca kaynak IP adresine göre eşleştirir.
Hedef IP'leri, portları veya protokolleri dikkate almazlar.
Standart Numaralı ACL, bir sayı kimliğiyle tanımlanır.
Standart ACL'ler 1'den 99'a ve 1300'den 1999'a kadar sayılar kullanır.
ACL'ler yukarıdan aşağıya, ilk eşleşme mantığıyla çalışır.
Yönlendirici, her kuralı yukarıdan aşağıya doğru kontrol eder. İlk eşleşmede durur ve o işlemi uygular (izin ver veya reddet).
Her ACL'nin sonunda görünmez bir "herhangi birini reddet" bulunur.
Hiçbir kural eşleşmezse, paket otomatik olarak düşürülür.
Tam bir IP adresini veya bir IP aralığını eşleştirebilirsiniz.
Bir IP aralığını eşleştirmek için joker maskeler kullanın (örneğin, 0.0.0.255, 0 ile 255 arasında herhangi bir değerle biten herhangi bir IP'yi eşleştirir).
Joker maskeler, hangi IP bitlerinin göz ardı edileceğini tanımlar.
0, "eşleşmeli" anlamına gelir, 255 ise "bu kısmı yok say" anlamına gelir. Örnek: 192.168.1.0 0.0.0.255, tüm 192.168.1.* IP adresleriyle eşleşir.
"Herhangi bir IP adresine izin ver" ifadesi, diğer tüm trafiğe izin verir.
Belirli IP adreslerini reddederken diğer her şeye izin vermek istiyorsanız, her zaman sonuna "herhangi bir IP adresine izin ver" ifadesini ekleyin.
İki ACL yapılandırma stili vardır.
Genel komut stili: Hızlı ancak düzenlemesi zor.
Adlandırılmış alt komut stili: Esnek ve sıra numaralarıyla yönetimi kolay.
Genel ACL'leri düzenlemek zordur.
Bir satırı değiştirmek için tüm listeyi kaldırmanız ve yeniden oluşturmanız gerekir. Daha iyi kontrol için adlandırılmış stili kullanın.