Dünyadaki yetersiz IPv4 adresi sayısından dolayı internet servis sağlayıcıları IPv4 kullanan birçok kullanıcıyı aynı ip adresi üzerinden internete çıkarıyor. CGNat (Carrier Grade NAT) birden fazla internet kullanıcısının aynı ip adresi ile internet ortamına çıkmasını sağlayan teknolojidir. Gelişmiş ülkelerde bu soruna çözüm olarak kullanıcılara birçok kişi tarafından kullanılan IPv4 adreslerinin yanı sıra miktarı konusunda sorun olmayan, kullanıcının kendisine özgü IPv6 adresleri verilmektedir, tüm servisler IPv6 desteklemese bile yıllar içinde IPv6'nın yaygınlaşmasıyla bu sorun aşılma noktasına gelmiştir. IPv6'ya geçiş yapılmayan bazı ülkelerde ise İSS'ler kullanıcılara IPv6 sağlamamakla birlikte, CGNat havuzunda olmayan gerçek bir dinamik ip talep etmeleri üzerine isteklerini reddetmekte ve port açmalarının tek yolunun fahiş fiyata sattıkları statik ip adresi satın almaktan geçtiğini söylemektedir. Türkiye'de Turknet IPv6 denemelerine başlamış durumda. Ülkelere göre IPv6 kullanımı: https://www.google.com/intl/en/ipv6/statistics.html#tab=per-country-ipv6-adoption Bu konuda statik ip satın almadan nasıl port açabileceğinizi anlatacağım. Bunun için https://ngrok.com/ adresindeki ngrok yazılımını kullanacağız. Burada kritik nokta ücretsiz paketi kullanacağımız için programı kapattığınız zaman adresiniz kayboluyor ve tekrar çalıştırdığınız zaman başka bir adres atanıyor. Ben bunun önüne geçmek için 7/24 açık kalan, Pi-hole çalıştırmak için kullandığım kesintisiz güç kaynağına bağlı Raspberry Pi alternatifi Orange Pi Zero cihazını kullanıyorum. Linux işletim sistemini çalıştıran herhangi bir bilgisayar kullanabilirsiniz. Gerekenler: SSH ile erişebildiğiniz ağınızdaki bir Linux bilgisayar Modem arayüzüne giriş yapabilmek İlk önce https://ngrok.com/ web sitesi üzerinden Sign Up butonuna basıp bilgilerimizi girerek üye olmamız gerekiyor. Üye olduktan sonra linux bilgisayarımıza PuTTY ile SSH üzerinden giriş yapıyoruz. Ngrok yazılımını kurmak için snap kullanmayı tercih ediyorum. sudo apt update sudo apt install snapd sudo snap install ngrok Henüz programı çalıştırmıyoruz, çünkü direkt SSH oturumumuz üzerinden çalıştırırsak SSH penceresini kapattığımızda ngrok da kapanır ve adresimizi kaybederiz. Biz SSH bağlantısını kessek bile arka planda çalışmasını istiyoruz. Bunun için Screen programını kullanacağız. sudo apt install screen Komutuyla programı yüklüyoruz. SSH bağlantısını kestiğimiz zaman ngrok'un arka planda çalışması için bir screen penceresi açacağız. Ben ismi ngrok olan bir screen penceresi açmak istiyorum, bunun için: screen -S ngrok komutunu giriyoruz ve karşımıza gelen pencereye https://dashboard.ngrok.com/login adresindeki "2. Connect your account" yazan yerin altındaki komutu başında ./ olmadan gireceğiz. ./ sağından itibaren kopyalayıp komutu giriyoruz. Auth token kodunu sallıyorum, siz kendinizinkini kopyalayıp gireceksiniz. Şu formatta olacak: ngrok authtoken fdhjgbsıygg7e55bge5yubhg5sehphbnse7u5b495bh Bu komutu girip Enter yaptıktan sonra ngrok hesabımıza giriş yapmış bulunuyoruz. Şimdi sıra geldi port açmaya. Ben portu günlük kullandığım masaüstü bilgisayarım için açacağım, eğer portu ngrok kurduğunuz bilgisayardan farklı bir cihaz için açacaksanız port açacağınız cihazın ağınız üzerindeki IPv4 adresini bilmeniz gerek, bunu öğrenmek için modemin arayüzüne giriş yapıp bakabilirsiniz veya Windows kullanan bilgisayarlar için cmd kullanarak ipconfig komutunu girerek öğrenebilirsiniz. (Modem arayüzünden bu DHCP adresini statik olarak ayarlarsak bilgisayarı açıp kapattığımızda bu adres aynı kalacaktır, ben böyle yaptım. Zyxel modem arayüzünde cihazın ismine tıklayıp>Bilgi çıkan penceredeki kutucuğu işaretleyerek yapılabiliyor.) ipconfig komutu ile CMD üzerinde: IPv4 Address. . . . . . . . . . . : 192.168.1.35 gibi görünecektir. 192.168.1.35 adresli cihaz için 1881 numaralı tcp portunu açacağım. Bunun için Screen açık olan SSH pencereme: ngrok tcp 192.168.1.35:1881 yazıp enter yapıyorum. Ngrok saniyeler içinde bağlanacak ve Forwarding yazan yerin yanında bir adres oluşturacak. Bu adres tcp://2.tcp.ngrok.io:15672 -> 192.168.1.35:1881 gibi görünüyor. "tcp://" yazan kısmı bize lazım değil. Adresimiz bu ve portumuz buna benzer: 2.tcp.ngrok.io:15672 Bu adrese gelen bağlantılar ağımızda 192.168.1.35:1881 adresine yönleniyor. Daha detaylı kullanım için burayı okuyabilirsiniz: https://ngrok.com/docs ![]() Bu adresi bir yere kaydediyoruz. https://www.yougetsignal.com/tools/open-ports// adresinden portumuzun açık olup olmadığını kontrol ediyoruz. Port açık ve erişilebilir durumda. ![]() Screen ile işimiz bittiği için Screen'i arka plana atacağız ve bu pencere arka planda çalışmaya devam ederek adresimizi ve portu çevrimiçi tutacak. Bunun için klavyemizde: Ctrl+a+d ile screen oturumunu detach ediyoruz. screen -list yazarak arka planda çalışan screen oturumunu görebiliriz. İşimiz bitti. exit yazarak SSH oturumunu kapatabiliriz. Bazen bug oluyor ve screen detach olmuyor, öyle olursa pencereyi kapatıp en baştan yapmanız gerek. Artık CGNat'a rağmen port açabilmeyi öğrendiğinize göre oyun sunucusu mu barındırırsınız, ip kameranız için mi port açarsınız orası size kalmış. Eğer port açık görünmezse modemin veya bilgisayarın güvenlik duvarını kapatarak tekrar kontrol edebilirsiniz. < Bu mesaj bu kişi tarafından değiştirildi myalperen -- 20 Aralık 2020; 8:49:46 > |
Tüm İSS'ler için Ngrok Kullanarak CGNAT IP ile Port Açma Rehberi (Linux)
CGNAT (Carrier-Grade NAT), birden fazla cihazı tek bir kamu IP adresine eşleyen bir ağ çeviri yöntemidir. Bu, ev veya küçük işletme kullanıcıları için uygun maliyetli bir seçenek olsa da, belirli portlara harici erişim kurmayı zorlaştırabilir.
Ngrok, bu sorunu çözmek için kullanılan bir yazılımdır. Güvenli bir tünel oluşturarak ve NAT aygıtının arkasındaki cihazlara erişim sağlayan, genel olarak erişilebilir bir URL sağlar. Bu sayede, CGNAT arkasında olsan bile portları açabilirsin.
Malzemeler:
- Linux işletim sistemi
- Ngrok yazılımı
- Bir CGNAT IP adresi
Adımlar:
-
Ngrok'u Kur: Ngrok'un resmi web sitesinden işletim sistemin için uygun sürümü indir. Kurulum talimatlarını takip et.
-
Ngrok Hesabı Oluştur: Ngrok'un ücretsiz planını kullanarak bir hesap oluştur. Bu, bir yetkilendirme jetonu alabilmeni sağlayacaktır.
-
Yetkilendirme Jetonunu Al: Terminaline aşağıdaki komutu girerek yetkilendirme jetonunu al:
ngrok authtoken
- Portu Aç: Aşağıdaki komutu kullanarak açmak istediğin portu yönlendir:
ngrok http 80
Bu komut, 80 numaralı portu genel olarak erişilebilir bir URL'ye yönlendirecektir.
-
URL'yi Not Et: Ngrok, açılan bağlantı için benzersiz bir URL oluşturacaktır. Bu URL'yi not et.
-
Harici Erişimi Test Et: Açılan porta harici bir ağdan erişip erişemediğini test etmek için not ettiğin URL'yi bir tarayıcıya gir.
Notlar:
- Ngrok, ücretsiz planda 20 saatlik kullanım sınırına sahiptir.
- Ngrok tüneli bağlantısı koptuğunda yeniden başlatılması gerekecektir.
- CGNAT DDNS (Dinamik DNS), Ngrok bağlantısının kesilmesi durumunda URL'nin aynı kalmasını sağlamak için kullanılabilir.
Bu adımları takip ederek, CGNAT arkasında olsan bile tüm İSS'ler için Ngrok kullanarak portları kolayca açabilirsin.