9.7. Özel ağlar ve NAT¶
IPv4, o zamanlar yeterli görünen dört milyar adresle tasarlanmıştı. Ama yeterli değil. İnternete bağlı her ev, ofis ve fabrika kendi iç cihazları için kendi adres bloğuna ihtiyaç duyar ve dünya çapındaki kameraları, telefonları ve cihazları eklediğinizde herkese yetecek dört milyar adres kalmaz.
İnternetin benimsediği çözüm özel ağlar oldu: yerel bir ağdaki cihazların çoğu, küresel olarak değil yalnızca o ağın içinde benzersiz olan adresler kullanır ve kenardaki tek bir cihaz iki dünya arasında çeviri yapar. Kamera, neredeyse her zaman, bu özel ağlardan birinde bulunur.
9.7.1. Özel adres aralıkları¶
Üç IPv4 aralığı genel internette yönlendirilemez olarak ayrılmıştır. Herhangi bir yerel ağ, kimseyle koordinasyona gerek kalmadan bu aralıkların içindeki adresleri serbestçe kullanabilir, çünkü yerel ağın dışındaki hiçbir yönlendirici onlara teslimat yapmaya çalışmaz:
10.0.0.0–10.255.255.255(16 milyon adres; daha büyük kurumsal ağlarda yaygın).172.16.0.0–172.31.255.255(yaklaşık bir milyon adres; pratikte daha az yaygın).192.168.0.0–192.168.255.255(65 bin adres; neredeyse her ev yönlendiricisi için varsayılan).
Tipik bir ev ağında, kamera ve onunla konuşan dizüstü bilgisayar her ikisi de 192.168.x.x adreslerinde bulunur, çünkü bu, ev yönlendiricisinin barındırdığı ağ için seçtiği aralıktır.
9.7.1.1. Ağ maskesi nasıl kullanılır¶
IP adresleri sayfası /24 gösterimini tanıttı. Burada önemli olmasının nedeni, ağ maskesinin her cihazın bir paketin sonraki hedefini belirlemek için kullandığı şey olmasıdır. Kamera bir paket gönderdiğinde, kendi ağ maskesini hedef adrese uygular ve sonuca bakar:
Hedef, kameranın kendi adresiyle ağ bitlerini paylaşıyorsa, hedef aynı yerel ağdadır. Kamera paketi doğrudan ona gönderir.
Hedef ağ bitlerini paylaşmıyorsa, başka bir ağda olmalıdır. Kamera paketi varsayılan ağ geçidine (bağlantı kurulurken otomatik olarak yapılandırılan yönlendirici) gönderir ve gerisini ağ geçidinin halletmesine izin verir.
Bu tek test – “ağ bitlerini paylaşıyor muyuz?” – ağ maskesinin amacıdır. Ayrıca ev ağlarının neden varsayılan olarak /24 kullandığının da nedenidir: 254 cihazlık bir sınır bir haneye rahatça uyar ve ağı basit tutar.
9.7.2. Ağ Adresi Çevirisi¶
192.168.1.50 adresindeki bir kamera, genel internetteki bir sunucuya öylece paket gönderemez – genel internet 192.168.x.x adreslerine yönlendirme yapmaz. Ev yönlendiricisi bunu Ağ Adresi Çevirisi veya NAT ile çözer ve bunu şeffaf bir şekilde yapar.
NAT, giden paketlerin kaynak adresini yönlendiricinin genel adresiyle yeniden yazar ve gelen yanıtlarda bu yeniden yazmayı tersine çevirir, böylece özel cihazlar tek bir genel adresi paylaşıyormuş gibi görünür.¶
Yönlendiricinin iki adresi vardır: yerel ağda özel bir adres (genellikle 192.168.1.1) ve internet sağlayıcısı tarafından atanan genel bir adres. Kamera bir genel adrese paket gönderdiğinde, yönlendirici
kameranın özel adresini + portunu kaydeder ve bunu kendi geçici bir giden portuyla eşleştirir;
paketteki kaynak adresini kendi genel adresiyle (ve kaynak portu seçilen giden portla) yeniden yazar;
yeniden yazılan paketi genel taraftan dışarı gönderir.
Yanıt, yönlendiricinin genel adresi + portuna adreslenmiş olarak geri geldiğinde, yönlendirici eşleşmeyi arar, hedefi tekrar kameranın özel adresine + portuna yeniden yazar ve yerel tarafta teslim eder. Kamera yeniden yazmanın gerçekleştiğini hiç bilmez; sunucu ise orijinal kaynağı hiç bilmez.
NAT, ev ağlarını pratik hale getiren şeydir. Ayrıca bilinmesi gereken iki sonucu vardır.
9.7.3. NAT neyi değiştirir¶
Giden trafik kolaydır. Özel bir ağdaki bir kamera serbestçe dışarıya konuşabilir. Uzak bir sunucuya bir TCP bağlantısı açtığında veya bir UDP paketi gönderdiğinde, NAT eşleşmeyi otomatik olarak kurar. Çoğu kamera uygulaması bu yönde çalışır: bir görüntü yakalayın, onu bir yerdeki sunucuya gönderin, yanıtı alın.
Gelen trafik zordur. Genel internetteki bir cihaz, özel bir ağdaki bir kameraya doğrudan bağlanamaz. İstenmeyen bir paket yönlendiricinin genel adresine ulaştığında onun arayabileceği bir eşleşme yoktur, dolayısıyla paketin gidecek hiçbir yeri yoktur. Yönlendirici ya onu düşürür ya da yönlendiricinin kendisinde çalışan bir hizmete teslim eder.
Gelen durumu için, kabaca artan pratiklik sırasına göre üç çözüm yaygındır:
Port yönlendirme. Yönlendiriciyi, seçilen bir genel porttaki tüm gelen paketleri belirli bir özel cihaza yönlendirecek şekilde yapılandırın. Yönlendiriciye yönetici erişimi gerektirir; yönlendiricinin genel adresi değiştiğinde kırılgandır.
VPN. Kamerayı, ona ulaşması gereken kişiyle aynı mantıksal ağa koyan bir sanal özel ağ çalıştırın. Ağır bir çözümdür; çoğu kamera dağıtımının kapsamı dışındadır.
Giden tarafından başlatılan bağlantı. Kamera, genel internetteki bilinen bir sunucuya dışarı bağlanır ve o bağlantıyı açık tutar; sunucu mevcut bağlantıyı kullanarak mesajları geri gönderir. Anlık bildirimler ve çoğu buluta bağlı cihaz protokolü bu şekilde çalışır ve çoğu kamera uygulamasının sonunda kullandığı kalıp budur.
NAT, kameradaki Python koduna görünmezdir. Betik yalnızca ihtiyaç duyduğu hedefle konuşur; yönlendirici çeviriyi perde arkasında halleder. Ancak bağlantının yönü önemlidir ve NAT, “kameranın bir bulut sunucusuna ulaşmasının”, “bir bulut sunucusunun kameraya ulaşmasından” çok daha kolay bir biçim olmasının nedenidir.