Skip to content
Back to blog
Rehber Cloudflare Tunnel Uygulama Yayınlama Güvenlik DevOps Ağ Yönetimi DNS Reverse Proxy Zero Trust Mistral

Cloudflare Tunnel ile Uygulamalarınızı Güvenli ve Ölçeklenebilir Bir Şekilde Dış Dünyaya Açın: Adım Adım Kurulum Rehberi

Bu rehberde, Cloudflare Tunnel kullanarak uygulamalarınızı NAT/Firewall arkasında güvenli bir şekilde nasıl yayınlayabileceğinizi, DNS kayıtlarını otomatikleştirmeyi ve performansı optimize etmeyi adım adım öğreneceksiniz.

Caner Serbest

Sistem ve Altyapı

7 min read

Cloudflare Tunnel ile Uygulamalarınızı Güvenli ve Ölçeklenebilir Bir Şekilde Dış Dünyaya Açın: Adım Adım Kurulum Rehberi

Merhaba! Bugün sizlere, uygulamalarınızı güvenli, ölçeklenebilir ve düşük maliyetli bir şekilde dış dünyaya açmanızı sağlayan Cloudflare Tunnel aracını detaylı bir şekilde kurulumunu ve yapılandırmasını anlatacağım. Bu rehber, özellikle NAT arkasında çalışan uygulamalarınızı (örneğin, yerel bir web sunucusu, API hizmeti veya veri tabanı arayüzü) açık portlara ihtiyaç duymadan yayınlamak isteyen sistem yöneticileri, geliştiriciler ve DevOps mühendisleri için hazırlandı.

Cloudflare Tunnel, Cloudflare Zero Trust platformunun bir parçası olarak çalışır ve herhangi bir açık port gerektirmeden uygulamalarınıza erişim sağlar. Bu sayede, güvenlik açıklarını minimize ederken, DNS kayıtlarını otomatikleştirir ve yüksek performanslı bir yayınlama deneyimi sunar. Hadi başlayalım!


📌 Cloudflare Tunnel Nedir?

Cloudflare Tunnel, Cloudflare tarafından geliştirilen ve Zero Trust mimarisine dayanan bir araçtır. Temel olarak, aşağıdaki avantajları sunar:

Açık port gerektirmez: Uygulamanız NAT/Firewall arkasında kalsa bile yayınlanabilir. ✅ Otomatik DNS yönetimi: Cloudflare DNS kayıtlarını otomatik olarak oluşturur ve günceller. ✅ Güvenlik: Zero Trust ilkelerine göre çalışır; sadece yetkili kullanıcıların erişimine izin verir. ✅ Yüksek performans: Cloudflare’in küresel ağı üzerinden trafik akışı sağlar. ✅ Kolay kurulum: Komut satırı aracı (cloudflared) ile hızlıca yapılandırılabilir.

Cloudflare Tunnel, herhangi bir uygulama türüyle çalışabilir: web sunucuları, API’ler, veri tabanı arayüzleri, hatta yerel geliştirme ortamları!


🛠️ Ön Gereksinimler

Cloudflare Tunnel’ı kullanabilmek için aşağıdaki gereksinimleri karşılamanız gerekmektedir:

1. Cloudflare Hesabı ve Alan Adı

2. cloudflared Aracının Kurulumu

Cloudflare Tunnel’ı çalıştırmak için cloudflared adlı komut satırı aracını kurmanız gerekmektedir. Desteklenen tüm işletim sistemleri için kurulum adımları aşağıda verilmiştir:

🔹 Linux (Debian/Ubuntu)

# cloudflared paketini indirin ve kurun
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
sudo dpkg -i cloudflared-linux-amd64.deb

# Kurulumu doğrulayın
cloudflared --version

🔹 Linux (RHEL/CentOS)

# cloudflared paketini indirin ve kurun
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.rpm
sudo rpm -ivh cloudflared-linux-amd64.rpm

