Özellikle DNS / uygulama katmanı protokolleri arasındaki TCP / IP protokol yığını katmanları arasındaki bilgilerin nasıl aktığına dair düşünceleriniz karışıyor.
Bir tane genel IP adresiniz var. DNS kesinlikle hem çözebilirsiniz mail.example.com
ve example.com
aynı genel IP adresine.
Genel olarak, güvenlik duvarınızın harici arabirimi tarafından alınacak genel IP adresinize yönelik istekleri içeren IP datagramları, uzak istemcinin erişmeye çalıştığı ana bilgisayarın adını içermez. Her iki ana makine adı da aynı IP adresine çözümlendiğinden, güvenlik duvarınız uzak istemcinin hangi ana bilgisayar adını çözdüğünü sihirli bir şekilde "bilemez". IP katmanı, uygulama katmanında kullanılan ana bilgisayar adının farkında değildir.
TCP ve UDP protokolleri, bir ana bilgisayar tarafından sunulan belirli hizmetleri bağlantı noktası numaralarını kullanarak farklılaştırır. Örneğinizde, gelen TCP bağlantı noktası gönderilirken web sunucusuna gelen TCP bağlantı noktasına 80 (HTTP) gelen istekleri göndermek için NAT güvenlik duvarınızın bağlantı noktası yönlendirme (bağlantı noktası adresi çevirisi veya PAT olarak da adlandırılır) özelliğini kullanmak mümkün olabilir 25 (SMTP) e-posta sunucunuza.
Ancak, aynı hizmeti her iki makinede de barındırmayı planlıyorsanız, bu strateji sorunlu hale gelir. Hem web sunucunuzda (Müşteri erişimi için) hem de e-posta sunucunuzda (web postası için) güvenli bir web sitesi barındıracağınızı varsayalım. NAT güvenlik duvarınızın genel IP adresine 443 numaralı TCP bağlantı noktasına (HTTPS) gelen istekler yalnızca bir sunucuya veya diğerine yönlendirilebilir.
Bu duruma yönelik genel çözüm, daha fazla genel IP adresine sahip olmaktır. Çünkü IPv4 adresleri kıt hale geliyor ve bu da sorunlu olabilir.
Sonunda , uygulama katmanındaki bazı protokollerde genel IP adreslerinin azlığı etrafında çalıştık . Örneğin, HTTP / 1.1 Host:
özellikle bir web sunucusunun aynı genel IP adresinde birden çok web sitesi barındırmasına izin vermek için başlığı ekledi . TLS , uzak istemci tarafından girilen ana bilgisayar adına göre uygun sertifikanın seçilmesine izin vermek için Sunucu Adı Gösterimi (SNI) uzantısını ekler .
Uygulama katmanında bu tür bir geçici çözüm yapılması, her uygulama katmanı protokolünün kendi "düzeltmesine" (ve ardından tüm sunucu ve istemci yazılımlarının bu "düzeltmeyi" uygulamak zorunda kalacağı anlamına gelir). Bu uzun bir emirdir.
Uygulama katmanı protokolünü değiştirmek yerine, bazı protokoller, istekleri "yönlendirebilen" yazılımlar kullanarak birden çok ana bilgisayar arasında "çoğullamaya" uygundur. Bu, muhtemelen uygulama paketinde paketlerin denetlenmesi gerektiğinden basit bir NAT güvenlik duvarının yapabileceğinin ötesine geçer. Nginx gibi bir ters proxy kullanmak , HTTP protokolü için bu tür bir "çoklama" (veya Forefront TMG veya Microsoft ortamında ISA Server üzerinde Web yayınlama kuralları ) için iyi bir örnektir . Teoride, herhangi bir protokol ters bir proxy aracılığıyla çoğullanabilir, ancak protokol ne kadar ezoterik olursa, özel kodun yazılması hakkında daha fazla konuşmanız daha olasıdır.
Aynı hizmeti tek bir ortak IP adresinde iki farklı ana bilgisayardan sunmanız gerektiğinde, ana bilgisayarlardan birini standart olmayan bir bağlantı noktasına taşıma seçeneğiniz vardır. Ancak bu, istemcilerin standart olmayan bağlantı noktasından haberdar olmalarını gerektirir. HTTP (S) durumunda bu, http://example.com:XXX
gösterimle URL'lerle sonuçlanır ( XXX
standart olmayan bağlantı noktası numarasıdır). Durumunuzda bunun sorunlu olup olmayacağı sadece sizin karar verebileceğiniz bir şeydir. (Deneyimlerim, neredeyse hiçbir son kullanıcının :XXX
elle girmek zorunda oldukları URL'lerde bağlantı noktası gösterimini kaldıramadığını göstermiştir.)