Skip to content
Back to blog
Teknoloji Cloudflare Tunnel Network Güvenlik SysAdmin Cloudflare DevOps

Cloudflare Tunnel ile Güvenli Yayın: Port Açmadan Dış Dünyaya Erişim Sağlama

Ev veya ofis sunucularınızdaki uygulamaları statik IP ve port yönlendirmesi (port forwarding) yapmadan, Cloudflare Tunnel kullanarak nasıl güvenli bir şekilde dış dünyaya açabileceğinizi adım adım inceleyin.

Caner Serbest

Sistem ve Altyapı

4 min read

Cloudflare Tunnel ile Güvenli Yayın: Port Açmadan Dış Dünyaya Erişim Sağlama

Evde veya ofiste bir homelab ortamı kurduğunuzda, geliştirdiğiniz uygulamaları ya da kendi host ettiğiniz servisleri dış dünyaya açma ihtiyacı kaçınılmaz olarak baş gösterir. Klasik yöntemlerle bu işlem; modem üzerinden port yönlendirmesi (port forwarding) yapmayı, statik bir IP adresi edinmeyi (veya DynDNS servisleriyle uğraşmayı) ve güvenlik duvarı kurallarını manuel olarak yönetmeyi gerektirir. Ancak bu yaklaşım, hem ağınızı dışarıdan gelen taramalara karşı savunmasız bırakır hem de yapılandırma maliyetini artırır.

Bu yazıda, Cloudflare Tunnel (eski adıyla Argo Tunnel) mimarisini kullanarak, modeminizde hiçbir port açmadan, NAT arkasındaki sunucularınızı internete nasıl güvenli bir şekilde çıkarabileceğinizi ele alacağız.

Cloudflare Tunnel Mimarisi Nasıl Çalışır?

Geleneksel ağ mimarilerinde dış dünyadan gelen bir istek doğrudan sunucunuza (veya modeminizin WAN IP’sine) ulaşır. Bu durum, sunucunuzun IP adresinin doğrudan hedef alınmasına ve DDoS gibi saldırılara açık hale gelmesine neden olur.

Cloudflare Tunnel ise bu akışı tersine çevirir. İç ağınızda çalışan hafif bir daemon (köprü yazılımı olan cloudflared), Cloudflare’in uç noktalarına (edge servers) giden giden (outbound) şifreli bağlantılar kurar. Dış dünyadan bir kullanıcı sitenize veya servisinize erişmek istediğinde, istek önce Cloudflare altyapısına gelir. Cloudflare bu isteği güvenlik, WAF (Web Application Firewall) ve DDoS korumalarından geçirdikten sonra, zaten açık olan bu güvenli tünel üzerinden sizin sunucunuza iletir.

Bu modelin avantajları şunlardır:

  • Port Açma İhtiyacı Yok: Modeminizde NAT veya port yönlendirmesi yapmanıza gerek kalmaz.
  • Statik IP Gerektirmez: Ev internetinizde dinamik IP kullansanız bile tünel kesintisiz çalışmaya devam eder.
  • Güvenlik Katmanı: Sunucunuzun gerçek IP adresi dış dünyadan gizlenir, doğrudan erişilemez.
  • TLS/SSL Yönetimi: Sertifika süreçleri Cloudflare tarafından otomatik olarak yönetilir.

Adım Adım Cloudflare Tunnel Kurulumu

