Raspberry Pi’ı İnternete Açmak (ngrok)

Kitap boyunca Raspberry Pi’ın birçok özelliğini ağ üzerinden kullandığımız uygulamalar yer alıyor. Yerel bilgisayarda çalışan bu ağ uygulamalarına yerel ağ üzerinden kolayca erişebilirken internet ortamından erişmek için önceki başlıkta anlatıldığı gibi özel yönlendirmeler yapmak gerekiyor. Bu yönlendirmeleri yapmak bazen mevcut ağ yapılandırması, güvenlik duvarı veya servis sağlayıcıdan kaynaklanan nedenlerle zorlayıcı olabilir. Bu başlıkta Raspberry Pi’a ngrok yazılımını kurarak localhost’da çalışan bir ağ uygulamasına adimiz.ngrok.io gibi bir adres ile internet ortamından kolayca nasıl erişebileceğinizi anlatacağım.

ngrok, NAT ve firewall arkasındaki uygulamaların trafiğini ngrok bulut sunucularına tünel (TLS bağlantısı) açarak ulaştırır ve size özel bir adres sağlayarak tünel içinden geçerek Raspberry Pi’a ulaşmanızı sağlar. Aşağıdaki görsel bu durumu açıklamaktadır.


ngrok’un çalışma yapısı

ngrok’u kurmak için ngrok.io sitesindeki Download sayfasına gidin ve ARM sürümünün indirme bağlantısını kopyalayın. Ardından aşağıdaki gibi wget aracı ile Raspberry Pi’a çekin ve arşiv dosyasını genişletin.

Arşiv dosyasının içerisinde ngrok adında çalıştırılabilir bir dosya vardır. Şimdi, Raspberry Pi üzerinde 80. üzerinden çalışan web sunucumuza ngrok ile internet ortamından nasıl ulaşabileceğimize bakalım. Bu örneği Raspberry Pi üzerinde çalışan herhangi bir web sunucusu için de uygulayabilirsiniz. ngrok’un temel kullanımı aşağıdaki gibidir:

ngrok’u kullanarak yerelde çalışan Apache’yi internete çıkarmak için aşağıdaki komutu verelim:

Komutu verdikten sonra tünel açılır ve Apache’ye ulaşabileceğiniz <rastgele>.ngrok.io şeklindeki adresler listelenir ve trafik detayları ekrana basılır.

Yukarıdaki ekran çıktısını açıklamamız gerekirse; tünel 8 saat sonra kendiliğinden kapanacak, tüneldeki canlı trafik hakkında raporlamayı http://127.0.0.1:4040 adresini kullanarak Raspberry Pi üzerinden görebilirsiniz, Apache’ye internet üzerinden ulaşmak için http://32aa26030bb7.ngrok.io adresini kullanabilirsiniz. Tünelin bağlantısını sonlandırmak için Ctrl+C tuş bileşimini kullanabilirsiniz.

Apache’ye ulaşmak için ngrok’un bize verdiği alt alan adı rastgele oluşturulmuş bir alan adıdır. ngrok sitesinden üye olup bir abone paketi satın alarak kendinize ait bir alt alan adı tanımlayabilir ve rezerve edebilirsiniz. Buraya kadar tek bir komutla bir web uygulamasını hızlı bir şekilde internete nasıl açabileceğimizi gördük. Dilerseniz ngrok’un işimize yarayabilecek bazı kullanışlı seçeneklerini de inceleyelim. Bunun için öncelikle ngrok.io sitesi  üzerinde bir hesap açarak üye olmamız gerekiyor. Sitenin ana sayfası üzerindeki SIGNUP bağlantısına tıklatarak kolaycak abone olabilirsiniz.

Üye girişi yaptıktan sonra Setup & Installation sayfasında yer alan authtoken’ımızı (kimlik doğrulama anaharı) Raspberry Pi’a kaydedeceğiz. Bunun için sayfadaki authtoken parametreli komutu Raspberry Pi üzerinde çalıştırın. Böylece authtoken  ~/.ngrok2/ngrok.yml adlı yapılandırma dosyasına kaydedilecek ve bundan sonra ngrok’un daha fazla özelliğini kullanabiliyor olacağız.

Yukarıdaki işlemden sonra dilediğiniz TCP port’unu internete açabilirsiniz. Aşağıdaki komut ile SSH’ın port’u olan 22’yi internete açıyoruz. Böylece NAT arkasındaki Raspberry Pi’ın komut satırına 2.tcp.ngrok.io:19148 adresini kullanarak internet üzerinden erişebileceğiz. SSH istemcinize adres olarak 2.tcp.ngrok.io port olarak da 19148 girmeniz yeterlidir.

ngrok’un internete açtığı servisleri parola ile korumak için -auth seçeneğinden yararlanabilirsiniz. Aşağıdaki komut Raspberry Pi üzerinde çalışan Apache’yi (port 80) tankado kullanıcı adı ve 123456 parolası ile korumaya almıştır.

ngrok ile yapılabilecekler hakkında daha fazla örneğe üyelik hesabınızdaki Tutorials bağlantısından ve ngrok dokümantasyonundan[1] ulaşabilirsiniz. ngrok ile açılan tünellerin belli bir zaman aşımı süresi vardır. Bu süre ve tünel alt alan adının rastgele değişmesi nedeniyle ngrok’un ücretsiz üyelik paketi ile tünelin her daim açık kalmasını sağlamak mümkün değildir. Ancak ücretli bir üyeliniz varsa bu süre re sınırlamasından kurtulmak için ngrok’un bir servis olarak çalışmasını sağlayabilirsiniz. Bunun için ngrok’a service install komutu ile birlikte yapılandırma dosyasının yolunu verelim.

Bu komut ile ngrok bir servis olarak yüklenmiş olacak. Servisin durumunu görmek, durdurmak ve yeniden başlatmak için aşağıdaki komutları kullanabilirsiniz.

ngrok’u servis olarak yükledikten sonra Rasbperyy Pi üzerindeki hangi port’u tünelleyeceğini de yapılandırma dosyası olan ~/.ngrok2/ngrok.yml içinde tanımlamamız gerekir. Örneğin ilk yaptığımız örnekteki gibi Apache’yi internete açma işlemini servis dosyasında tanımlayalım. Bunun için ~/.ngrok2/ngrok.yml dosyasında aşağıdaki gibi bir tanımlama yapmanız yeterlidir.

serveo projesi

ngrok’a iyi bir alternatif olarak geliştirilen serveo projesi ngrok’un yaptığı gibi tünel açarak NAT ve güvenlik duvarını atlatmanızı sağlar. Eğer, internete sürekli bağlı bir bilgisayarınız ya da sunucunuz varsa kendi alan adınızı ve serveo’yu kullanarak iç ağınızdaki uygulamaları internete açabilirsiniz. serveo’yu Linux, Windows ve Mac bilgisayarlara kurabilirsiniz. serveo ücretsiz sürümünde aynı anda 3 tünel açmaya izin verir. Detaylı bilgi için http://serveo.net adresindeki projeyi inceleyebilirsiniz.


[1] ngrok documentation – https://ngrok.com/docs

Yazar: Özgür Koca

Yazar - Tankado.com

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.