# Kurulumu doğrulayın
cloudflared --version

🔹 macOS (Homebrew)

brew install cloudflared

🔹 Windows (Chocolatey)

choco install cloudflared

3. Uygulamanızın Yayınlanması Gereken Portu

  • Uygulamanızın hangi portta çalıştığını bilmeniz gerekmektedir. Örneğin:
    • Bir web sunucusu: 80 (HTTP) veya 443 (HTTPS)
    • Bir API hizmeti: 3000, 8080, vb.
    • Bir veri tabanı arayüzü: 5432 (PostgreSQL), 3306 (MySQL), vb.

🚀 Cloudflare Tunnel Kurulumu: Adım Adım

Adım 1: Cloudflare Tunnel Oluşturma

  1. Cloudflare Dashboard’a giriş yapın: https://dash.cloudflare.com

  2. Sol menüden Zero Trust > Access > Tunnels bölümüne gidin.

  3. Create a Tunnel butonuna tıklayın.

    Cloudflare Tunnel Oluşturma

  4. Tunnel adını girin: Örneğin, my-web-server-tunnel.

  5. Save tunnel butonuna tıklayın.

Adım 2: Tunnel Kimlik Bilgilerini Alın

Tunnel oluşturulduktan sonra, size bir credentials.json dosyası indirmeniz için bir uyarı çıkacaktır. Bu dosyayı güvenli bir şekilde saklayın, çünkü bu dosya olmadan Tunnel’ı çalıştıramazsınız.

  • Dosyayı indirin ve sunucunuza kopyalayın. Örneğin:
    scp ~/Downloads/credentials.json user@your-server:~/.cloudflared/

Adım 3: Tunnel’ı Yapılandırma

Tunnel’ı yapılandırmak için, config.yml adlı bir yapılandırma dosyası oluşturmanız gerekmektedir. Bu dosya, Tunnel’ın hangi hizmetleri yayınlayacağını ve hangi DNS kayıtlarını oluşturacağını belirler.

📄 config.yml Örneği (Web Sunucusu için)

tunnel: <TUNNEL_ID>  # Tunnel ID'sini girin (örneğin: abc12345-6789-0abc-def0-123456789abc)
credentials-file: /home/user/.cloudflared/credentials.json

ingress:
  # HTTP trafiğini 80. porttan 80. porta yönlendir
  - hostname: web.example.com
    service: http://localhost:80
  # HTTPS trafiğini 443. porttan 443. porta yönlendir
  - hostname: api.example.com
    service: https://localhost:443
  # Tüm diğer trafik için varsayılan yönlendirme (isteğe bağlı)
  - service: http_status:404

🔹 Tunnel ID’sini Bulma

Tunnel ID’sini bulmak için:

  1. Cloudflare Dashboard > Zero Trust > Access > Tunnels
  2. Tunnel listenizde ilgili Tunnel’ı seçin.
  3. Tunnel ID alanını kopyalayın.

Adım 4: Tunnel’ı Başlatma

Yapılandırma dosyasını oluşturduktan sonra, Tunnel’ı başlatabilirsiniz:

cloudflared tunnel run <TUNNEL_ID>

Bu komut, Tunnel’ı arka planda çalıştırır. Eğer sürekli çalışmasını istiyorsanız, systemd hizmeti olarak yapılandırabilirsiniz.

🔹 systemd Hizmeti Olarak Yapılandırma (Linux)

  1. Servis dosyasını oluşturun:

    sudo nano /etc/systemd/system/cloudflared.service
  2. Aşağıdaki içeriği ekleyin (yolunuza göre düzenleyin):

    [Unit]
    Description=Cloudflare Tunnel
    After=network.target
    
    [Service]
    ExecStart=/usr/local/bin/cloudflared tunnel run <TUNNEL_ID>
    Restart=always
    User=cloudflared
    Group=cloudflared
    Environment="TZ=UTC"
    
    [Install]
    WantedBy=multi-user.target
  3. Servisi etkinleştirin ve başlatın:

    sudo systemctl daemon-reload
    sudo systemctl enable cloudflared
    sudo systemctl start cloudflared
  4. Durumunu kontrol edin:

    sudo systemctl status cloudflared

