Teknoloji ve Hayata dair günceler

Kategoriler


Son Yorumlar..


Raspberry Pi ile Tailscale Kullanımı

Kemal İKİZOĞLUKemal İKİZOĞLU

Herkese merhaba,

Bugün sizlerle Raspberry Pi’de hazırladığınız projelerinizin internete erişimi hakkında konuşuyor olacağız. Bu projelere kendi ev ağınızdan erişirken hiç başka bir yerden erişmeyi denemiş miydiniz? Hiç CGNAT mimarisini duydunuz mu? Gelin hep birlikte önce soruna sonra da çözüme bakalım.

Raspberry Pi’de İnternete Erişim

Şu an güncel sürüm ve en yüksek donanım gücüne sahip olan Raspberry Pi 5 – 16 GB bir cihazınız olduğunu düşünelim. SD karta işletim sistemi verisini attınız ve cihazınızı çalıştırıp masaüstü ekranına geldiniz. En doğal haliyle internete bağlanmak isteyeceksiniz. Gerek kablolu gerekse kablosuz bağlantı için ağ tanımlamalarını yaptınız ve blog.ikizoglu.com sayfasına bağlandınız. Tebrikler, eğer yazdığım son blog yazımı görebiliyorsanız her şey yolunda! 🙂 Peki problem nerede?

Raspberry Pi 5

Problem Durumu:

Örneğimizde bir Python projenizin olduğunu düşünelim. Projenizi Pi üzerinde ve Pi cihazınızı kullanarak çalıştırdınız. Projenizi test ettiğinizde başarıyla çalıştığını gördünüz. Hemen Pi cihazınızla aynı ağda bulunan kendi bilgisayarınızdan Pi’deki projenize erişip kontrol etmek istediniz. Sayfaların roket gibi açılıp verilerin anlık olarak düşmeye başladığını görünce yüzünüzdeki gülümsemeyi şimdiden hissetmeye başladım 😄

Kısa bir mola verdiniz ve ortamdan ayrıldınız. Mobil internetinizi kullanarak veya farklı bir internet bağlantısından “Dur bakayım kendi telefonumdan da projeye erişebilecek miyim?” dedikten sonra sayfayı yenilediğinizde roket gibi çalışan sayfa karınca hızından beter hale gelmiş. Üstelik o kadar beklemeye bir de sayfa açılmıyor! Sebep?? Hani çalışıyordu?

Problemimiz tam olarak burada, yerel ağınıza bağlı cihazlar kendi içerisinde iletişimde kalıp haberleşirken ve internete bağlıyken, ağ değiştirdiğinizde bağlantınız kopuyor ve tüm proje ortada kalıyor. Sorun, aslında tüm dünyayı ilgilendiren bir sorun.

CGNAT (Carrier Grade NAT) Nedir?

CGNAT, Taşıyıcı Sınıfı NAT olarak isimlendirilir ve internet servis sağlayıcılarının (ISS) sınırlı sayıdaki genel IPv4 adresini çok sayıda aboneye aynı anda paylaştırmak için kullandığı bir ağ teknolojisidir. Normalde evinizdeki modem, ev içi ağınızdaki cihazların (telefon, bilgisayar, akıllı TV) tek bir ortak IP ile internete çıkmasını sağlar (Bu işlem NAT olarak bilinir).

Neden CGNAT kullanılıyor?

En büyük sebep IPv4 adreslerinin tükenmesi diyebiliriz. Dünyada ve Türkiye’de kullanılabilir IPv4 adresi sayısı, artan internetli cihaz sayısına yetmemektedir. Servis sağlayıcılar, her yeni aboneye ayrı bir statik/dinamik genel IP vermek yerine CGNAT havuzlarını kullanarak tek bir IP’yi yüzlerce kişiye paylaştırır. Böylelikle bir router üzerinden tek ip adresi çıkarken ağ içerisinde bulunan her bir cihaz kendi içerisinde yerel ip adresleriyle iletişime devam eder.

Bir evde 3 kişilik bir aileyi düşündüğümüzde üç cep telefonu, bir tablet, iki bilgisayar, iki akıllı saat, akıllı buzdolabı, çamaşır makinesi, kettle, beş güvenlik kameraları, iki tv derken şimdiden on sekiz tane internete bağlanabilir cihaz oldu. Bir hane için en az on sekiz internete açık IP adresi kullanmak dünya çapındaki ağ iletişimi için intihar sebebi olacak bir şey.

Evdeki localhost neden yetmiyor da CGNAT kullanılıyor?

