Ana içeriğe geç

Bölüm 29: Sanal Yerel Ağlar

9 dakikalık okumaGüncelleme:

Ağlar'a “Sen”i Katmak kitabının bir bölümü: adres çubuğuna yazdığın tek bir isteğin peşinden bakırla fiberin fiziğine inip karşı taraftan geri dönen uzun bir teknik yolculuk.

Kısım 4: Makineden Yerel Ağa (Bölüm 18-29)

Tüm bölümler
  1. Giriş
  2. Adres Çubuğundan İsteğe
  3. Paket Anahtarlamalı Yol
  4. İsimden Adrese
  5. DNS Kayıtları
  6. Önbellek, Tazelik ve Güven
  7. Port Numarası ve Soket
  8. Bağlantısız Taşıma: UDP
  9. Üç Adımlı El Sıkışma
  10. Simetrik Şifreleme
  11. Açık Anahtarlı Kriptografi
  12. TLS El Sıkışması
  13. Sertifika Zinciri
  14. HTTP Mesajının Anatomisi
  15. Durum, Çerez ve Oturum
  16. HTTP/2'den HTTP/3'e
  17. İçerik Dağıtım Ağları
  18. Diğer Uygulama Protokolleri
  19. Katmanlı Mimari
  20. Hizmet ve Protokol
  21. Encapsulation ve Başlıklar
  22. Paket Yakalama ve Çözümleme
  23. Ağ Interface Kartı
  24. Fiziksel Adresleme
  25. Hata Sezme ve CRC
  26. Adres Çözümleme: ARP
  27. Ortam Erişimi: CSMA/CD
  28. Switch'ler
  29. Ağ Topolojileri
  30. Sanal Yerel Ağlar
  31. Kablosuz Erişim: 802.11
  32. Radyo Kanalı ve Kapasite
  33. Kablosuz Ağ Güvenliği
  34. Hücresel Ağlar
  35. Spektrum ve Kuşaklar
  36. Hareketlilik ve Aktarma
  37. Adres Kiralama: DHCP
  38. Adresin Anatomisi
  39. Adres Tükenmesi ve IPv6
  40. Router Mimarisi
  41. Kuyruk Yönetimi
  42. Cihaz Yapılandırma
  43. Routing Protokolleri
  44. Kontrol Düzlemi ve SDN
  45. Ağ İzleme ve Yönetimi
  46. Alanlar Arası Routing
  47. Adres Çevirisi
  48. Ara Kutular
  49. Tünelleme ve IPsec
  50. Firewall'lar
  51. Ağ Saldırıları
  52. Operatör ve Metro Ağları
  53. Bitten Sinyale
  54. Sembol Hızı ve Kanal Kapasitesi
  55. Multiplexing Teknikleri
  56. İletim Ortamları
  57. Bakır Kablo Sonlandırma
  58. Fiber Sonlandırma
  59. Fiber Optik İletim
  60. Bakır Erişim Ağı: DSL
  61. DSL'de Hız ve Mesafe
  62. Pasif Optik Ağlar
  63. Kablo Erişim Ağları
  64. Kablo Modem ve CMTS
  65. Denizaltı Kabloları
  66. Veri Merkezi Ağları
  67. Encapsulation Çözme
  68. Güvenilir Aktarım
  69. Tıkanıklık Denetimi
  70. Trafik Çözümleme
  71. Gecikme Bütçesi
  72. Soket Programlama
  73. Eşten Eşe ve Protokol Tasarımı
  74. Uyarlanır Video Akışı
  75. Gerçek Zamanlı Ses ve Görüntü
  76. Kablosuz Sensör Ağlarının Mimarisi
  77. Sensör Ağlarında Ortam Erişimi
  78. Sensör Ağlarında Yönlendirme ve IP
  79. Zaman Eşitleme ve Konum Bulma
  80. Sensör Ağı Uygulamaları
  81. Mobil Kablosuz Sensör Ağları
  82. Son Söz

Structured cabling’in (yapısal kablolamanın) yıldız düzeninde her priz kat dolabındaki switch’e bağlanıyordu. Geriye bir soru kalıyor: aynı switch’e takılı iki bilgisayar aynı ağda olmak zorunda mı?

