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ı
- Bir Cloudflare hesabına sahip olmalısınız. Cloudflare’e kaydolabilirsiniz.
- Bir alan adınız olmalı ve bu alan adınız Cloudflare DNS’e yönlendirilmiş olmalıdır. (Eğer henüz yapmadıysanız, Cloudflare’e alan adınızı ekleyin.)
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) veya443(HTTPS) - Bir API hizmeti:
3000,8080, vb. - Bir veri tabanı arayüzü:
5432(PostgreSQL),3306(MySQL), vb.
- Bir web sunucusu:
🚀 Cloudflare Tunnel Kurulumu: Adım Adım
Adım 1: Cloudflare Tunnel Oluşturma
-
Cloudflare Dashboard’a giriş yapın: https://dash.cloudflare.com
-
Sol menüden
Zero Trust>Access>Tunnelsbölümüne gidin. -
Create a Tunnelbutonuna tıklayın.
-
Tunnel adını girin: Örneğin,
my-web-server-tunnel. -
Save tunnelbutonuna 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:
- Cloudflare Dashboard > Zero Trust > Access > Tunnels
- Tunnel listenizde ilgili Tunnel’ı seçin.
Tunnel IDalanı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)
-
Servis dosyasını oluşturun:
sudo nano /etc/systemd/system/cloudflared.service -
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 -
Servisi etkinleştirin ve başlatın:
sudo systemctl daemon-reload sudo systemctl enable cloudflared sudo systemctl start cloudflared -
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.
-
Cloudflare Dashboard > DNS bölümüne gidin.
-
Add recordbutonuna tıklayın. -
Aşağıdaki gibi bir kayıt ekleyin:
- Type:
CNAME - Name:
web.example.com(veyaapi.example.com) - Target:
<TUNNEL_ID>.cfargotunnel.com - Proxy status:
Proxied(Cloudflare’in CDN’inden faydalanmak için)

- Type:
-
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:
- Zero Trust > Access > Applications bölümüne gidin.
Add an applicationbutonuna tıklayın.- Uygulama adını ve URL’sini girin (örneğin,
https://web.example.com). - Kullanıcıları ve grupları ekleyin (örneğin, sadece şirket e-postası olan kullanıcılar).
- 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-controlbaş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
psqlCLI).
❌ Yaygın Hatalar ve Çözümleri
| Hata | Nedeni | Çözümü |
|---|---|---|
| Tunnel çalışmıyor | credentials.json dosyası eksik veya yanlış yol | Dosyayı doğru konuma kopyalayın ve izinlerini kontrol edin (chmod 600 ~/.cloudflared/credentials.json). |
| DNS kayıtları oluşturulmuyor | Alan adı Cloudflare’e eklenmemiş | Alan adınızı Cloudflare’e ekleyin ve DNS kayıtlarını doğrulayın. |
| Uygulama erişilemiyor | Hedef port yanlış | Uygulamanızın çalıştığı portu doğrulayın (netstat -tulnp veya ss -tulnp). |
| Yavaş performans | Arka uç hizmeti optimize edilmemiş | Uygulamanızın performansını analiz edin ve gereksiz yükleri azaltın. |
| Erişim reddediliyor | Zero Trust politikası engelliyor | Eriş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
- Cloudflare Tunnel Resmi Dokümantasyonu
- Cloudflare Zero Trust
- cloudflared GitHub Deposu
- Cloudflare DNS Kayıt Türleri Rehberi
💬 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.