Pi ya da herhangi bir cihazınız evdeki yerel ağa bağlı olduğu süre boyunca özel olarak yerel IP adresleri 192.168.1.1 ya da 10. 0. 0. 1 alırlar. Ev içi iletişimde ağ trafiği modem içerisindeki switch ile çözülür. Dışarıya giden bir veri olmaz ve modem dinamik bir IP adresi ile sabit olmayan bir IP adresine sahiptir. Bir örnek vermek gerekirse evde en sık kullandığınız donanım olarak TV’den başlayabiliriz. TV’nizi internete bağladınız ve uygulama üzerinden Youtube’ye bağlanmak istediniz. Bağlandınız, arama yaptınız ve istediğiniz videoyu bulup izlemeye başladınız. Tüm bu süreci düşündüğünüzde tetikleyici hep içeriden dışarıya gerçekleşti. Siz sorguyu içeriden gönderdiniz ve yol belirli olduğu için istek size döndü.

Fakat yukarıdaki örneğe baktığımızda Raspberry Pi’ye istek dışarıdan içeri doğru gelmek istedi. Tetikleyici dışarıdaki telefon -> mobil şebeke üzerinden gerçekleşti. Siz Pi üzerinde hazırladığınız projenize bir port numarası verdiniz ve o port numarasıyla dışarıdan erişmek istediniz. Localhost sadece cihazın yerel ip adresini biliyor ama port bilgisi yok. Fakat siz ip + port kullanarak dışarıdan içeriye doğru erişmek istiyorsunuz. Ne olacak? Problem işte tam olarak burada başlıyor. Çünkü sizin yerel ağınız ve modeminiz IP + Port adresini çözemiyor ve öylece kalıyor. Tarayıcı belirli bir süreden sonra bağlantıyı bitiriyor ve kapı yüzünüze kapanıyor.

Çözüm: Tünelleme Yapmak!

Eğer cihazınızın dışarıdan gelen istekleri çözebilecek noktaya gelmesini istiyorsanız bu cihazlar arasında bir tünel ağı kurmanız gerekir. Böylelikle bu cihazlarınız birbiriyle haberleşir ve iletişim kaldığı yerden devam eder. Bakın burada Pi’yi tamamen internete açmaktan bahsetmiyorum. İki cihaz ya da hangi cihazları birbirine tünelleme yoluyla bağlayacaksanız o cihazların iletişiminden bahsediyorum. Bu tünelleme işini yapan uygulamalardan biri de Tailscale.

Tailscale Nedir?

Tailscale cihazlar arası tünelleme yaparak çalışan, herhangi bir ayar gerektirmeden otomatik güvenli ağ oluşturulmasını sağlayan bir uygulamadır. Cihazlarınız arasında yaptığınız tünellemeyi arayüzden kolaylıkla takip edebilirsiniz. Mobil bağlantı noktası kullanarak evinizdeki Pi cihazınıza bağlanabilir, docker konteynırlarınız NAS cihazınıza Tailscale üzerinden bağlanabilir ve güvenlik duvarı gibi ayarlarınızı değiştirmeden kontrol sağlayabilirsiniz.

Tailscale nasıl çalışıyor?

Tailscale kayıt olduğunuzda öncelikle bir koordinasyon sunucusu oluşturuluyor ve cihazlarınızı ekliyorsunuz. CGNAT bu işlemi içeriden dışarıya olarak gördüğü için herhangi bir engele takılmıyorsunuz. Cihazlar ortak ağda buluştuğu için özgürce iletişime geçiyor ve bağlantı sağlanıyor. Bu sayede modem üzerinde yapılması gereken bir şey de kalmıyor. Hepsi bu kadar!

Özetle

Eğer Raspberry Pi cihazınızı kullanarak ev ağı dışındaki farklı cihazlarınızla iletişime geçip işlerinizi kaldığınız yerden devam ettirmek istiyorsanız Tailscale ihtiyacınız olan işi fazlasıyla görecektir. Eğer daha önce yazmış olduğum Raspberrry Pi yazılarımı okumadıysanız şuradan erişebilirsiniz.

Bir sonraki yazımda görüşmek dileğiyle..

Kaynaklar:

Eğitim ve teknoloji haberlerini, ilginç ve önemli bilgileri, kendimi geliştirdiğim alanlardaki öğrendiğim tecrübelerimi blogumda paylaşıyorum. Öğrenmekten ve paylaşmaktan zevk alıyorum.İnandığım bir şey var ki istisnalar hariç, hiçbir şey imkansız değildir. Mucizeler için zaman gerekir! Bu benim yaşam felsefem.

Yorumlar 0
İlk yorumu yazmak ister misin?