Zorunda değil. Tek bir switch, birbirini hiç görmeyen ağları aynı anda taşıyabiliyor. Peki bunu neyle yapıyor?

Aynı kutuda kaç ağ var?

ARP isteği, broadcast domain’deki bütün komşuların kartını tek tek uyandırıyordu. Broadcast yalnızca ARP değil. DHCP de, hedefi henüz öğrenilmemiş her frame de aynı yolu izliyor. Hepsi LAN’ın tamamını dolaşıyor, bant genişliğini yiyor ve herkese herkesin trafiğini duyuruyor.

Sanal yerel ağ (virtual LAN, kısaca VLAN), yöneticinin çizdiği bir port kümesi ve o kümenin dışına taşmayan bir broadcast domain. Sınır tek bir kutunun içinde de durabiliyor, birkaç switch’e de yayılabiliyor. Çizgiyi donanım çekmiyor; switch’in frame’i hangi porta ileteceğine karar veren yazılım çekiyor. Kutunun içine bakarsan ikiye bölünmüş bir şey göremezsin.

Port tabanlı ayrımda interface’leri gruplara bölen kişi ağ yöneticisi oluyor ve her grup bir VLAN sayılıyor. Sonuç trafik yalıtımı: bir gruptaki porttan çıkan frame yalnızca aynı gruptaki portlara ulaşıyor. Yirmi dört portlu bir switch’i ikiye bölmek, onu iki bağımsız on iki portlu switch’e ayırmakla aynı sonucu veriyor. Öğrenilen adresler de ayrılıyor. Bir VLAN’da görülen MAC, öbürünün tablosuna hiç yazılmıyor.

Grubu belirleyen ölçüt coğrafya olmaktan çıkıyor. Bir port, üstündeki makinenin hangi ekibe ya da hangi uygulamaya hizmet ettiğine göre VLAN’a giriyor. Eskiden bunun tek yolu makineleri aynı kat dolabına toplamaktı. Şimdi bir çalışan ekip değiştirdiğinde kablolamaya dokunulmuyor; üçüncü katman adresi bile aynı kalıyor. Değişen tek şey, portun hangi VLAN’a ait olduğu.

Ölçek tarafında da kazanç var. Altı küçük grubun her birine ayrı bir switch almak yerine kırk sekiz portlu tek bir kutu hepsini alabiliyor. VLAN’sız o kutu yalıtım vermez.

Yönetici her portu bir VLAN’a bildiriyor ve switch’in içinde bir port-VLAN eşleme tablosu birikiyor. Bildirilmemiş portlar varsayılan VLAN’a düşüyor; çoğu cihazda bu VLAN 1. Orası ölü bir alan değil. Switch fabrika ayarında kendi yönetim adresini ve komşularıyla konuştuğu keşif trafiğini orada tutuyor. Yani boş bıraktığın port, çalışan bir ağın ucunda açık duruyor.

Üyelik illa porta bağlı da değil. Statik üyelikte portu VLAN’a katan yönetici; dinamik üyelikte kararı switch veriyor. Takılan makinenin MAC adresine, mantıksal adresine ya da konuştuğu protokole bakıyor. MAC tabanlı üyelikte cihaz hangi porta takılırsa takılsın kendi VLAN’ına düşüyor.

portVLANne takılı
1-810muhasebe masaüstleri
9-1630laboratuvar makineleri
24trunküst kattaki switch

Bu tabloda muhasebe masası laboratuvar makinesini hiç görmüyor. Aynı kutuya takılı olmaları bir şey değiştirmiyor.

İki switch’i nasıl bağlarsın?

Ağ tek kutuda bitmiyor. İki switch’te de aynı VLAN’lar varsa, aralarına VLAN başına bir kablo çekmek işe yarıyor. Ama ölçeklenmiyor. N tane VLAN, yalnızca iki switch’i birbirine bağlamak için her switch’te N port yiyor.

