Subnetting ilk bakışta IP adreslerini bölmek için yapılan matematiksel bir işlem gibi görünebilir. Ancak pratikte subnet hesabının amacı yalnızca bir CIDR ifadesinden kaç IP çıktığını bulmak değildir.
Asıl amaç, elimizdeki IP adres bloğunu ağdaki farklı ihtiyaçlara göre mantıklı parçalara ayırmaktır.
Örneğin elimizde şu CIDR bloğu olsun:
192.168.0.0/16
Bu ağı çalışanlar, yönetim cihazları, yazıcılar ve IoT cihazları gibi farklı gruplara ayırmak istiyorsak subnetting kullanabiliriz.
Bu yazıda subnetting'in neden kullanıldığını, CIDR hesabının nasıl yapıldığını ve gerçek bir ağ tasarımında subnetlerin nasıl planlandığını adım adım ele alacağız.
1. Subnet Ağ Tasarımında Ne İşe Yarar?
Bir ağı subnetlere bölmenin temel amacı cihazları mantıksal olarak birbirinden ayırmaktır.
Örneğin bir şirkette şu cihaz grupları bulunabilir:
- Çalışan bilgisayarları
- Yönetim bilgisayarları
- Yazıcılar
- IoT cihazları
- Sunucular
Teknik olarak bunların tamamını büyük bir IP ağı içerisinde çalıştırmak mümkün olabilir.
Fakat bu durumda ağın kontrol edilmesi ve güvenliğinin sağlanması zorlaşır.
Subnetler sayesinde örneğin şöyle bir yapı oluşturabiliriz:
Employees → 192.168.0.0/22
IoT → 192.168.4.0/23
Management → 192.168.6.0/25
Printers → 192.168.6.128/26
Bu grupların birbirleriyle nasıl iletişim kuracağını router veya firewall üzerinde belirleyebiliriz.
Örneğin:
Employees → Printers ALLOW
Employees → Management DENY
IoT → Management DENY
Management → All ALLOW
Böylece subnetting yalnızca IP adreslerini bölmek için değil, ağın güvenlik ve erişim sınırlarını oluşturmak için de kullanılır.
Subnet ile VLAN aynı şey değildir
Subnet Layer 3 seviyesinde IP ağını ifade eder.
VLAN ise Layer 2 seviyesinde cihazları birbirinden ayırır.
Pratik ağlarda genellikle ikisi birlikte kullanılır:
VLAN 10 → Employees → 192.168.0.0/22
VLAN 20 → IoT → 192.168.4.0/23
VLAN 30 → Management → 192.168.6.0/25
Yani VLAN fiziksel veya Layer 2 broadcast domain'ini ayırırken subnet IP seviyesindeki adres alanını tanımlar.
Public ve private subnet ne demektir?
Bir subnetin /24, /22 veya başka bir CIDR'a sahip olması onu tek başına public veya private yapmaz.
Örneğin cloud ortamlarında genellikle:
Public subnet
↓
Internet Gateway
↓
Internet
şeklinde doğrudan internet erişimi bulunurken:
Private subnet
↓
NAT Gateway
↓
Internet
gibi bir yapı kullanılabilir.
Dolayısıyla public/private ayrımı CIDR hesabından çok routing tasarımıyla ilgilidir.
2. Subnet Hesabının Temeli: IPv4 ve CIDR
Subnet hesabını anlayabilmek için önce IPv4 adresinin nasıl oluştuğunu anlamamız gerekir.
IPv4 neden 32 bittir?
Bir IPv4 adresi dört octet'ten oluşur:
192.168.1.10
Her octet 8 bittir:
8 + 8 + 8 + 8 = 32 bit
Bu nedenle IPv4 adreslerinin toplam uzunluğu 32 bittir.
Örneğin:
192
binary olarak:
11000000
şeklinde gösterilir.
Bir octet içindeki bitlerin değerleri şöyledir:
128 64 32 16 8 4 2 1
2⁷ 2⁶ 2⁵ 2⁴ 2³ 2² 2¹ 2⁰
Hepsi 1 olduğunda:
11111111
değeri:
128 + 64 + 32 + 16 + 8 + 4 + 2 + 1
= 255
olur.
Bu nedenle bir IPv4 octet'i:
0 - 255
arasında değer alabilir.
CIDR nedir?
CIDR ifadesindeki / sonrasındaki sayı, IP adresinin kaç bitinin network kısmına ait olduğunu belirtir.
Örneğin:
192.168.1.0/24
için:
24 bit → network
8 bit → host
çünkü:
32 - 24 = 8
host biti kalmıştır.
Subnet mask binary olarak:
11111111.11111111.11111111.00000000
decimal olarak:
255.255.255.0
olur.
Kaç IP adresi olduğunu nasıl buluruz?
Host bitlerinin sayısını biliyorsak toplam adres sayısını şu formülle bulabiliriz:
2^(host bit sayısı)
Örneğin /24:
32 - 24 = 8 host biti
2^8 = 256 adres
Geleneksel bir IPv4 subnetinde ilk adres network address, son adres broadcast address olarak ayrıldığı için kullanılabilir host sayısı:
256 - 2 = 254
olur.
Dolayısıyla:
/24
Toplam adres = 256
Kullanılabilir = 254
Örneğin /22
32 - 22 = 10 host biti
Dolayısıyla:
2^10 = 1024
toplam IP adresi bulunur.
Geleneksel host subnetinde:
1024 - 2 = 1022
kullanılabilir host adresi vardır.
Subnet mask:
11111111.11111111.11111100.00000000
olur.
Decimal karşılığı:
255.255.252.0
yani:
/22 = 255.255.252.0
3. Gerçek İhtiyaca Göre Subnet Tasarlamak
Şimdi elimizde şu IP adres bloğunun bulunduğunu düşünelim:
192.168.0.0/16
Ve ağımızdaki ihtiyaçlarımız şöyle olsun:
| Grup | Gerekli host |
|---|---|
| Employees | 700 |
| IoT | 300 |
| Management | 120 |
| Printers | 50 |
Her gruba rastgele /24 vermek yerine ihtiyacımız olan host sayısına göre CIDR belirleyebiliriz.
Bu yönteme VLSM — Variable Length Subnet Masking denir.
700 çalışan için
En az 700 kullanılabilir IP adresine ihtiyacımız var.
/23:
32 - 23 = 9
2^9 = 512
512 adres yeterli değildir.
Bir sonraki seçenek /22:
32 - 22 = 10
2^10 = 1024
Geleneksel kullanımda:
1024 - 2 = 1022 kullanılabilir adres
bulunur.
Dolayısıyla:
Employees → /22
300 IoT cihazı için
/24:
2^8 = 256
yeterli değildir.
/23:
2^9 = 512
yeterlidir.
Dolayısıyla:
IoT → /23
120 yönetim cihazı için
/25:
32 - 25 = 7
2^7 = 128
Geleneksel kullanımda:
128 - 2 = 126
kullanılabilir IP verir.
Dolayısıyla:
Management → /25
50 yazıcı için
/26:
32 - 26 = 6
2^6 = 64
Geleneksel kullanımda:
64 - 2 = 62
kullanılabilir IP verir.
Dolayısıyla:
Printers → /26
Elimizde artık şu ihtiyaç vardır:
Employees /22
IoT /23
Management /25
Printers /26
4. Subnetleri CIDR Bloğu İçerisine Yerleştirmek
Şimdi bu subnetleri parent network'ümüz olan:
192.168.0.0/16
içerisine yerleştirebiliriz.
Genellikle en büyük subnetten başlayarak ilerlemek işleri kolaylaştırır.
/22 subnetin sınırını bulmak
/22 subnet mask:
255.255.252.0
Değişimin gerçekleştiği octet üçüncü octet'tir.
Block size formülü:
256 - subnet mask değeri
Dolayısıyla:
256 - 252 = 4
Subnetler üçüncü octet'te 4'er ilerler:
192.168.0.0/22
192.168.4.0/22
192.168.8.0/22
192.168.12.0/22
...
İlk /22 subneti çalışanlara verirsek:
Employees
192.168.0.0/22
adres aralığı:
192.168.0.0
-
192.168.3.255
olur.
Sonraki boş adres:
192.168.4.0
/23 subneti yerleştirmek
/23 subnet mask:
255.255.254.0
Block size:
256 - 254 = 2
Yani üçüncü octet 2'şer ilerler.
IoT subnetini:
192.168.4.0/23
olarak verebiliriz.
Adres aralığı:
192.168.4.0
-
192.168.5.255
Sonraki boş adres:
192.168.6.0
/25 subneti yerleştirmek
Management için:
192.168.6.0/25
kullanabiliriz.
Adres aralığı:
192.168.6.0
-
192.168.6.127
Sonraki boş adres:
192.168.6.128
/26 subneti yerleştirmek
Printers için:
192.168.6.128/26
kullanabiliriz.
Adres aralığı:
192.168.6.128
-
192.168.6.191
Sonuçta ağ tasarımımız:
| Grup | Subnet | Adres sayısı | Kullanılabilir host |
|---|---|---|---|
| Employees | 192.168.0.0/22 |
1024 | 1022 |
| IoT | 192.168.4.0/23 |
512 | 510 |
| Management | 192.168.6.0/25 |
128 | 126 |
| Printers | 192.168.6.128/26 |
64 | 62 |
şeklinde olur.
5. Bir IP'nin Hangi Subnette Olduğunu Hesaplamak
Şimdi elimizde şu IP olduğunu düşünelim:
192.168.5.100/23
Bu IP'nin network adresini bulmak istiyoruz.
/23 subnet mask:
255.255.254.0
Binary olarak:
11111111.11111111.11111110.00000000
IP adresinin üçüncü octet'i:
5
binary olarak:
00000101
Subnet maskin üçüncü octet'i:
254
binary olarak:
11111110
IP adresi ile subnet mask arasında bitwise AND işlemi yaparız:
00000101
11111110
--------
00000100
00000100 decimal olarak:
4
eder.
Dolayısıyla network address:
192.168.4.0
ve subnet:
192.168.4.0/23
olur.
Yani:
192.168.5.100/23
adresi:
192.168.4.0/23
subnetinin içerisindedir.
6. Ezberlemek Yerine Hesaplamak
Subnet tablolarını tamamen ezberlemek zorunda değiliz.
Temelde birkaç ilişkiyi bilmek yeterlidir.
Host bit sayısı
32 - CIDR
Örneğin:
/22
32 - 22 = 10 host biti
Toplam adres sayısı
2^(host bit sayısı)
Örneğin:
2^10 = 1024
Geleneksel kullanılabilir host sayısı
2^(host bit sayısı) - 2
Örneğin:
1024 - 2 = 1022
-2 kuralının /31 ve /32 gibi özel kullanım durumlarında geçerli olmadığını da unutmamak gerekir.
Block size
Subnet sınırlarını bulmak için maskenin değiştiği octet'te:
256 - subnet mask
hesabı yapılabilir.
Örneğin /22:
255.255.252.0
256 - 252 = 4
Dolayısıyla subnetler:
0
4
8
12
16
...
şeklinde ilerler.
/23 için:
255.255.254.0
256 - 254 = 2
Subnetler:
0
2
4
6
8
...
şeklinde ilerler.
Bu mantığı anladığımızda /22 veya /23 tablolarını ezberlemeye gerek kalmaz.
7. Büyük Resim
Subnetting'i yalnızca binary sayıların çevrilmesi olarak düşünmek konuyu gereksiz yere soyutlaştırabilir.
Gerçek süreç aslında şöyledir:
Kaç cihazım var?
↓
Kaç IP adresine ihtiyacım var?
↓
Kaç host biti gerekiyor?
↓
Hangi CIDR bunu karşılıyor?
↓
Subnet sınırı nerede?
↓
CIDR bloğum içerisinde nereye yerleştireceğim?
↓
Bu ağlar arasında hangi trafik geçebilecek?
Örneğin:
700 host
↓
En az 700 adres gerekiyor
↓
2^9 = 512 → yetmez
2^10 = 1024 → yeter
↓
10 host biti
↓
32 - 10 = /22
↓
255.255.252.0
↓
block size = 4
Sonuç:
192.168.0.0/22
Bu yüzden subnetting'in özü /22 veya /24 değerlerini ezberlemek değil; ihtiyaç duyulan host sayısından başlayıp doğru CIDR'ı ve doğru network sınırını hesaplayabilmektir.
Bu mantık oturduğunda VPC tasarımı, Kubernetes networkleri, VLAN tasarımları, firewall kuralları ve cloud network mimarileri gibi konular da çok daha anlaşılır hale gelir.
Top comments (1)
Some comments may only be visible to logged-in visitors. Sign in to view all comments.