DEV Community

Hasan Ozer
Hasan Ozer

Posted on Fully Autonomous

Subnet Hesaplama ve Ağ Tasarımı: Temelden Pratiğe

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

şeklinde doğrudan internet erişimi bulunurken:

Private subnet
        ↓
NAT Gateway
        ↓
Internet
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Her octet 8 bittir:

8 + 8 + 8 + 8 = 32 bit
Enter fullscreen mode Exit fullscreen mode

Bu nedenle IPv4 adreslerinin toplam uzunluğu 32 bittir.

Örneğin:

192
Enter fullscreen mode Exit fullscreen mode

binary olarak:

11000000
Enter fullscreen mode Exit fullscreen mode

ş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⁰
Enter fullscreen mode Exit fullscreen mode

Hepsi 1 olduğunda:

11111111
Enter fullscreen mode Exit fullscreen mode

değeri:

128 + 64 + 32 + 16 + 8 + 4 + 2 + 1
= 255
Enter fullscreen mode Exit fullscreen mode

olur.

Bu nedenle bir IPv4 octet'i:

0 - 255
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

için:

24 bit → network
8 bit  → host
Enter fullscreen mode Exit fullscreen mode

çünkü:

32 - 24 = 8
Enter fullscreen mode Exit fullscreen mode

host biti kalmıştır.

Subnet mask binary olarak:

11111111.11111111.11111111.00000000
Enter fullscreen mode Exit fullscreen mode

decimal olarak:

255.255.255.0
Enter fullscreen mode Exit fullscreen mode

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ı)
Enter fullscreen mode Exit fullscreen mode

Örneğin /24:

32 - 24 = 8 host biti

2^8 = 256 adres
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

olur.

Dolayısıyla:

/24
Toplam adres     = 256
Kullanılabilir   = 254
Enter fullscreen mode Exit fullscreen mode

Örneğin /22

32 - 22 = 10 host biti
Enter fullscreen mode Exit fullscreen mode

Dolayısıyla:

2^10 = 1024
Enter fullscreen mode Exit fullscreen mode

toplam IP adresi bulunur.

Geleneksel host subnetinde:

1024 - 2 = 1022
Enter fullscreen mode Exit fullscreen mode

kullanılabilir host adresi vardır.

Subnet mask:

11111111.11111111.11111100.00000000
Enter fullscreen mode Exit fullscreen mode

olur.

Decimal karşılığı:

255.255.252.0
Enter fullscreen mode Exit fullscreen mode

yani:

/22 = 255.255.252.0
Enter fullscreen mode Exit fullscreen mode

3. Gerçek İhtiyaca Göre Subnet Tasarlamak

Şimdi elimizde şu IP adres bloğunun bulunduğunu düşünelim:

192.168.0.0/16
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

512 adres yeterli değildir.

Bir sonraki seçenek /22:

32 - 22 = 10

2^10 = 1024
Enter fullscreen mode Exit fullscreen mode

Geleneksel kullanımda:

1024 - 2 = 1022 kullanılabilir adres
Enter fullscreen mode Exit fullscreen mode

bulunur.

Dolayısıyla:

Employees → /22
Enter fullscreen mode Exit fullscreen mode

300 IoT cihazı için

/24:

2^8 = 256
Enter fullscreen mode Exit fullscreen mode

yeterli değildir.

/23:

2^9 = 512
Enter fullscreen mode Exit fullscreen mode

yeterlidir.

Dolayısıyla:

IoT → /23
Enter fullscreen mode Exit fullscreen mode

120 yönetim cihazı için

/25:

32 - 25 = 7

2^7 = 128
Enter fullscreen mode Exit fullscreen mode

Geleneksel kullanımda:

128 - 2 = 126
Enter fullscreen mode Exit fullscreen mode

kullanılabilir IP verir.

Dolayısıyla:

Management → /25
Enter fullscreen mode Exit fullscreen mode

50 yazıcı için

/26:

32 - 26 = 6

2^6 = 64
Enter fullscreen mode Exit fullscreen mode

Geleneksel kullanımda:

64 - 2 = 62
Enter fullscreen mode Exit fullscreen mode

kullanılabilir IP verir.

Dolayısıyla:

Printers → /26
Enter fullscreen mode Exit fullscreen mode

Elimizde artık şu ihtiyaç vardır:

Employees     /22
IoT           /23
Management    /25
Printers      /26
Enter fullscreen mode Exit fullscreen mode

4. Subnetleri CIDR Bloğu İçerisine Yerleştirmek

Şimdi bu subnetleri parent network'ümüz olan:

192.168.0.0/16
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Değişimin gerçekleştiği octet üçüncü octet'tir.

Block size formülü:

256 - subnet mask değeri
Enter fullscreen mode Exit fullscreen mode

Dolayısıyla:

256 - 252 = 4
Enter fullscreen mode Exit fullscreen mode

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
...
Enter fullscreen mode Exit fullscreen mode

İlk /22 subneti çalışanlara verirsek:

Employees
192.168.0.0/22
Enter fullscreen mode Exit fullscreen mode

adres aralığı:

192.168.0.0
-
192.168.3.255
Enter fullscreen mode Exit fullscreen mode

olur.

Sonraki boş adres:

192.168.4.0
Enter fullscreen mode Exit fullscreen mode

/23 subneti yerleştirmek

/23 subnet mask:

255.255.254.0
Enter fullscreen mode Exit fullscreen mode

Block size:

256 - 254 = 2
Enter fullscreen mode Exit fullscreen mode

Yani üçüncü octet 2'şer ilerler.

IoT subnetini:

192.168.4.0/23
Enter fullscreen mode Exit fullscreen mode

olarak verebiliriz.

Adres aralığı:

192.168.4.0
-
192.168.5.255
Enter fullscreen mode Exit fullscreen mode

Sonraki boş adres:

192.168.6.0
Enter fullscreen mode Exit fullscreen mode

/25 subneti yerleştirmek

Management için:

192.168.6.0/25
Enter fullscreen mode Exit fullscreen mode

kullanabiliriz.

Adres aralığı:

192.168.6.0
-
192.168.6.127
Enter fullscreen mode Exit fullscreen mode

Sonraki boş adres:

192.168.6.128
Enter fullscreen mode Exit fullscreen mode

/26 subneti yerleştirmek

Printers için:

192.168.6.128/26
Enter fullscreen mode Exit fullscreen mode

kullanabiliriz.

Adres aralığı:

192.168.6.128
-
192.168.6.191
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Bu IP'nin network adresini bulmak istiyoruz.

/23 subnet mask:

255.255.254.0
Enter fullscreen mode Exit fullscreen mode

Binary olarak:

11111111.11111111.11111110.00000000
Enter fullscreen mode Exit fullscreen mode

IP adresinin üçüncü octet'i:

5
Enter fullscreen mode Exit fullscreen mode

binary olarak:

00000101
Enter fullscreen mode Exit fullscreen mode

Subnet maskin üçüncü octet'i:

254
Enter fullscreen mode Exit fullscreen mode

binary olarak:

11111110
Enter fullscreen mode Exit fullscreen mode

IP adresi ile subnet mask arasında bitwise AND işlemi yaparız:

00000101
11111110
--------
00000100
Enter fullscreen mode Exit fullscreen mode

00000100 decimal olarak:

4
Enter fullscreen mode Exit fullscreen mode

eder.

Dolayısıyla network address:

192.168.4.0
Enter fullscreen mode Exit fullscreen mode

ve subnet:

192.168.4.0/23
Enter fullscreen mode Exit fullscreen mode

olur.

Yani:

192.168.5.100/23
Enter fullscreen mode Exit fullscreen mode

adresi:

192.168.4.0/23
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

Örneğin:

/22

32 - 22 = 10 host biti
Enter fullscreen mode Exit fullscreen mode

Toplam adres sayısı

2^(host bit sayısı)
Enter fullscreen mode Exit fullscreen mode

Örneğin:

2^10 = 1024
Enter fullscreen mode Exit fullscreen mode

Geleneksel kullanılabilir host sayısı

2^(host bit sayısı) - 2
Enter fullscreen mode Exit fullscreen mode

Örneğin:

1024 - 2 = 1022
Enter fullscreen mode Exit fullscreen mode

-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
Enter fullscreen mode Exit fullscreen mode

hesabı yapılabilir.

Örneğin /22:

255.255.252.0

256 - 252 = 4
Enter fullscreen mode Exit fullscreen mode

Dolayısıyla subnetler:

0
4
8
12
16
...
Enter fullscreen mode Exit fullscreen mode

şeklinde ilerler.

/23 için:

255.255.254.0

256 - 254 = 2
Enter fullscreen mode Exit fullscreen mode

Subnetler:

0
2
4
6
8
...
Enter fullscreen mode Exit fullscreen mode

ş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?
Enter fullscreen mode Exit fullscreen mode

Ö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
Enter fullscreen mode Exit fullscreen mode

Sonuç:

192.168.0.0/22
Enter fullscreen mode Exit fullscreen mode

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.