Ölçeklenen çözümün adı trunk portu. İki switch’te birer port trunk olarak ayarlanıyor ve aralarına tek bir hat çekiliyor. Trunk’ta VLAN ayrımı yok; hangi VLAN’ın frame’i olursa olsun o tek hattan geçiyor. İki VLAN’lı bir kurulumda kablo sayısı ikiden bire iniyor: %50 tasarruf.

Uç cihazın takıldığı, tek bir VLAN’a ait ve etiketsiz çalışan porta access port (erişim portu) deniyor. İkisi arasındaki fark frame’in üstünde görünüyor.

Trunk’tan geçen frame sıradan bir Ethernet frame’i olamaz. Üstünde hangi VLAN’a ait olduğu yazmak zorunda. Switch, frame’i hatta vermeden önce ona küçük bir alan basıyor; karşı uçtaki switch o alanı okuyup söküyor. Etiketi ekleyen de söken de switch. Uç cihaz onu hiç görmüyor. Bu işin standart adı IEEE 802.1Q. Trunk’ta bir VLAN’ın frame’leri istisna olarak etiketsiz taşınıyor; o VLAN’a yerel VLAN (native VLAN) deniyor ve fabrika ayarında o da çoğu zaman VLAN 1.

802.1Q 1998’de yayımlandı ve VLAN’ı üreticiden bağımsız hâle getirdi. Ondan önce etiketleme üreticiye özel yollarla yapılıyordu ve ortama göre ayrışmıştı: Fast Ethernet’te ISL, FDDI’da 802.10, ATM’de LAN Emulation. ISL veriyi kapsülleyip başına 26 baytlık bir başlık, sonuna 4 baytlık bir CRC ekliyordu. 30 bayt ek yük, 802.1Q etiketinin yedi buçuk katı.

VLAN listesinin kendisi de switch’ler arasında dolaşabiliyor; Cisco’nun VTP’si bunu yapıyor. Bir kutuyu sunucu kipine alıp listeyi orada tutuyorsun; aynı yönetim alanındaki diğerleri listeyi ondan çekiyor. Kolaylık, ama bütün ağı tek noktadan bozma yetkisi de aynı yerde.

Trunk kararının kendisi de pazarlığa açık. Bir portun trunk olup olmayacağı beş kipten biriyle ayarlanıyor ve otomatik kipteki bir port, karşı taraf istekliyse kendiliğinden trunk’a dönüşüyor. Sızma testi kitaplarının VLAN atlama saldırısı (VLAN hopping) dediği şey buradan besleniyor: saldırgan kendini komşu bir switch gibi tanıtan bir pazarlık mesajı yolluyor, takılı olduğu access port’u trunk’a çevirtiyor, sonra istediği VLAN kimliğini kendi frame’ine yazıp o broadcast domain’in içine düşüyor. Saldırının ikinci türü frame’e iki etiketi üst üste koyuyor: ilk switch yerel VLAN’ın etiketini söküp frame’i trunk’a etiketsiz veriyor, bir sonraki switch de alttaki ikinci etiketi okuyup frame’i hedef VLAN’a teslim ediyor.

Saldırı iki ihmalin üstünde yürüyor: portun pazarlığa açık bırakılması ve yerel VLAN’ın fabrika ayarında dokunulmadan durması. İkisini de kapatmak zor değil. Kullanılmayan bir port ya elektriksel olarak kapatılır ya da hiçbir yere çıkmayan tek bir VLAN’a sabitlenip pazarlık dışı bırakılır.

DerinleşmePortu baştan kapalı saymak neyi değiştirir?

Varsayılan VLAN’ın kolaylığı ortada: switch’i kutusundan çıkarıp takıyorsun ve hiçbir ayar yapmadan çalışıyor. Bedeli, hiç ayarlanmamış bir portun da aynı sebeple çalışıyor olması. Açıkları tek tek kapatmak da kalıcı bir çözüm değil, çünkü her yeni port unutulabilecek yeni bir ayar demek.

IEEE 802.1X varsayımı tersine çeviriyor. Port baştan kapalı sayılıyor; kabloyu takan cihaz kimliğini kanıtlayana kadar oradan yalnızca kimlik denetimi trafiği geçiyor. Kimliği soran taraf switch’in kendisi, kararı veren arkadaki kimlik doğrulama sunucusu, kanıtı sunan da istemci. Kanıt kabul edilirse port normal trafiğe açılıyor, edilmezse kapalı kalıyor.