Bu rehberde, bir Linux sunucu (örneğin Ubuntu Server) üzerinde çalışan yerel bir web uygulamasını (http://localhost:8080) dış dünyaya açacağımızı varsayıyoruz.

1. Ön Gereksinimler

Kurulum içinim gerekenler:

  • Yönetimi size ait olan ve Cloudflare’e eklenmiş bir alan adı (domain).
  • Bir Cloudflare hesabı.
  • Tünelin çalışacağı yerel bir sunucu (Linux, macOS veya Windows).

2. Cloudflared Aracının Kurulumu

Öncelikle sunucumuza cloudflared komut satırı aracını kurmamız gerekiyor. Ubuntu/Debian tabanlı bir sistem için aşağıdaki adımları izleyebilirsiniz:

# Cloudflare resmi GPG anahtarını ekleyin
sudo mkdir -p --mode=0755 /usr/share/keyrings
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | sudo tee /usr/share/keyrings/cloudflare-main.gpg >/dev/null

# Depo listesini güncelleyin
echo "deb [signed-by=/usr/share/keyrings/cloudflare-main.gpg] https://pkg.cloudflare.com/jammy $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/cloudflare.list

# Kurulumu gerçekleştirin
sudo apt update && sudo apt install cloudflared -y

Kurulumun başarılı olduğunu doğrulamak için sürüm kontrolü yapabilirsiniz:

cloudflared --version

3. Cloudflare Hesabı ile Oturum Açma

Sunucumuzu Cloudflare hesabımıza bağlamak için terminal üzerinden yetkilendirme yapmalıyız:

cloudflared tunnel login

Bu komutu çalıştırdığınızda terminalde bir URL belirecektir. Bu URL’yi kopyalayıp tarayıcınızda açın. Cloudflare hesabınıza giriş yapın ve tüneli bağlamak istediğiniz alan adını seçerek yetki verin. İşlem tamamlandığında tarayıcınızda başarılı mesajını görecek ve terminale geri dönebileceksiniz.

4. Tünel Oluşturma

Yetkilendirme tamamlandıktan sonra sunucumuzda kalıcı bir tünel oluşturalım:

cloudflared tunnel create my-homelab-tunnel

Bu komut çalıştırıldığında, Cloudflare altyapısında tünel için benzersiz bir ID üretilir ve yerel makinenizde ~/.cloudflared/<tunnel-id>.json şeklinde bir kimlik dosyası oluşturulur. Bu dosya tünelinizin güvenliği için kritik önem taşır, başkalarıyla paylaşmayın.

5. DNS Yönlendirmesini Yapılandırma

Oluşturduğumuz tüneli bir alt alan adına (subdomain) bağlamamız gerekiyor. Örneğin, app.alanadiniz.com adresini tünelimize yönlendirelim:

cloudflared tunnel route dns my-homelab-tunnel app.alanadiniz.com

Bu komut, Cloudflare panelinizde ilgili alan adı için otomatik olarak bir CNAME kaydı oluşturur ve gelen istekleri tünelinize yönlendirir.

6. Yapılandırma Dosyasının Hazırlanması

Tünelin hangi yerel servise istek göndereceğini belirtmek için bir konfigürasyon dosyası oluşturalım. Genellikle bu dosya /etc/cloudflared/config.yml yolunda saklanır.

tunnel: <TUNNEL_ID>
credentials-file: /root/.cloudflared/<TUNNEL_ID>.json

ingress:
  - hostname: app.alanadiniz.com
    service: http://localhost:8080
  - service: http_status:404

Not: <TUNNEL_ID> kısmını kendi tünel kimliğinizle değiştirmeyi unutmayın.

7. Tüneli Servis Olarak Ayarlama ve Başlatma

Tünelin sunucu yeniden başladığında otomatik olarak çalışması ve arka planda bir servis olarak koşturulması için systemd entegrasyonunu kuralım:

sudo cloudflared service install

Bu komut gerekli systemd servis dosyasını oluşturacaktır. Şimdi servisi başlatalım ve durumunu kontrol edelim:

sudo systemctl start cloudflared
sudo systemctl enable cloudflared
sudo systemctl status cloudflared

Her şey yolunda gittiyse, tarayıcınıza https://app.alanadiniz.com yazarak içeride koşan uygulamanıza güvenli bir şekilde erişebildiğinizi görmelisiniz.


Güvenlik ve İleri Düzey İpuçları

Tünel kurulumu temel seviyede tamamlanmıştır ancak kurumsal veya kritik homelab ortamlarında güvenliği artırmak için şu adımları atmanız önerilir:

  1. Cloudflare Zero Trust (Access) Entegrasyonu: Uygulamanıza herkesin erişmesini istemiyorsanız, Cloudflare Dashboard üzerinden Zero Trust bölümüne giderek belirli e-posta adreslerine, ülkelere veya iki aşamalı doğrulamaya (2FA) sahip kullanıcılara erişim sınırı getirebilirsiniz. Böylece uygulamanızın kendi içinde kimlik doğrulama mekanizması olmasa bile Cloudflare katmanında korunmuş olur.
  2. Log Takibi: Tünel üzerinde oluşabilecek hataları veya gelen istekleri incelemek için systemd loglarını düzenli olarak kontrol edin:
    journalctl -u cloudflared -f
  3. Birden Fazla Servis Barındırma: Aynı tünel üzerinden farklı subdomain’ler kullanarak birden fazla servisi dışarı açabilirsiniz. config.yml dosyasına yeni ingress kuralları eklemeniz yeterlidir.

Sonuç

Cloudflare Tunnel, geleneksel ağ yapılandırmalarının karmaşıklığını ortadan kaldıran, güvenlik standartlarını en üst düzeye çıkaran modern bir yaklaşımdır. Ev veya ofis ortamındaki sunucularınızı dış dünyaya açarken port güvenliği, sertifika yönetimi ve statik IP maliyeti gibi sorunlarla uğraşmak istemiyorsanız bu yöntem iş akışınızı büyük ölçüde rahatlatacaktır. Doğru yapılandırılmış bir tünel, hem hız hem de güvenlik açısından sürdürülebilir bir altyapı sunar.


Bu yazı Gemini ile otomatik oluşturulmuştur.