Birçok uygulama bağlantısı neden tek bir OpenVPN oturumunu paylaşır
Tek bir dış UDP konuşması, rotaların içine gönderdiği her iç akışı taşır. İç portlar ve protokoller korunur; yalnızca dış demet sabit kalır.
Bir tarayıcının HTTPS sayfası yüklediğini, bir SSH istemcisinin başka bir sunucuya ulaştığını ve bir çözümleyicinin bir sorguyu yanıtladığını düşünün; hepsi tek bir OpenVPN oturumu üzerinden. Fiziksel arayüzde bir konuşma görürsünüz; tünelin içinde üç görürsünüz. İki görüş de doğrudur ve nedenini bilmek, yararlı bir yakalama ile kafa karıştıran bir yakalama arasındaki farktır. Bir iç akışı soketten kabloya kadar izleyin, katmanlama artık soyut olmaktan çıkar.
Tek dış konuşma, birçok iç akış
Her uygulama kendi soketini açar ve çekirdek ona beş elemanlı bir demet verir: kaynak adresi, kaynak portu, hedef adresi, hedef portu ve protokol. Bu demetler herhangi bir tünel işin içine girmeden önce vardır. Ardından yönlendirme, hepsinin tünel aygıtından çıktığına karar verir, böylece OpenVPN'a verilen paket orijinal başlıkları hâlâ içinde taşır. OpenVPN bu iç paketi şifreler ve sonucu eşle tek bir dış UDP veya TCP konuşmasına sarar. Yani dış konuşma birdir, içindeki akışlar ise uygulamaların açtığı kadardır.
Hiçbir şey çökmez. İç demetler uçtan uca korunur ve bu yüzden uzak taraf üç akışı hâlâ ayırt edebilir.
Sabit kalan port
Sabit kalan dış demettir: adresiniz, istemcinin bağladığı yerel port, eşin adresi ve yapılandırılmış hizmet portu. Yoldaki bir güvenlik duvarının veya NAT'nin izin vermesi gereken bu demettir ve yukarı bağlantıdaki bir yakalamanın göstereceği de budur. Yeniden bağlanma veya ağ değişiminden sonra değişen de budur, çünkü istemci başka bir yerel port bağlayabilir. Bir tünel, sonsuza kadar tek bir sabit kaynak portu anlamına gelmez.
Uç noktaları ilgilendiren iç portlardır. Bir HTTPS akışı, dış taşıma operatörün yapılandırdığı portta otursa bile tünelin içinde hedef portu 443'ü korur. Uygulamanın uç noktaları dış portu asla öğrenmez.
Uzak uçta kapsül çözmenin değiştirdiği şey
Eşte dış katman çıkarılır ve geriye iç paket kalır. Oradan itibaren yönlendirme ve erişim politikası iç hedefe ve protokole uygulanır. Web sunucusu hâlâ bir HTTPS bağlantısı alır, SSH servisi hâlâ SSH alır ve çözümleyici hâlâ bir sorgu alır.
Bu yüzden dış taşımaya izin veren kural, iç hizmete izin vermekle aynı kural değildir. İlki bir yolu tanımlar; ikincisi bir yetkilendirmeyi.
Dış TCP tek akış demektir, tek bağlantı değil
Dış taşıma UDP olduğunda her iç akışın kaderi bağımsızdır: kaybolan bir veri gramı, kendi yeniden iletimine kadar tek bir aktarımı etkiler. Dış taşıma TCP olduğunda tüm iç akışlar tek bir güvenilir bayt akışını paylaşır.
Paylaşılan bu akış insanların gözden kaçırdığı kısımdır. Kurtarma her şey için bir kez olur, bu yüzden tek bir kayıp segment içeride çoğullanmış her uygulamanın trafiğini geciktirir. Uç noktalarda hâlâ çok sayıda bağlantı, kabloda ise tek bağlantı vardır ve sıra başı etkisi tam da kabloda yaşar. Dinleyen portların sayısı bunun hakkında hiçbir şey söylemez, bu yüzden port saymak tünel başarımı hakkında akıl yürütmenin kötü bir yoludur.
Kendi kurulumunuzu doğru anlatın
Makinenin her şeyi tek bir porttan gönderdiğini söylemek yerine, seçilen iç trafiği ve onu taşıyan belirli dış taşımayı adlandırın. Yerel hizmetler, ikinci bir tünel ve diğer adres ailesi, bu konuşmaya hiç girmeyen akışlar oluşturur. Yukarı bağlantıdaki yakalama dış demeti gösterir; tünelin içindeki yakalama içtekileri gösterir.
İkisini de alın ve zaman damgalarını yan yana koyun. Hangi uygulamanın hangi iç akışı ürettiğini kanıtlamanız gerekiyorsa, ana bilgisayardaki soket tablosu daha iyi bir araçtır, çünkü portları doğrudan süreçlerle eşler. Ardından gözlemlediğiniz dış demeti ve gözlemlediğiniz anı yazın, çünkü yeniden bağlanmadan sonraki yakalama meşru olarak başka sayılar gösterebilir.