Standardın kendisi kimliğin nasıl kanıtlanacağını söylemiyor. 802.1X yalnızca EAP yöntemlerini taşıyan bir frame tanımlıyor ve tanımlanmış yaklaşık 40 yöntem var; parolayı, sertifikayı ya da SIM kartını seçmek ağın sahibine kalıyor. Bir güvenlik standardının kimlik denetimini standartlaştırmak yerine onun taşınacağı yolu standartlaştırması, ilk bakışta eksiklik gibi duruyor. Ağların birbirine hiç benzemediği düşünülünce tasarımın asıl sağlam tarafı orası. Aynı düzeni 32. bölümde kurumsal Wi-Fi’ın içinde yeniden göreceksin.

Dört bayt nereye giriyor?

Etiket 4 bayt ve frame’in başına girmiyor. İki adres alanının ardından, tür alanının önüne sokuluyor. Encapsulation’da her başlık kendi yükünün önüne ekleniyordu. 802.1Q bu düzeni bozuyor.

hedef MAC      6 bayt
kaynak MAC     6 bayt
--- 802.1Q etiketi, 4 bayt --------------------------------
TPID           2 bayt   sabit 0x8100
TCI            2 bayt   3 bit öncelik + 1 bit + 12 bit kimlik
-----------------------------------------------------------
tür alanı      2 bayt
veri          46-1500 bayt
FCS            4 bayt   etiketten sonra yeniden hesaplanır

İlk iki bayta etiket protokol tanımlayıcı deniyor ve değeri hep aynı kalıyor: onaltılık 8100. Bu değeri gören alıcı, elindeki frame’in etiketli olduğunu anlıyor.

Wireshark ekranında etiketli bir frame: paket ayrıntı bölmesinde 802.1Q alanları vurgulu, TPID değeri 8100 ve VLAN kimliği 100 okunuyor. Metinde bayt bayt sayılan dört baytlık etiketin gerçek bir yakalamadaki karşılığı.

Sonraki iki bayt etiket denetim bilgisi. O 16 bitin 12 biti VLAN kimliği, 3 biti öncelik; kalan 1 bit (DEI) tıkanma anında önce atılabilecek frame’i işaretliyor. On iki bitlik alan 4.096 farklı değer ayırt ediyor. Kullanılabilir numara sayısı 4.094, çünkü iki değer ayrılmış: 0 “yalnızca öncelik taşıyorum” demek, 4.095 ise kullanılmıyor. Cisco’nun eski cihazlarında normal aralık 1 ile 1005 arasındaydı ve 1002-1005 de FDDI ile Token Ring mirasına ayrılmıştı. O sınır standardın değil, cihazın sınırıydı.

Öncelik bitleri 802.1p’nin hizmet sınıfı bitleri: üç bit, sekiz düzey, sıfırdan yediye. IP başlığındaki hizmet türü alanının bu kattaki karşılığı sayılabilir. Bir portta öncelik açıksa, tıkanma anında önce yüksek öncelikle işaretlenmemiş frame’ler düşürülüyor.

Etiket eklendikten sonra frame’in sonundaki FCS yeniden hesaplanıyor; sebebi CRC’nin frame’in tamamını kapsaması. Boy da değişiyor: etiketsiz azami frame önsöz hariç 1.518 bayt, etiketli 1.522 bayt. Veri alanı ise sabit: 46 ile 1.500 bayt arası.

1.522 bayt standarda IEEE 802.3ac ekiyle 1998’de girdi. 2006’daki 802.3as eki, bütün etiketleme biçimleri için sınırı 2.000 bayta çekti; zarf frame azami boya 482 bayt daha ekliyor.

Etiketin asıl bedeli en küçük frame’de görünüyor; dört baytın küçük frame’de neden ağır bastığını 24. bölümde FCS’nin payını hesaplarken görmüştün.

