CIDR, bir IPv4 bloğunu 203.0.113.0/26 gibi tek bir ifadeyle yazmanızı sağlar: eğik çizgiden sonraki sayı, adresin ilk kaç bitinin ağı belirttiğini söyler. Sayı küçüldükçe blok büyür, büyüdükçe küçülür; /24 256, /26 64 adres içerir, /32 ise tek bir adrestir.
Güvenlik duvarı kuralı yazarken, bir IP aralığını özetlerken ya da bir proxy paketindeki adres sayısını yorumlarken bu hesabı yapabilmek işinizi kolaylaştırır. Bu yazıda önek, alt ağ maskesi, joker maske, ağ ve yayın adresi kavramlarını, /31 ile /32 istisnalarını ve iki adım adım örneği bulacaksınız.
CIDR gösterimi: /24 neden 256 adres eder?
IPv4 adresi 32 bittir; yapısı IPv4 nedir yazısında anlatılıyor. CIDR gösteriminde adresin yanındaki sayı önek uzunluğudur ve ilk kaç bitin ağ kısmına ait olduğunu belirtir. Geriye kalan bitler ana makine kısmıdır ve blokta kaç adres bulunacağını belirler.
adres sayısı = 2 ^ (32 - N)
kullanılabilir ana makine = 2 ^ (32 - N) - 2 (N en fazla 30 ise)/24 için 32 − 24 = 8 ana makine biti kalır ve 2^8 = 256 adres çıkar. İlk adres ağ adresi, son adres yayın adresi olarak ayrıldığı için ana makinelere atanabilen adres sayısı 254'tür. /26 için 32 − 26 = 6 bit, yani 2^6 = 64 adres vardır; kullanılabilir adres 62'dir.
Elinizdeki bir bloğu hızla çözmek için CIDR ↔ IP aralığı aracı bir CIDR ifadesini ilk ve son adrese çevirir, bir adres aralığını da CIDR bloklarına özetler.
Alt ağ maskesi ve joker (wildcard) maske
Alt ağ maskesi aynı bilgiyi adres biçiminde söyler: ağ bitlerinin yerinde 1, ana makine bitlerinin yerinde 0 bulunan 32 bitlik bir sayıdır. /24 ilk 24 biti 1 yapar ve 255.255.255.0 maskesine karşılık gelir; /26 ise 255.255.255.192 demektir. Maskedeki 1'lerin sayısı, önek uzunluğuna eşittir.
Bir adresin hangi ağa ait olduğunu bulmak için adres ile maske bit bit VE (AND) işleminden geçirilir. Sonuç ağ adresidir:
Adres : 203.0.113.42 = 11001011.00000000.01110001.00101010
Maske : 255.255.255.0 = 11111111.11111111.11111111.00000000
Ağ : 203.0.113.0 = 11001011.00000000.01110001.00000000Joker maske (wildcard mask) alt ağ maskesinin tersidir. 255.255.255.0 maskesinin joker karşılığı 0.0.0.255, 255.255.255.192 maskesininki 0.0.0.63'tür; hesap için 255.255.255.255 değerinden alt ağ maskesini çıkarmanız yeterlidir.
Joker maskede 0 biti “bu bit eşleşmeli”, 1 biti “bu bit önemsiz” anlamına gelir. Bazı yönlendirici erişim listeleri ve OSPF ağ tanımları maskeyi bu biçimde ister; bu nedenle bir yapılandırma ekranında 0.0.0.255 gördüğünüzde bir /24 bloğundan söz edildiğini bilirsiniz.
Ağ adresi, yayın adresi ve iki istisna: /31 ile /32
Her blokta ilk adres ağ adresidir: ana makine bitlerinin hepsi 0'dır ve bloğu tanımlar. Son adres yayın adresidir: ana makine bitlerinin hepsi 1'dir ve aynı bloktaki tüm cihazlara aynı anda seslenmek için kullanılır. Bu iki adres cihazlara atanmadığından kullanılabilir ana makine sayısı toplam adresten ikiyle azalır.
Örneğin 203.0.113.0/24 bloğunda ağ adresi 203.0.113.0, yayın adresi 203.0.113.255, kullanılabilir aralık ise 203.0.113.1 ile 203.0.113.254 arasıdır.
İki önek bu kuralın dışındadır. /32 tek bir adresi gösterir; ağ, yayın ya da ana makine ayrımı yoktur ve yönlendirme tablolarında ya da güvenlik duvarı kurallarında tek bir makineyi belirtmek için kullanılır. /31 iki adreslik bir bloktur ve RFC 3021 uyarınca noktadan noktaya bağlantılarda ağ ve yayın adresi ayrılmadan iki adres de uç noktalara atanır; böylece /30 kullanıldığında harcanan dört adresin yarısı kurtarılır.
Yaygın önekler: maske, adres sayısı ve ana makine
Aşağıdaki tablo en sık karşılaşılan önekleri bir arada gösterir.
| Önek | Alt ağ maskesi | Adres sayısı | Kullanılabilir ana makine |
|---|---|---|---|
/8 | 255.0.0.0 | 16.777.216 | 16.777.214 |
/16 | 255.255.0.0 | 65.536 | 65.534 |
/24 | 255.255.255.0 | 256 | 254 |
/25 | 255.255.255.128 | 128 | 126 |
/26 | 255.255.255.192 | 64 | 62 |
/27 | 255.255.255.224 | 32 | 30 |
/28 | 255.255.255.240 | 16 | 14 |
/29 | 255.255.255.248 | 8 | 6 |
/30 | 255.255.255.252 | 4 | 2 |
/31 | 255.255.255.254 | 2 | 2 (RFC 3021, noktadan noktaya) |
/32 | 255.255.255.255 | 1 | 1 (tek ana makine) |
Tabloyu ezberlemek gerekmez, çünkü her satırda aynı kural işler: önek bir büyüdüğünde blok yarıya iner, bir küçüldüğünde iki katına çıkar. Örneğin bir /24 iki /25'e, dört /26'ya bölünür. Bir adres ve önek verildiğinde ağ adresini, yayın adresini ve ana makine aralığını hesaplamak için IPv4 alt ağ hesaplayıcı aracını kullanabilirsiniz.
İki adım adım örnek
Birinci örnek bir CIDR bloğunu çözümler, ikinci örnek bir adresin hangi bloğa düştüğünü bulur. İkisinde de yalnızca dokümantasyon aralıklarındaki adresler kullanıldı.
Örnek 1: 203.0.113.0/26 bloğunu çözümlemek
- 01Ana makine bitlerini ve adres sayısını bulun32 − 26 = 6 ana makine biti kalır. 2^6 = 64 adres çıkar.
- 02Maskeyi yazınİlk 26 bit 1 olduğundan son oktetin ilk iki biti 1'dir:
11000000= 192. Maske255.255.255.192, joker maske0.0.0.63olur. - 03Ağ ve yayın adresini belirleyinAğ adresi
203.0.113.0'dır. Blok 64 adres içerdiğinden yayın adresi 0 + 63 =203.0.113.63olur. - 04Kullanılabilir aralığı yazınAna makineler
203.0.113.1ile203.0.113.62arasındadır; toplam 62 adres. Aynı/24içinde dört/26bulunur:203.0.113.0/26,203.0.113.64/26,203.0.113.128/26ve203.0.113.192/26.
Örnek 2: 198.51.100.77/27 hangi bloğa ait?
- 01Blok boyutunu bulun32 − 27 = 5 ana makine biti kalır; blok boyutu 2^5 = 32 adrestir. Son oktette bloklar 32'şer artar: 0, 32, 64, 96, 128, 160, 192, 224.
- 02Adresin düştüğü bloğu seçinSon oktet 77'dir. 77, 64 ile 96 arasında olduğundan blok 64'ten başlar.
- 03Ağ ve yayın adresini yazınAğ adresi
198.51.100.64, yayın adresi 64 + 31 =198.51.100.95olur. Cevap:198.51.100.64/27. - 04Aralığı doğrulayınKullanılabilir adresler
198.51.100.65ile198.51.100.94arasındadır; toplam 30 ana makine. Sonucu IPv4 alt ağ hesaplayıcı ile çapraz kontrol edebilirsiniz.
Proxy paketlerinde IP sayısı ile alt ağ aynı şey değildir
Bir paketin “250 IP” olarak anılması 250 adres aldığınız anlamına gelir; bu adreslerin tek bir alt ağ ya da bitişik bir blok oluşturduğu anlamına gelmez. Datacenter proxy paketleri 30, 100, 250 ve 1.000 IP'lik kademelerle sunulur; paket tanımları IP sayısını belirtir, bitişik blok ya da tek alt ağ bilgisi bu tanımların parçası değildir. Bu yüzden adreslerin aynı /24 içinde olacağını varsaymayın.
Matematik de aynı yönü gösterir: bir CIDR bloğu her zaman 2'nin bir kuvveti kadar adres içerir (1, 2, 4, 8 … 256 … 1.024). 30, 100, 250 ve 1.000 bu sayılardan biri olmadığı için bu kademelerden hiçbiri tek bir CIDR bloğuna denk gelemez.
Fark pratikte, kendi sunucunuzda yalnızca proxy adreslerinizden gelen bağlantılara izin vermek istediğinizde ortaya çıkar. Adresler bitişik değilse tek kural yetmez; adresleri tek tek /32 olarak ya da birleştirilebilenleri bloklara özetleyerek yazarsınız. Python'un standart kütüphanesi bu özetlemeyi yapar:
import ipaddress
adresler = [
"203.0.113.8",
"203.0.113.9",
"203.0.113.10",
"203.0.113.11",
"203.0.113.64",
]
aglar = [ipaddress.ip_network(a) for a in adresler] # her adres bir /32 ağıdır
for blok in ipaddress.collapse_addresses(aglar):
print(blok)Teslim aldığınız gerçek bir listenin kaç bloğa dağıldığını görmek için aynı yöntemi kullanabilirsiniz; aralık hesabı için CIDR ↔ IP aralığı aracı da işinize yarar. Mevcut kademeleri görmek isterseniz datacenter proxy paketlerine bakabilirsiniz.