Python, CGN IP ve Soket Programlama

Herkese selamlar. Python ile soket alanında bir uygulama geliştirmeye çalışıyorum lakin ipv4 kıtlığı ve ipv6’ya bir türlü geçemediğimizden kullanılan cgn ipler nedeniyle port kullanımı, kontrolü sağlayamıyorum.

Yurtdışı lokasyonlu debian işletim sistemli basit bir vps sunucum var, onu istemcilerin değişen - sabit olmayan ip adreslerinin tutulması, programımın açık olduğu cihazlarda mümkün olursa her veriyi sunucuya taşımadan iki cihaz arasında veri transferi gerçekleştirmek istiyorum lakin cgn ip nedeniyle bütün portlarım kapalı olduğu için nasıl hızı düşürmeden dışarı veri çıkışı ve alışı gerçekleştirebilirim, bunun için tavsiye edebileceğiniz kütüphane, metot, mantık önerilerinizi bekliyorum.

Stackoverflow gibi platformlardan biraz araştırma yaptım lakin bu durum için ingilizcem de kısıtlı olduğu için sağlıklı bir bilgi edinemedim.

Ekleme: İhtiyacım olan şey yanlış anlamadıysam HTTP Tünelleme, bu konuda açık kaynak ve servis hizmetlerini araştırdıktan sonra olumlu bir sonuç elde edebilirsem konuya ekleme yapacağım.

CGNAT’larin turune gore STUN kullanilarak iki cihaz arasinda dogrudan baglanti kurulabilir. Mumkun olmadigi durumlarda her veriyi tasiyan bir relay gerekcektir, ve bunu kullanan TURN gibi bir protokol.

Hali hazirda nasil implementasyonlari var bilmiyorum. Belki torrent gibi bir protokolun kutuphanesi is gorebilir.

Genelde bu problemi bir alt seviyede cozmek daha kolay. Tinc, ZeroTier veya Tailscale gibi p2p baglanti kurabilen bir VPN tavsiye ederim. Tinc ozellikle digerlerinden daha zor sartlar altinda p2p baglanti kurabiliyor ama kurulumu vakit aliyor.

HTTP tunellemeyi bilmiyorum ama relay olarak basit bir proxy kullanmak gibi duruyor. Iki taraftan biri public IP:port ciftine sahip degilse calisacagini zannetmiyorum.

Bu arada VPS ayni makinada farkli musterilerin farkli kullanici altinda calistigi kurulum muydu? Neyse, ne oldugu onemli degil; public bir IP:port cifti alinabiliyorsa connectivity (baglanti isleri) icin kullanilabilir.

Daha fazla tavsiye lazimsa uygulama ve gerektirdigi veri akisi hakkinda daha cok bilgi almamiz lazim.

1 Beğeni

İlginiz ve bilgi paylaşımınız için öncelikle çok teşekkür ederim. VPS evet aynı serverde sanallaştırma ile birden fazla müşterinin kurulum, kullanım sağladığı uygun - ekonomik servis türü. Şuan tünelleme ve bahsettiğiniz STUN, relay yapılarını ekstra kullanma durumunda kalmadan sadece sunucuda ufw aracılığı ile portu açıp evimdeki CGN IP’li internetten public ip’ye sahip sunucum ile iletişim sağlayabildim ve şaşkın bir durumdayım açıkçası.

Python Socket Programlama Dersi - Detaylı Örnek Şu local örneği bu kadar kolay bir şekilde CGN IP’li bağlantımdan nasıl başarılı deneyebildim kavrayabilmiş değilim :expressionless:

Su anda Yazbel’in web sunucusuyla iletismektesiniz, internette ikinci bir sunucuya baglanabilmeniz niye bu kadar sasirtti ki?

Bahsettiginiz sey bir cihazin sunucuya erismesi,

bundan hala cok uzak.

Neyse, baska okuyanlara yardimci olur belki mesajim.

1 Beğeni

Haklısınız, kusura bakmayın bir an için şuan gerçekleştirdiğim şekilde iki client’inde aynı şekilde kolay, sorunsuz iletişim - veri gönderebileceğini düşündüm. Sunucu Public IP’ye sahip olduğu için başlangıç aşamasında bir sorun yaşamadığımı fark etmemişim.

Şuan pystun3’ü yükleyip çalıştırdığımda bilgisayarımda Restrict NAT çıktısını verdi, büyük ihtimal benim gibi diğer CGN IP kullanıcılarında da aynı çıktıyı verecektir. ( Şuan yeniden yaptığımda Full Cone şeklinde çıktı veriyor :smile:)

İlginiz ve tecrübe - bilgi paylaşımınız için çok teşekkür ederim, şuan NAT yapısı arkasında dediğiniz şeyleri araştırarak denemeler gerçekleştiriyorum, istediğim de bu şekilde ne kullanmam - araştırmam gerektiğiydi çok teşekkürler. :pray:

Rica ederim.

Aplikasyon seviyesinde nasil cozumler var -dedigim gibi- bilmiyorum; bu problemler genelde network seviyesinde (VPN ile) cozuluyor, veya protokol baska sekilde tasarlaniyor. Sirf isimlendirmenizden (“iki client”, “sunucu”) merkezi bir baglanti sisteminin (yildiz topolojisinin) kullanilmasinin uygun olabilecegini dusunuyorum.

Ote yandan STUN kullanan aplikasyon gormek de ilginc olur. Steam bile relay kullanmayi tercih ediyor ama nasil calistigini bilmedigim bir P2P destegi de var.

Restricted NAT’tan disari cikis saglandiktan sonra NAT tablosuna entry (izin) eklenecegi icin full cone gibi gozukmesi cok normal. Entry’nin suresinin dolmasini (silinmesini) beklerseniz tekrar restricted gozukecektir.

Yalniz ben CGNAT arkasinda olmadigim halde ayni seyi gosteriyor, butun portlari pystun3 calistiran bilgisayara forward’lasam bile (“DMZ”). Tabi NAT arkasinda oldugum dogru; WAN subnet’imle aramda ADSL modem var.

1 Beğeni