Etiketli bir frame, etiket bilmeyen bir istasyona düşerse ne oluyor? O istasyon başlıkta tanımadığı bir tür değeri buluyor ve frame’i sessizce düşürüyor. Böyle bir frame’in oraya varması da pek olmuyor, çünkü etiketi yalnızca bunun için ayarlanmış cihazlar basıyor.

Switch’in MAC öğrenme tablosunu doldurması ve döngüyü kesen spanning tree tanıdık. Klasik spanning tree bütün VLAN’lar için tek bir ağaç kuruyor ve bazı VLAN’ların trafiğini gereksiz yere uzun yollara itiyor. Çoklu spanning tree (MSTP) 802.1s ekiyle 2003’te tanımlandı, 802.1Q’nun 2005 baskısına girdi ve VLAN gruplarına ayrı ağaçlar kurabiliyor; her bölge 64’e kadar ayrı örnek çalıştırabiliyor.

İki VLAN nasıl konuşur?

Ayırmak kolay oldu. Ayırdıklarını tekrar konuşturmak üçüncü katmana çıkmayı gerektiriyor. Ayrı broadcast domain, ayrı IP alt ağı demek. Muhasebe 192.0.2.0/24 olsun, laboratuvar 198.51.100.0/24. Aradaki her datagramın, iki alt ağı da tanıyan bir cihaza uğraması gerekiyor. Sanki ortada bağlantısız iki switch var.

Router’da her VLAN için ayrı bir fiziksel interface tutmak pahalı. Tek interface’in üstünde alt interface açılıyor; her birine ayrı bir alt ağ ve ayrı bir VLAN numarası veriliyor. Böylece tek bir kablo, kaç VLAN varsa o kadar mantıksal bacak taşıyor.

Router frame’i alıyor, etiketi söküp hangi alt ağa ait olduğunu buluyor, kararını verdikten sonra hedef VLAN’ın etiketini takıp aynı porttan geri yolluyor. Sahada bu düzene, tek bir kabloya asılı router anlamında router on a stick deniyor.

Üreticiler ikisini tek kutuda da birleştiriyor ve o kutunun bir adı var: 3. katman switch. Dışarıdan sıradan bir switch gibi duruyor, portları da öyle; farkı, VLAN’lar arası kararı kendi içinde verip trafiği hiç dışarı çıkarmaması. Router’dan ayrıldığı yer ise interface çeşitliliği: 3. katman switch Ethernet portlarıyla ve kendi bacakları arasında çalışır, farklı türden hatları birbirine bağlamak hâlâ router’ın işidir.

Bunu kendi makinende de görebilirsin. Linux’ta bir interface’in üstüne etiketli bir alt interface eklemek üç satır sürüyor.

ip link add link eth0 name eth0.10 type vlan id 10
ip addr add 192.0.2.10/24 dev eth0.10
ip -d link show eth0.10

Son komutun çıktısında vlan protocol 802.1Q id 10 satırını görüyorsun. O interface’ten çıkan her frame artık etiketli.

Özet

  • Sanal yerel ağ bir port kümesidir: switch’in iletim yazılımı, aynı kutunun içinde birbirini görmeyen broadcast domain’ler kurar.
  • Etiket dört bayttır: iki bayt sabit tanımlayıcı, iki bayt da kimlik ile önceliği taşıyan denetim alanıdır.
  • Trunk tek hattır: bütün VLAN’lar aynı kablodan geçer, etiketi ise yalnızca iki uçtaki switch’ler görür.
  • 3. katman switch ikisini tek kutuda toplar: VLAN’lar arası kararı kendi içinde verir, ama farklı türden hatları bağlamak hâlâ router’ın işidir.
  • VLAN’lar arası geçiş routing’dir: ayrı alt ağlar ancak üçüncü katmana çıkıp geri dönerek konuşabilir.
  • Boş port boş değildir: hiçbir VLAN’a bildirilmemiş bir interface, switch’in yönetim trafiğini taşıyan varsayılan VLAN’da bekler.

Aynı kabloda birden çok ağ taşımayı çözdük; ayrımı dört baytlık bir etiket ile switch’in iletim kararı yapıyor. Kablosuz bağlıysan ortada kablo yok; frame o boşlukta nasıl gidiyor?

30. bölüme devam et: Kablosuz Erişim: 802.11