CIDR gösterimi ve alt ağ maskeleri: /8’den /32’ye nasıl okunur
192.168.1.0/24 gösteriminde eğik çizgiden sonraki sayı adresleri değil bitleri sayar. Bir IPv4 adresindeki 32 bitin kaçının ağa ait olduğunu söyler; geriye kalan ne varsa ana bilgisayarlara aittir. CIDR gösterimi büyük ölçüde bu tek cümleden ibarettir.
Geri kalan her şey bundan doğar. Bir /24 geriye 8 ana bilgisayar biti bırakır, dolayısıyla blok 2⁸ = 256 adres taşır. Bir /26 geriye 6 bit bırakır, yani 64 adres. Ana bilgisayar tarafına geri verdiğiniz her bit bloğu ikiye katlar; aldığınız her bit blok sayısını ikiye katlar. Cihazlara gerçekten atayabileceğiniz sayı ise normalde toplamdan iki eksiktir, çünkü ilk adres ağı adlandırır, sonuncusu da yayın adresidir. Bir /26 size 64 değil 62 kullanılabilir ana bilgisayar verir.
İki önek bu eksi iki kuralını bilerek bozar. Joker maske de alt ağ maskesi değildir, ikisi durmadan birbirinin alanına yapıştırılıyor olsa bile. Yalnızca tek bir bloğun yanıtını istiyorsanız alt ağ hesaplayıcı onu yazdırır; bu yazının konusu ise oraya araçsız varmak.
CIDR gösterimi aslında ne söyler
Alt ağ maskesinin kendisi de 32 bitlik bir sayıdır ve bir adres nasıl yazılıyorsa öyle yazılır. Bitleri, bir dizi 1’in ardından gelen bir dizi 0’dan oluşur. 1’ler ağ bitlerini, 0’lar ana bilgisayar bitlerini işaretler. Bir /26’yı tam olarak yazarsanız şunu elde edersiniz:
11111111.11111111.11111111.11000000
255 . 255 . 255 . 192
Her okteti onluk tabana geri çevirin, karşınıza 255.255.255.192 çıkar. CIDR gösterimi otuz iki bitin hepsini yazmak yerine baştaki 1’leri sayar. 192.168.1.0/26 ile 192.168.1.0 255.255.255.192 aynı ifadenin iki farklı yazımıdır; bir cihazın hangisini istediği ise tamamen yazdığınız komuta bağlıdır.
/8, /16 ve /24 oktet sınırlarına oturur; onluk tabanda o yüzden derli toplu görünürler: 255.0.0.0, 255.255.0.0, 255.255.255.0. Gösterimin böyle olmasını gerektiren hiçbir şey yok. /22 ve /27 de en az onlar kadar geçerlidir. Bir oktetin ortasından keserler ve 255.255.252.0 gibi maskeler üretirler. Bu maskeler, siz onları ikilik tabanda yazana kadar keyfi görünür.
Sınıfların neden ortadan kalktığı da buradan anlaşılır. 1993’ten önce bir adresin boyutuna baştaki bitleri karar veriyordu: A sınıfı bir /8, B sınıfı bir /16, C sınıfı bir /24 alırdı ve arada hiçbir şey yoktu. 300 ana bilgisayarı olan bir kurum ya bir B sınıfı isteyip 65 binden fazla adresi çöpe atmak ya da iki C sınıfı blok alıp iki rota taşımak zorundaydı. CIDR (RFC 1519, sonradan RFC 4632 olarak revize edildi) bu bağı kopardı. Önek adresle birlikte gezdiği için bir blok ikinin herhangi bir kuvveti olabilir. Sınıflar sertifika sınavlarında ve eski belgelerde hâlâ karşımıza çıkar, ama CIDR geldiğinden beri sınıf tabanlı yönlendirme kullanımdan kalkmış durumda. Bir ağın nerede bittiğine ilk oktet değil maske karar verir.
Alt ağ maskesi başvuru tablosu: /8’den /32’ye
CIDR önekinden alt ağ maskesine geçiş tablosu şöyle. Son sütun bilerek konuldu: genel 2ⁿ − 2 formülünün ürettiği sayıyı gösterir ve bu sayı, alttaki iki satır dışında her yerde gerçek kullanılabilir sayısıyla örtüşür.
| Önek | Alt ağ maskesi | Joker maske | Toplam adres | Kullanılabilir ana bilgisayar | Genel 2ⁿ − 2 sonucu |
|---|---|---|---|---|---|
| /8 | 255.0.0.0 | 0.255.255.255 | 16777216 | 16777214 | 16777214 |
| /9 | 255.128.0.0 | 0.127.255.255 | 8388608 | 8388606 | 8388606 |
| /10 | 255.192.0.0 | 0.63.255.255 | 4194304 | 4194302 | 4194302 |
| /11 | 255.224.0.0 | 0.31.255.255 | 2097152 | 2097150 | 2097150 |
| /12 | 255.240.0.0 | 0.15.255.255 | 1048576 | 1048574 | 1048574 |
| /13 | 255.248.0.0 | 0.7.255.255 | 524288 | 524286 | 524286 |
| /14 | 255.252.0.0 | 0.3.255.255 | 262144 | 262142 | 262142 |
| /15 | 255.254.0.0 | 0.1.255.255 | 131072 | 131070 | 131070 |
| /16 | 255.255.0.0 | 0.0.255.255 | 65536 | 65534 | 65534 |
| /17 | 255.255.128.0 | 0.0.127.255 | 32768 | 32766 | 32766 |
| /18 | 255.255.192.0 | 0.0.63.255 | 16384 | 16382 | 16382 |
| /19 | 255.255.224.0 | 0.0.31.255 | 8192 | 8190 | 8190 |
| /20 | 255.255.240.0 | 0.0.15.255 | 4096 | 4094 | 4094 |
| /21 | 255.255.248.0 | 0.0.7.255 | 2048 | 2046 | 2046 |
| /22 | 255.255.252.0 | 0.0.3.255 | 1024 | 1022 | 1022 |
| /23 | 255.255.254.0 | 0.0.1.255 | 512 | 510 | 510 |
| /24 | 255.255.255.0 | 0.0.0.255 | 256 | 254 | 254 |
| /25 | 255.255.255.128 | 0.0.0.127 | 128 | 126 | 126 |
| /26 | 255.255.255.192 | 0.0.0.63 | 64 | 62 | 62 |
| /27 | 255.255.255.224 | 0.0.0.31 | 32 | 30 | 30 |
| /28 | 255.255.255.240 | 0.0.0.15 | 16 | 14 | 14 |
| /29 | 255.255.255.248 | 0.0.0.7 | 8 | 6 | 6 |
| /30 | 255.255.255.252 | 0.0.0.3 | 4 | 2 | 2 |
| /31 | 255.255.255.254 | 0.0.0.1 | 2 | 2 | 0 |
| /32 | 255.255.255.255 | 0.0.0.0 | 1 | 1 | −1 |
Satırlar arasındaki ilişkiyi görünce tabloyu ezberlemeye gerek kalmıyor. Aşağı doğru her satır bloğu yarıya indirir: /24 256 adres taşır, /25 128, /26 ise 64. Joker maske sütunu, alt ağ maskesinin bütün bitlerinin ters çevrilmiş hâlidir; 255.255.255.192 ile 0.0.0.63 bu yüzden hep aynı satırda görünür. Kalın yazılmış iki satır ise standart formülün gerçeği anlatmayı bıraktığı yerdir.
Maske sütununda ezberlenmesi gereken tek şey son oktet değerleridir, çünkü tekrar ederler: 128, 192, 224, 240, 248, 252, 254, 255. Geçerli bir maskenin sonunda durabilecek, sıfırdan farklı sekiz bayt değeri bunlardır. Nedenini kendiniz çevirerek görmek isterseniz sayı tabanı dönüştürücü bunların her birini ikilik tabanda yazdırır.
Tabloyu tersten okumak: alt ağ maskesinden CIDR önekine
Elinizde noktalı ondalık bir maske varsa 1 bitlerini sayın. Her 255 sekiz bit katar; kalan bitler tek bir oktetten gelir:
| Son maske okteti | 128 | 192 | 224 | 240 | 248 | 252 | 254 | 255 |
|---|---|---|---|---|---|---|---|---|
| Kattığı bit | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
Yani 255.255.255.192 için 8 + 8 + 8 + 2 = /26. 255.255.252.0 için ise 8 + 8 + 6 + 0 = /22, çünkü 252’nin ikilik karşılığı 11111100.
Bundan iki sonuç çıkar. Birincisi, ne 255 ne de 0 olan her oktet sınır oktetidir ve geçerli bir maskede bunlardan yalnızca bir tane bulunabilir. İkincisi, o oktetin değeri size blok boyutunu doğrudan verir.
Alt ağ maskesi ve ağ adresi elle nasıl hesaplanır
Mekanik yöntemin üç adımı vardır ve her önek için işler. Aşağıdaki çözümlü örnek 192.168.1.130/26 adresini kullanıyor; adres değişse de adımlar aynı kalır.
1. adım: blok boyutunu bulun
Blok boyutu, 256 − sınır maske okteti işlemidir.
Bir /26 için maske 255.255.255.192’dir, dolayısıyla blok boyutu 256 − 192 = 64 olur. Bu boyuttaki alt ağlar dördüncü oktette 64’ün katlarına oturur: 0, 64, 128, 192. Başka hiçbir başlangıç noktası mümkün değildir.
Blok boyutu ile adres sayısı aynı sayıdır; bu kez bit sayımından değil maskeden yola çıkılarak bulunmuştur.
2. adım: adresin hangi bloğa düştüğünü bulun
Adresin sınır oktetini blok boyutuna bölün ve aşağı yuvarlayın.
Adres 192.168.1.130, blok boyutu 64; yani 130 ÷ 64 = 2.03… ve bu aşağı yuvarlandığında 2 olur. Geri çarpın: 2 × 64 = 128. Adres, 128’de başlayan bloğun içindedir.
Hataların çoğu burada ve hep aynı yönde olur: elinize verilen adresin kendi bloğunun başlangıcı olduğu varsayılır, oysa genellikle değildir. 192.168.1.130 bir ana bilgisayar adresidir ve o /24’ün üçüncü /26’sında yer alır.
3. adım: ağ, yayın, ilk ve son ana bilgisayar
Blok başlangıcı ağ adresidir. Yayın adresi ise blok başlangıcı artı blok boyutu eksi birdir. Tam olarak ikisinin arasında kalan her şey atanabilir:
Network 192.168.1.128
Broadcast 192.168.1.191
Usable 192.168.1.129 - 192.168.1.190
Usable 62 (of 64 total)
Netmask 255.255.255.192
Wildcard 0.0.0.63
Yayın adresi 128 + 64 − 1 = 191. İlk ana bilgisayar ağ + 1, son ana bilgisayar yayın − 1, kullanılabilir sayısı da 64 − 2 = 62. Başvuru tablosunun /26 satırıyla birebir aynı.
Kural, kendi kendinize tekrarlayabileceğiniz kadar kısa: blok boyutu 256 eksi maske oktetidir, adresi bunun katına aşağı yuvarlayın, bulduğunuz ağ adresinizdir, bir sonraki blok başlangıcı eksi bir de yayın adresinizdir.
Yöntem dördüncü oktete özgü değildir. Bir /22 için maske 255.255.252.0’dır, yani sınır okteti üçüncüdür ve oradaki blok boyutu 256 − 252 = 4 olur. Bloklar bu yüzden 10.0.0.0, 10.0.4.0, 10.0.8.0 adreslerinde başlar; 10.0.0.0/22 bloğu da 10.0.3.255 yayın adresine kadar uzanır ve kullanılabilir adresleri 10.0.0.1 ile 10.0.3.254 arasıdır, yani tek bir yayın alanında dört ardışık /24. Aynı üç adım, farklı oktet.
İşin ikilikten onluğa çevirme tarafında yavaşlıyorsanız, sayı tabanı dönüşümü rehberi çevirmenin kendisini bu yazıdan çok daha ayrıntılı ele alıyor.
İşinizi kafanızda değil bir betikte denetlemek isterseniz, Python’un standart kütüphanesi bütün bunları zaten biliyor:
import ipaddress
net = ipaddress.ip_network("192.168.1.130/26", strict=False)
print(net) # 192.168.1.128/26
print(net.network_address) # 192.168.1.128
print(net.broadcast_address) # 192.168.1.191
print(net.netmask) # 255.255.255.192
print(net.hostmask) # 0.0.0.63
print(net.num_addresses) # 64
print(len(list(net.hosts()))) # 62
Ağ adresi yerine ana bilgisayar adresi geçebilmenizi sağlayan şey strict=False; varsayılan strict=True ile aynı çağrı ValueError fırlatır.
Eksi iki kuralının doğru olmaktan çıktığı yer
Bu çıkarmanın arkasında bir gerekçe var. Sıradan bir alt ağda tümü sıfır olan ana bilgisayar deseni ağın kendisini adlandırır, tümü bir olan desen ise yönlendirilmiş yayın adresidir. İkisi de bir arayüze yapılandırılamaz; bu yüzden 2ⁿ adreslik bir blok ana bilgisayarlara 2ⁿ − 2 adres sunar. Bir /24’ün 254, bir /26’nın 62 vermesinin nedeni budur.
Aynı gerekçe kuralın sınırını da çizer: bir blok bu iki ayrılmış adresi barındıramayacak kadar küçüldüğünde onları çıkarmak anlamını yitirir.
Bir /31’in iki adresi ve iki kullanılabilir ana bilgisayarı vardır. RFC 3021, /31’i noktadan noktaya bağlantılar için tanımlar. Böyle bir bağlantının tam olarak iki ucu vardır ve paylaşılan bir segment yoktur; dolayısıyla bir yayın adresinin yapacağı iş, bir ağ adresinin tanımlayacağı şey kalmaz. İki adres de bağlantının iki ucuna gider. Burada 2ⁿ − 2 uygulamak 0 döndürür, çünkü formül böyle bir topoloji için yazılmamıştır. Şartı atlamayın: /31 yalnızca gerçekten noktadan noktaya olan arayüzlerde geçerlidir. Çok erişimli bir LAN segmenti hâlâ /30 ya da daha büyük bir blok ister ve Windows bir ağ kartında /31’i kabul etmez.
Bir /32’nin bir adresi ve bir kullanılabilir ana bilgisayarı vardır. Tek bir ana bilgisayar rotasıdır: geri döngü (loopback) arayüzleri, statik rotalar, anycast adresleri, tek adreslik güvenlik duvarı kuralları. Yayın adresi yoktur, dolayısıyla formüldeki − 2 burada −1 döndürürdü.
Python ikisinde de aynı fikirde:
import ipaddress
p2p = ipaddress.ip_network("203.0.113.4/31")
print([str(h) for h in p2p.hosts()]) # ['203.0.113.4', '203.0.113.5']
host = ipaddress.ip_network("10.0.0.1/32")
print([str(h) for h in host.hosts()]) # ['10.0.0.1']
Bunları iki istisna diye ezberlemek yerine çıkarma işleminin ne yaptığını hatırlayın: iki belirli adresi kaldırır ve kaldırmadan önce o adreslerin var olup olmadığına bakmanız gerekir. Bir /31’de ve bir /32’de yayın adresi diye bir şey yoktur, dolayısıyla hiçbir şey kaldırılmaz.
Toplam, kullanılabilir ve alt ağ sayısı üç ayrı sayıdır
Bu üçü durmadan birbirine karıştırılır; hepsi aynı önekten türeyen ikinin kuvvetleri olduğu için karışması da doğal.
- Bir /p içindeki toplam adres sayısı
2^(32 − p)kadardır. Bir /26 için: 64. - Kullanılabilir ana bilgisayar sayısı bunun 2 eksiğidir; /31 ile /32 dışında. Bir /26 için: 62.
- Bir üst /p bloğunu alt /q bloklarına bölerek elde ettiğiniz alt ağ sayısı
2^(q − p)kadardır. Bir /24’ü /26’lara bölmek iki bit ödünç alır, yani2² = 4alt ağ.
Üçü farklı sorulara yanıt verir; dolayısıyla “bir /26 size 4 verir” gibi bir cümle ancak soru bir /24’ü bölmekle ilgiliyse doğrudur. Bölme işlemi ayrıca size adrese mal olur, çünkü her alt blok kendi ağ ve yayın adresi çiftini ayırır. Bir /24’ten kesilen dört /26, üst bloğun 254 adresine karşılık 4 × 62 = 248 kullanılabilir adres taşır. Altı adres bölmenin kendisine gitmiştir.
Joker maske ile alt ağ maskesi: hangi komut hangisini ister
Joker maske, alt ağ maskesinin bit düzeyinde tersidir. Alt ağ maskesinde 1 olan yerlerde joker maskede 0 bulunur. Başvuru tablosunun /26 satırını alın: maske 255.255.255.192, joker maske 0.0.0.63. Birinin her bitini ters çevirin, diğerini elde edersiniz; ikisi bu yüzden hiçbir zaman birbirinden ayrı görünmez.
İkisi birbirine zıt anlamlarda kullanılır. Alt ağ maskesi bit düzeyinde AND ile uygulanır, dolayısıyla 1 biti “bu bit ağın parçasıdır” demektir. Joker maske ise bir eşleşme süzgecidir; 0 biti “bu bit eşleşmeli”, 1 biti ise “fark etmez” demektir. Aynı temel işlem, ters kutup. Bit düzeyindeki mekanik sizde bulanık kaldıysa, bitwise işlemler rehberi AND, OR ve NOT işlemlerini daha genel bir çerçevede ele alıyor.
Hangisini gireceğinizi siz seçmiyorsunuz, komut belirliyor. 192.168.1.128/26 bloğu için:
! wants the subnet mask
ip address 192.168.1.129 255.255.255.192
! wants the wildcard mask
access-list 10 permit 192.168.1.128 0.0.0.63
network 192.168.1.128 0.0.0.63 area 0
! Cisco ASA — wants the subnet mask, unlike IOS ACLs
access-list OUT permit ip 192.168.1.128 255.255.255.192 any
# Linux iproute2 — takes the prefix directly
ip addr add 192.168.1.129/26 dev eth0
Cisco IOS ACL’leri ve OSPF network ifadeleri joker maske alır; ASA ise onun yerine alt ağ maskesi alır. Tek bir üretici aynı ürün ailesinde iki farklı gelenek taşıyor; bu alandaki en yaygın kopyala-yapıştır hatası da buradan çıkar. Başka platformların kendi gelenekleri vardır; bu yüzden tanımadığınız bir alana değer yapıştırmadan önce o alanın ikisinden hangisini beklediğini doğrulayın.
Bu hatanın biçimi onu tehlikeli yapıyor. 255.255.255.192 değerini bir IOS ACL’ine yapıştırın, yönlendirici onu joker maske olarak okur: tümü 1 olan üç oktet “fark etmez” demektir, dolayısıyla ilk üç oktet hiç eşleştirilmez ve kural aklınızdaki bloğun çok dışına uzanır. Cihaz sözdizimi hatası vermez, günlüğe tek satır bile düşmez; geriye yalnızca kapsamı yanlış bir permit ifadesi kalır. Ters yöndeki hatanın en azından yakalanma ihtimali vardır, çünkü 0.0.0.63 geçerli bir alt ağ maskesi değildir; baştan gelen bir 1 dizisi yoktur. Bir platformun bu değeri reddedeceğini mi yoksa sessizce kabul edeceğini mi, bunu üretim ortamında öğrenmek istemezsiniz.
ACL joker maskeleri neden boşluklu olabilir de alt ağ maskeleri olamaz
Alt ağ maskesi, kesintisiz bir 1 dizisinin ardından gelen 0’lardan oluşmak zorundadır. Bu bir gelenek meselesi değil, AND işleminin çalışma biçiminin gereği: adres ancak böyle tam olarak iki parçaya ayrılır. 255.0.255.0 gibi bir değerin ortasında delik vardır, tutarlı hiçbir sınır tarif etmez ve cihazlar onu reddeder. Python da öyle:
import ipaddress
ipaddress.ip_network("10.0.0.0/255.0.255.0")
# ValueError: '10.0.0.0/255.0.255.0' does not appear to be an IPv4 or IPv6 network
Geçerli maske sayısı 33’tür: /0 ile /32 arası. Bunun dışındaki her şey yazım hatasıdır.
ACL joker maskeleri böyle bir kısıtlama altında değildir, çünkü bir adresi ağ ve ana bilgisayar kısımlarına ayırmıyorlar. Bit başına çalışan bir eşleşme süzgeci oldukları için boşluklar kurallara uygundur ve arada işe de yarar: boşluklu tek bir joker maske, örneğin bir aralıktaki tek numaralı adreslerin hepsini eşleştirebilir. İki değerin yer değiştirememesi de bu anlam farkından gelir; aynı türden nesneler değiller, yalnızca noktalı ondalık yazımda birbirlerine benziyorlar.
Özel, CGNAT ve diğer ayrılmış aralıklar
Önek bir bloğun ne kadar büyük olduğunu söyler; hangi blok olduğu ise onu kullanma hakkınızın olup olmadığını.
| Blok | Aralık | Ayıran |
|---|---|---|
| 10.0.0.0/8 | 10.0.0.0 – 10.255.255.255 | RFC 1918 özel |
| 172.16.0.0/12 | 172.16.0.0 – 172.31.255.255 | RFC 1918 özel |
| 192.168.0.0/16 | 192.168.0.0 – 192.168.255.255 | RFC 1918 özel |
| 100.64.0.0/10 | 100.64.0.0 – 100.127.255.255 | RFC 6598 operatör düzeyinde NAT |
| 169.254.0.0/16 | 169.254.0.0 – 169.254.255.255 | RFC 3927 bağlantı yerel |
| 255.255.255.255/32 | tek adres | sınırlı yayın |
RFC 1918 aralıkları genel internette asla yönlendirilmez; onlardan tahsis yapmayı güvenli kılan da bu. Diğer üçü başka nedenlerle karşınıza çıkar.
100.64.0.0/10 operatör düzeyinde NAT alanıdır. İnternet sağlayıcınız size buradan bir adres veriyorsa onların NAT’ının arkasındasınızdır ve tünel olmadan hiçbir gelen bağlantı size ulaşmaz. RFC 1918 anlamında özel alan değildir ve dahili bir planda kullanmaya hakkınız yoktur, çünkü sağlayıcınız yönlendiricinizin öbür tarafında onu zaten kullanıyor olabilir.
169.254.0.0/16 bağlantı yereldir. DHCP başarısız olduğunda bir ana bilgisayar kendine buradan bir adres verir; bu yüzden bir arayüzde 169.254 ile başlayan bir adres görmek yapılandırma değil teşhis demektir: DHCP isteğine kimse yanıt vermemiştir. Bu adrese giden trafik hiçbir zaman bir yönlendiriciden geçmez.
Belgelerdeki ve işletim kılavuzlarındaki örnekler için RFC 5737 tam da bu amaçla 192.0.2.0/24, 198.51.100.0/24 ve 203.0.113.0/24 bloklarını ayırır; kopyalanıp yapıştırılan bir örnek böylece gerçek bir ana bilgisayarı gösteremez.
172.16.0.0/12 bir tane değil, on altı /16’dır
İnsanların yanlış bildiği ayrılmış aralık budur ve sebebi önektir. Bir /12, ikinci oktetten dört bit ödünç alır; blok bu yüzden 172.16.0.0 ile 172.31.255.255 arasını kapsar, yani yalnızca 172.16.x.x değil, on altı ardışık /16.
Sonuçlar iki yönde de işler. 172.20.5.1 gibi bir adres 172.16 ile başlamasa da özeldir, aralığın rahatça içinde durur. 172.15.x.x ve 172.32.x.x ise başkasına ait genel adreslerdir; dolayısıyla 172.0.0.0/8 üzerine yazılmış bir güvenlik duvarı kuralı ya da “dahili aralığa güven” denetimi internetin koca bir dilimine sessizce güvenmiş olur.
Böyle bir sınırı doğrulamanız gerekirse aritmetiği başvuru tablosu veriyor: bir /12’de 2^(32−12) adres vardır, ikinci oktet 256 − 240 = 16 adımlarla ilerler ve 16 + 16 = 32 olduğundan blok tam olarak 172.32.0.0’ın hemen öncesinde biter.
VLSM: tek bir bloğu eşit olmayan alt ağlara bölmek
Eşit boyutlu alt ağlar kolaydır ve genellikle yanlıştır. Tek bir 192.168.1.0/24 verilmiş bir şube ofisinin birbiriyle hiç ilgisi olmayan dört segmente ihtiyacı olabilir: yüz iş istasyonu, elli telefon, bir düzine sunucu ve bir avuç yönetim arayüzü. /24’ü dört eşit /26’ya bölerseniz iş istasyonu segmenti 62 ana bilgisayarda taşar, yönetim segmenti ise on cihaza hizmet etmek için 62 adresin üstünde oturur.
Değişken Uzunluklu Alt Ağ Maskeleme (VLSM), her segmente gerçekten ihtiyaç duyduğu öneki vermek demektir. Aynı /24’ün bir /25, bir /26 ve iki /28’e bölünmüş hâli şöyle.
Büyükten küçüğe tahsis edin. Her blok kendi boyutunun bir katında başlamak zorundadır; bu yüzden ilk seçim hakkı en büyük bloğundur:
| Segment | Gereken ana bilgisayar | Önek | Ağ | Kullanılabilir aralık | Yayın | Alt ağ maskesi |
|---|---|---|---|---|---|---|
| İş istasyonları | 100 | /25 | 192.168.1.0 | 192.168.1.1 – 192.168.1.126 | 192.168.1.127 | 255.255.255.128 |
| Ses | 50 | /26 | 192.168.1.128 | 192.168.1.129 – 192.168.1.190 | 192.168.1.191 | 255.255.255.192 |
| Sunucular | 12 | /28 | 192.168.1.192 | 192.168.1.193 – 192.168.1.206 | 192.168.1.207 | 255.255.255.240 |
| Yönetim | 10 | /28 | 192.168.1.208 | 192.168.1.209 – 192.168.1.222 | 192.168.1.223 | 255.255.255.240 |
| tahsis edilmemiş | — | /27 | 192.168.1.224 | 192.168.1.225 – 192.168.1.254 | 192.168.1.255 | 255.255.255.224 |
Üç adımlı yöntemle tek tek:
- /25’in blok boyutu
256 − 128 = 128, dolayısıyla 0’da başlar ve yayın adresi0 + 128 − 1 = 127olur. Kullanılabilir 1 ile 126 arası, yani 126 adres: 100 iş istasyonuna yeter, üstüne pay da kalır. Başvuru tablosunun /25 satırı da aynı şeyi söylüyor: 128 toplam, 126 kullanılabilir. - Bir sonraki boş adres 128. /26’nın blok boyutu 64 ve 128 de 64’ün katı olduğundan oturur: ağ 192.168.1.128, yayın
128 + 64 − 1 = 191, kullanılabilir 129 ile 190 arası. 50 telefon için 62 kullanılabilir adres eder. Başvuru tablosunun /26 satırı: 64 toplam, 62 kullanılabilir. - Bir sonraki boş adres 192. /28’in blok boyutu 16 ve
192 = 16 × 12olduğundan oturur: ağ 192.168.1.192, yayın 207, kullanılabilir 193 ile 206 arası, yani 12 sunucu için 14 adres. Başvuru tablosunun /28 satırı: 16 toplam, 14 kullanılabilir. - Bir sonraki boş adres 208 ve
208 = 16 × 13olduğundan ikinci /28, 192.168.1.208’e oturur; yayın adresi 223, kullanılabilir aralık 209 ile 222 arası.
Bu, 256 adresin 128 + 64 + 16 + 16 = 224 tanesini karşılar; geriye 192.168.1.224 ile 192.168.1.255 arası kalır. O 32 adres tam olarak hizalanmış tek bir /27 eder ve noktadan noktaya bağlantılar ileride buradan çıkar: içine on altı /31 sığar, yönlendirici bağlantısı başına bir tane.
Sıralamanın ne işe yaradığı, tersini denediğinizde ortaya çıkıyor. Diyelim ki en küçükleri önce yerleştirdiniz ve iki /28 en başa oturdu: 192.168.1.0/28 ve 192.168.1.16/28. Bir sonraki boş adres 192.168.1.32 olur, ama bir /25’in 128’in katında başlaması gerektiği için orada başlayamaz. İleri atlayıp 192.168.1.128’den başlamak zorundadır. 32 ile 127 arasındaki adresler kaybolmaz, ancak yalnızca daha küçük hizalı parçalar hâlinde kullanılabilir: 192.168.1.32’de bir /27 ve 192.168.1.64’te bir /26. Artan alan böylece en üstte tek bir bitişik blok olarak durmak yerine dağılır. İsteğe bir segment daha ekleyin, aynı manevra artık hiç sığmaz.
Boyuta göre sıralamak bunu önler. Bir bloğu yerleştirdikten sonra bir sonraki boş adres o bloğun boyutunun katıdır; ikinin daha büyük bir kuvvetinin katı da kendiliğinden daha küçük her kuvvetin katıdır. Dolayısıyla sonraki her küçük blok, bir öncekinin bittiği yerde hizalıdır. Hiç atlamak zorunda kalmazsınız. Böyle bir planı bir anahtara işlemeden önce alt ağ hesaplayıcı bölme tablosundan geçirmek, her segmentin hizasını elle denetlemekten hızlıdır.
Üretime kadar hayatta kalan beş hata
1. Yazdığınız adresi ağ adresi saymak
Belirti: bir güvenlik duvarı kuralı hiçbir şeyi eşleştirmez ya da bir rota segmentin yanlış yarısını kapsar.
Neden: 192.168.1.130/26 ağı 192.168.1.0, yayın adresi 192.168.1.255 diye okunmuştur; yani /24 sınırı, çünkü onluk tabanda insanların gördüğü sınır odur.
Çözüm: 2. adımı uygulayın. Blok boyutu 64, 130 ÷ 64 aşağı yuvarlandığında 2, dolayısıyla ağ 2 × 64 = 128. Blok 192.168.1.128 ile 192.168.1.191 arasıdır ve 192.168.1.0 bambaşka bir alt ağdır. Bir önek /24’ten uzun olduğu her durumda, maskelemeden önce elinizdeki adresi ana bilgisayar adresi sayın.
2. Bir /31’e 2ⁿ − 2 uygulamak
Belirti: bir IPAM aracı ya da hesap tablosu, ayakta olan ve trafik taşıyan bir noktadan noktaya bağlantı için 0 kullanılabilir ana bilgisayar bildirir. Neden: eksi iki kuralı, çıkarılacak bir ağ ve bir yayın adresinin var olduğunu varsayar. Bir /31’de ikisi de yoktur. Çözüm: /31 ile /32’yi anormallik değil, formülün sınır koşulları olarak görün. RFC 3021 bir /31’in iki adresini de atanabilir kılar; bir /32 ise tek adresli bir ana bilgisayar rotasıdır. 0 ya da −1 bildiren her şey formülü tanım kümesinin dışında uygulamıştır. Önce ilgili arayüzde /31 desteğini kontrol edin, çünkü istisna yalnızca gerçekten noktadan noktaya olan bağlantılarda geçerlidir.
3. 172.16.0.0/12 aralığını yalnızca 172.16.x.x sanmak
Belirti: dahili bir servise bir ofisten erişilemez ya da “tüm özel aralıkları engelle” kuralı sızdırır. Neden: /12, sanki bir /16’ymış gibi okunmuştur. Çözüm: aralık 172.16.0.0 ile 172.31.255.255 arasıdır. ACL’leri ve allowlist’leri bir oktet desenine göre değil 172.16.0.0/12 önekine göre yazın ve 172.15.x.x ile 172.32.x.x adreslerinin bunun dışında, genel internette durduğunu unutmayın. Elle eşleştiriyorsanız sınır okteti ikinci oktettir ve 16’şar adım atar.
4. Alt ağ maskesi isteyen bir alana joker maske yapıştırmak
Belirti: bir ACL amaçlanandan çok daha fazlasına ya da çok daha azına izin verir ve yapılandırmada hiçbir şey yanlış görünmez. Neden: IOS ACL’leri ve OSPF network ifadeleri joker maske alırken ASA alt ağ maskesi alır; 0.0.0.63 ile 255.255.255.192 de bir bakışta birbirinin yerine geçebilecek kadar benzer görünür. Çözüm: alanı yapıştırdıktan sonra değil, önce kontrol edin. İşe yarar bir ipucu: /8 ve daha uzun her önekte alt ağ maskesi 255 ile, joker maske 0 ile başlar. Bir ACL’de ya da bir OSPF network ifadesinde duran bir değer 255 ile başlıyorsa, joker maske alanına konmuş bir alt ağ maskesidir.
5. Bitişik olmayan bir maske yazmak ya da kazara üretmek
Belirti: bir cihaz yapılandırma satırını reddeder ya da kendi yazdığınız bir betik makul görünen ama yanlış maskeler üretir. Neden: 255.0.255.0 gibi bir değer geçerli bir alt ağ maskesi değildir; ortasında delik vardır. Betikteki biçimi daha sinsidir: JavaScript’te kaydırma operatörleri sağ işlenenini 32’ye göre mod alır, dolayısıyla aralık dışındaki bir önek hata fırlatmak yerine sessizce makul görünen yanlış bir maske üretir (33 değeri /1, −1 değeri /31 olur). Çözüm: kaydırmadan önce önek aralığını doğrulayın ve kesintisiz bir 1 dizisinin ardından 0’lar gelmeyen her maskeyi reddedin. Burada hatalı girdide hata fırlatan bir kütüphane, tahmin yürütene tercih edilir, çünkü iki hata biçimi de sessizdir.
SSS
Alt ağ ile VLAN arasındaki fark nedir?
VLAN, anahtarlarda yapılandırılan bir katman 2 yayın alanıdır; alt ağ ise bir katman 3 adres aralığıdır. Genellikle bire bir eşlenirler, ama bunu zorunlu kılan hiçbir şey yoktur: tek bir VLAN’a iki alt ağ koyabilir ya da tek bir VLAN’ı sahalar arasında trunk edebilirsiniz. Alt ağı yeniden numaralandırdığınızda VLAN kimliği değişmez.
Bir /24’ü /26’lara bölersem kaç alt ağ elde ederim?
Dört. Sayı, ödünç alınan bit sayısı kadar 2’nin kuvvetidir; /26 da /24’ten iki bit uzun olduğundan her biri 64 adreslik 2² = 4 alt ağ çıkar. Her alt blok kendi ağ ve yayın adresini ayırır; dolayısıyla dört /26, üst /24’ün 254 adresine karşılık 248 kullanılabilir adres taşır.
CIDR gösterimi IPv6’da da aynı şekilde çalışır mı?
Eğik çizgi yine baştaki ağ bitlerini sayar; /64, 128 bitin 64’ünün ağ biti olduğu anlamına gelir. Taşınmayan şey eksi iki kuralıdır: IPv6’da yayın adresi yoktur, dolayısıyla toplamdan hiçbir şey çıkarılmaz. Yukarıdaki başvuru tablosu da onun arkasındaki hesaplayıcı da yalnızca IPv4 içindir.
0.0.0.0/0 ne anlama gelir?
Sıfır ağ biti, yani her IPv4 adresini eşleştirir. Bir yönlendirme tablosunda varsayılan rotadır ve daha belirli hiçbir önek eşleşmediğinde kullanılır. Bağlanma adresi olarak “tüm arayüzler” demektir; 0.0.0.0 üzerinde dinleyen bir servise makinenin bağlı olduğu her ağdan erişilebilmesi de bundandır.
Aynı ağdaki iki alt ağ çakışırsa ne olur?
Yönlendirme her zaman en uzun eşleşen öneki tercih ettiği için yönlendiriciler daha belirli rotayı seçer; çakışmanın içindeki ana bilgisayarlar ise hangi hedeflerin yerel olduğu konusunda anlaşamaz. Belirti hep kısmi kalır: bazı hedefler çalışır, bazıları çalışmaz ve hangilerinin çalıştığı nereden test ettiğinize göre değişir.
A, B ve C sınıfı adreslerin yerini neden CIDR aldı?
Çünkü sınıflar yalnızca üç boyut sunuyordu: /8, /16 ve /24. 300 adrese ihtiyacı olan bir kurum ya bir B sınıfı alıp çoğunu israf etmek ya da iki C sınıfı rota işletmek zorundaydı. CIDR önekin herhangi bir uzunlukta olmasına izin verdi; bu da adres tükenmesini yavaşlattı ve sağlayıcıların birçok müşteri bloğunu tek bir rotada özetlemesini mümkün kıldı.
192.168.0.0/16 gibi özel bir aralığı istediğim gibi alt ağlara bölebilir miyim?
Evet. RFC 1918 alanını istediğiniz önek uzunluğunda bölebilirsiniz ve ağınızın dışındaki kimse bunu görmez. Kısıt dışarıdan değil içeriden gelir: bir iş ortağının ağıyla ya da sonradan eşleyeceğiniz bir bulut VPC’siyle çakışmayı geri almak pahalıya patlar; adres planları bu yüzden her ev yönlendiricisinin zaten kullandığı bloklardan kaçınma eğilimindedir.
Aklınızda kalması gerekenler. Önek ağ bitlerini sayar ve blok boyutu 256 − sınır maske okteti işlemidir. Ağ adresi için adresi blok boyutunun katına aşağı yuvarlayın, yayın adresi için blok boyutu eksi bir ekleyin. Ayrılmış çift için iki çıkarın, ama yalnızca bir /31 ya da /32 çıkarma nedenini zaten ortadan kaldırmamışsa. Joker maske ile alt ağ maskesini biçimlerinden ayırt edin. Büyük blokları küçüklerden önce tahsis edin.
Bunların hiçbiri elinize yattıktan sonra araç gerektirmez; zaten elle çalışmanın amacı da bu. Bir planı yönlendiriciye ulaşmadan önce denetlemek ya da bir bloğun ikilik sınırını bir bakışta okumak içinse alt ağ hesaplayıcı aritmetiği tarayıcınızda yerel olarak yapar.