Adım 5: DNS Kayıtlarını Oluşturma

Cloudflare Tunnel, otomatik olarak DNS kayıtları oluşturur. Ancak, manuel olarak da yapılandırabilirsiniz.

  1. Cloudflare Dashboard > DNS bölümüne gidin.

  2. Add record butonuna tıklayın.

  3. Aşağıdaki gibi bir kayıt ekleyin:

    • Type: CNAME
    • Name: web.example.com (veya api.example.com)
    • Target: <TUNNEL_ID>.cfargotunnel.com
    • Proxy status: Proxied (Cloudflare’in CDN’inden faydalanmak için)

    DNS Kayıt Ekleme

  4. Kaydı kaydedin. Artık uygulamanız dış dünyaya yayınlanmaya hazır!


🔐 Güvenlik ve Erişim Kontrolleri

Cloudflare Tunnel, Zero Trust ilkelerine göre çalışır, ancak ek güvenlik önlemleri almak isteyebilirsiniz. İşte bazı öneriler:

1. Erişim Politikaları Oluşturma

Cloudflare Access ile uygulamalarınıza erişimi kısıtlayabilirsiniz:

  1. Zero Trust > Access > Applications bölümüne gidin.
  2. Add an application butonuna tıklayın.
  3. Uygulama adını ve URL’sini girin (örneğin, https://web.example.com).
  4. Kullanıcıları ve grupları ekleyin (örneğin, sadece şirket e-postası olan kullanıcılar).
  5. Politikayı kaydedin.

2. Sıkılaştırma (Hardening)

  • TLS Sertifikaları: Cloudflare, varsayılan olarak TLS 1.3 kullanır. Ek sertifika gereksinimleri için Cloudflare SSL/TLS ayarlarını inceleyin.
  • IP Kısıtlamaları: Belirli IP adreslerinden gelen istekleri engellemek için Firewall Kuralları oluşturun.
  • Rate Limiting: Cloudflare Rate Limiting özelliğini kullanarak saldırıları önleyin.

📊 Performans Optimizasyonu

Cloudflare Tunnel’ın performansını artırmak için aşağıdaki adımları uygulayabilirsiniz:

1. Arka Uç Hizmetlerini Optimize Etme

  • Uygulamanızın veritabanı sorgularını optimize edin.
  • Önbellekleme kullanın (örneğin, Nginx’in proxy_cache özelliği).
  • CDN kullanın (Cloudflare zaten bir CDN’dir, ancak uygulamanızın statik dosyalarını da CDN’e yükleyerek performansı artırabilirsiniz).

2. Cloudflare Ayarlarını İnceleme

  • cache-control başlıklarını doğru şekilde ayarlayın.
  • Brotli sıkıştırma kullanın (varsayılan olarak etkindir).
  • Argo Smart Routing özelliğini etkinleştirin (Cloudflare’in trafik yönlendirme algoritmasını iyileştirir).

3. İzleme ve Loglama

Cloudflare Tunnel’ın durumunu izlemek için:

# Tunnel durumunu kontrol et
cloudflared tunnel info <TUNNEL_ID>

# Logları görüntüle
journalctl -u cloudflared -f

Ayrıca, Cloudflare Dashboard > Analytics bölümünden trafik istatistiklerini inceleyebilirsiniz.


🧪 Gerçek Dünya Senaryoları ve Uygulamalar

Senaryo 1: Yerel Bir Web Sunucusunu Yayınlama

  • Uygulama: localhost:80 (örneğin, Nginx)
  • Alan adı: web.example.com
  • Yapılandırma:
    ingress:
      - hostname: web.example.com
        service: http://localhost:80
      - service: http_status:404
  • Sonuç: Uygulamanız https://web.example.com üzerinden yayınlanır.

Senaryo 2: API Hizmetini Güvenli Bir Şekilde Dış Dünyaya Açma

  • Uygulama: localhost:3000 (örneğin, bir Node.js API)
  • Alan adı: api.example.com
  • Yapılandırma:
    ingress:
      - hostname: api.example.com
        service: http://localhost:3000
      - service: http_status:404
  • Ek Güvenlik: Cloudflare Access ile sadece yetkili kullanıcıların erişimine izin verin.

Senaryo 3: Veri Tabanı Arayüzünü Yayınlama (Dikkat: Güvenlik Riski!)

⚠️ Uyarı: Veri tabanı arayüzlerini yayınlamak yüksek güvenlik riski taşır. Sadece güvenlik duvarı arkasında ve sıkı erişim kontrolleri ile yayınlanmalıdır.

  • Uygulama: localhost:5432 (PostgreSQL)
  • Alan adı: db.example.com
  • Yapılandırma:
    ingress:
      - hostname: db.example.com
        service: tcp://localhost:5432
      - service: http_status:404
  • Ek Önlemler:
    • Sadece güvenilir IP adreslerinden erişime izin verin.
    • TLS kullanın (varsayılan olarak Cloudflare tarafından sağlanır).
    • Kimlik doğrulama gerektiren bir arayüz kullanın (örneğin, pgAdmin yerine psql CLI).

❌ Yaygın Hatalar ve Çözümleri

HataNedeniÇözümü
Tunnel çalışmıyorcredentials.json dosyası eksik veya yanlış yolDosyayı doğru konuma kopyalayın ve izinlerini kontrol edin (chmod 600 ~/.cloudflared/credentials.json).
DNS kayıtları oluşturulmuyorAlan adı Cloudflare’e eklenmemişAlan adınızı Cloudflare’e ekleyin ve DNS kayıtlarını doğrulayın.
Uygulama erişilemiyorHedef port yanlışUygulamanızın çalıştığı portu doğrulayın (netstat -tulnp veya ss -tulnp).
Yavaş performansArka uç hizmeti optimize edilmemişUygulamanızın performansını analiz edin ve gereksiz yükleri azaltın.
Erişim reddediliyorZero Trust politikası engelliyorErişim politikalarınızı gözden geçirin ve kullanıcıları ekleyin.

📌 Sonuç ve Öneriler

Cloudflare Tunnel, uygulamalarınızı güvenli ve ölçeklenebilir bir şekilde yayınlamanın en basit yollarından biridir. Özellikle NAT arkasında çalışan hizmetler için ideal bir çözümdür. İşte bazı öneriler:

Başlangıç olarak basit bir web sunucusu veya API ile başlayın. ✅ Zero Trust ilkelerini uygulayın (erişim politikaları, kimlik doğrulama). ✅ Performansı izleyin ve gerektiğinde optimizasyon yapın. ✅ Güvenlik açıklarını minimize etmek için sadece gerekli hizmetleri yayınlayın. ✅ Düzenli olarak logları ve istatistikleri inceleyin.

Cloudflare Tunnel’ın sunduğu avantajlardan faydalanarak, uygulamalarınızı daha güvenli, daha hızlı ve daha yönetilebilir hale getirebilirsiniz.


🔗 Faydalı Kaynaklar


💬 Yorumlarınızı Paylaşın!

Bu rehberde anlatılan adımları uyguladınız mı? Karşılaştığınız sorunlar veya ek önerileriniz varsa, lütfen yorum bölümünde paylaşın! Ayrıca, Cloudflare Tunnel’ı hangi projelerde kullandığınızı da bizimle paylaşabilirsiniz.

Mutlu yayınlama! 🚀


Yazar: Caner Serbest Kategori: Rehber Tarih: 2024


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