Cloudflare’e Domain Ekleme ve Nameserver Değiştirme

Domain’ini Cloudflare’e taşımak, web altyapını güçlendirmek için atabileceğin en akıllı adımlardan biri. Ücretsiz DDoS koruması, hızlı DNS çözümleme ve merkezi yönetim paneli bir arada geliyor. Ama işin teknik kısmında, özellikle nameserver değişikliği ve DNS kayıtlarının doğru yapılandırılması konusunda dikkat edilmesi gereken birkaç kritik nokta var. Bu yazıda adım adım, gerçek hayatta karşılaştığım senaryolarla birlikte tüm süreci aktaracağım.

Cloudflare’e Domain Eklemeden Önce Yapman Gerekenler

Nameserver değiştirmeden önce mevcut DNS kayıtlarını kaydetmek şart. Bu adımı atlarsan, mail akışın durabilir, subdomain’lerin kaybolabilir ya da aktif servisler erişilemez hale gelebilir. Özellikle uzun süredir kullanılan ve üzerinde onlarca kayıt birikmiş domain’lerde bu risk daha yüksek.

Mevcut DNS kayıtlarını terminalden çekmek için dig komutu en güvenilir yol:

# Tüm DNS kayıt tiplerini sorgula
dig +nocmd example.com ANY +multiline +noall +answer

# Sadece A kayıtlarını gör
dig A example.com +short

# MX kayıtlarını listele
dig MX example.com +short

# TXT kayıtlarını al (SPF, DKIM, domain verification için önemli)
dig TXT example.com +short

# NS kayıtlarını kontrol et
dig NS example.com +short

Bu komutlarla elde ettiğin çıktıyı bir text dosyasına yaz ya da ekran görüntüsü al. Mevcut nameserver’larından tam kayıt listesini çekmek istiyorsan nslookup da kullanabilirsin:

# Mevcut nameserver üzerinden tüm zone'u sorgulamak için
nslookup -type=any example.com ns1.mevcutsağlayıcı.com

# Tüm subdomain'leri görmek istiyorsan zone transfer dene
# (Çoğu sağlayıcı buna izin vermez ama denemek zarar vermez)
dig @ns1.mevcutsağlayıcı.com example.com AXFR

Zone transfer çalışmazsa, sağlayıcının panelinden DNS kayıtlarını export etmeyi dene. cPanel kullanan hosting’lerde genellikle Zone Editor altında export seçeneği bulunur.

Cloudflare Hesabı ve Domain Ekleme Süreci

Cloudflare’de hesap oluşturduktan sonra dashboard’a girip “Add a Site” butonuna tıklıyorsun. Domain adını girip “Add Site” diyorsun. Ardından plan seçimi geliyor. Küçük ve orta ölçekli projeler için Free plan gayet yeterli. Enterprise özelliklerine ihtiyaç duymadıkça para ödemene gerek yok.

Plan seçiminin ardından Cloudflare, mevcut nameserver’larına bakarak DNS kayıtlarını otomatik olarak taramaya çalışıyor. Bu tarama genellikle A, AAAA, CNAME, MX ve TXT kayıtlarını yakalıyor. Ancak şunu söyleyeyim: bu otomatik tarama %100 güvenilir değil. Özellikle wildcard kayıtlar, SRV kayıtları ve bazı özel TXT kayıtlar gözden kaçabiliyor. Bu yüzden az önce manuel olarak çektiğin kayıt listesiyle karşılaştırman gerekiyor.

Cloudflare API üzerinden mevcut DNS kayıtlarını listelemek istersen:

# Cloudflare API ile zone ID'yi bul
curl -X GET "https://api.cloudflare.com/client/v4/zones" 
     -H "Authorization: Bearer API_TOKEN_BURAYA" 
     -H "Content-Type: application/json" | python3 -m json.tool

# Zone ID'yi aldıktan sonra DNS kayıtlarını listele
ZONE_ID="zone_id_buraya"
curl -X GET "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records" 
     -H "Authorization: Bearer API_TOKEN_BURAYA" 
     -H "Content-Type: application/json" | python3 -m json.tool

API token almak için Cloudflare dashboard’unda sağ üst köşedeki profil ikonuna tıklayıp My Profile > API Tokens > Create Token yolunu izle. “Edit zone DNS” template’ini kullanabilirsin.

DNS Kayıtlarını Cloudflare’de Yapılandırma

Otomatik tarama bittikten sonra eksik ya da yanlış kayıtları düzeltmen gerekiyor. En sık karşılaştığım sorunları sıralayayım:

Mail kayıtları eksik gelebilir. Google Workspace, Microsoft 365 ya da başka bir mail sağlayıcısı kullanıyorsan MX kayıtları ve SPF/DKIM TXT kayıtları mutlaka mevcut olmalı. Cloudflare’de mail trafiği için proxy özelliğini kapatman (turuncu bulut yerine gri bulut) gerektiğini unutma. Mail, HTTP proxy üzerinden geçmez.

Proxy ayarı kritik bir detay. Cloudflare’in proxy özelliği (turuncu bulut ikonu) sadece HTTP/HTTPS trafiği için geçerli. Şu kayıt tiplerinde proxy’yi kapatman gerekiyor:

  • MX kayıtları (zaten proxy desteklemez)
  • FTP sunucusu için kullanılan A/CNAME kayıtları
  • Mail sunucusu A/CNAME kayıtları (mail.example.com gibi)
  • VPN, SSH ve benzeri TCP/UDP servisleri
  • Oyun sunucuları ve özel port kullanan uygulamalar

API ile yeni bir DNS kaydı eklemek istersen:

ZONE_ID="zone_id_buraya"
API_TOKEN="api_token_buraya"

# Yeni A kaydı ekle (proxy kapalı)
curl -X POST "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records" 
     -H "Authorization: Bearer ${API_TOKEN}" 
     -H "Content-Type: application/json" 
     --data '{
       "type": "A",
       "name": "mail",
       "content": "1.2.3.4",
       "ttl": 3600,
       "proxied": false
     }'

# SPF TXT kaydı ekle
curl -X POST "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records" 
     -H "Authorization: Bearer ${API_TOKEN}" 
     -H "Content-Type: application/json" 
     --data '{
       "type": "TXT",
       "name": "@",
       "content": "v=spf1 include:_spf.google.com ~all",
       "ttl": 3600,
       "proxied": false
     }'

Nameserver Değişikliği: Domain Kayıt Firmasında Yapılacak Ayarlar

Cloudflare, sana iki nameserver adresi verecek. Bunlar genellikle şu formatta oluyor:

  • aarav.ns.cloudflare.com
  • zara.ns.cloudflare.com

Bu nameserver’lar her hesap için farklı atanıyor. Yani senin nameserver adreslerini başka bir hesapta kullanamazsın. Bu adresleri domain kayıt firmanın (registrar) paneline girmen gerekiyor.

Popüler registrar’larda bu işlemi nasıl yapacağını anlatalım:

GoDaddy’de nameserver değiştirme: Dashboard > My Products > Domain altında ilgili domain’in yanındaki üç nokta menüsüne tıkla > Manage DNS > Nameservers bölümünde “Change” seçeneğini seç > “Enter my own nameservers” seçip Cloudflare’in verdiği iki nameserver’ı gir.

Namecheap’te nameserver değiştirme: Dashboard > Domain List > domain’in yanındaki Manage > Nameservers bölümünde dropdown’dan “Custom DNS” seç > Cloudflare nameserver’larını ekle.

İsim.tr veya benzeri Türk sağlayıcılarda: Genellikle panel üzerinden DNS Ayarları veya Ad Sunucuları bölümüne girip mevcut nameserver’ları silip Cloudflare’inkilerle değiştiriyorsun.

Nameserver değişikliğini yaptıktan sonra propagation sürecini takip etmek için:

# Nameserver değişikliğinin yayılıp yayılmadığını kontrol et
# Farklı DNS resolver'lardan sorgula

# Google DNS'den sorgula
dig NS example.com @8.8.8.8 +short

# Cloudflare DNS'den sorgula
dig NS example.com @1.1.1.1 +short

# OpenDNS'den sorgula
dig NS example.com @208.67.222.222 +short

# Autoritatif nameserver'ı bul ve direkt sorgula
dig NS example.com +trace

Propagation süreci teoride 48 saate kadar uzayabilir ama pratikte çoğu zaman 1 ila 4 saat içinde tamamlanıyor. Türkiye’de ISP’lerin DNS cache süresi biraz daha uzun tutulabiliyor, bu yüzden kendi bağlantından değişikliği geç görebilirsin. Yukarıdaki komutlarla farklı resolver’lardan test ederek gerçek durumu anlayabilirsin.

Cloudflare’de Propagation Doğrulama

Cloudflare dashboard’unda domain’in durumu önce “Pending Nameserver Update” şeklinde görünür. Nameserver’ların propagate olduğunu Cloudflare sistemleri tespit ettiğinde status “Active” hale gelir. Bu kontrol otomatik yapılır ve genellikle birkaç dakikada bir tekrar eden bir check mekanizmasıyla çalışır.

Kendi sisteminden durumu izlemek için basit bir bash scripti yazabilirsin:

#!/bin/bash

DOMAIN="example.com"
EXPECTED_NS1="aarav.ns.cloudflare.com"
EXPECTED_NS2="zara.ns.cloudflare.com"

echo "Nameserver propagation kontrolü başlatıldı: $(date)"
echo "Domain: $DOMAIN"
echo "---"

while true; do
    CURRENT_NS=$(dig NS $DOMAIN @8.8.8.8 +short | sort)
    
    echo "$(date +%H:%M:%S) - Mevcut NS kayıtları:"
    echo "$CURRENT_NS"
    
    if echo "$CURRENT_NS" | grep -qi "cloudflare"; then
        echo ""
        echo "BAŞARILI: Cloudflare nameserver'ları aktif!"
        break
    else
        echo "Henüz propagate olmadı, 5 dakika sonra tekrar kontrol edilecek..."
        echo "---"
        sleep 300
    fi
done

Bu scripti çalıştır ve propagation tamamlandığında seni haberdar etsin.

SSL/TLS Ayarları

Nameserver geçişi tamamlandıktan sonra SSL/TLS ayarlarını gözden geçirmen gerekiyor. Cloudflare dashboard’unda SSL/TLS > Overview sekmesine git.

Dört mod var:

  • Off: HTTPS yok, önerilmez
  • Flexible: Cloudflare ile ziyaretçi arasında HTTPS var ama Cloudflare ile origin sunucu arasında HTTP. Geçici çözüm olarak kullanılabilir.
  • Full: Origin sunucuda da SSL sertifikası var ama geçerlilik kontrolü yapılmaz. Self-signed sertifika yeterli.
  • Full (Strict): Origin sunucuda geçerli, güvenilir bir SSL sertifikası zorunlu. Production için bu mod önerilir.

Eğer origin sunucunda henüz sertifika yoksa Cloudflare’in ücretsiz Origin Certificate özelliğini kullanabilirsin. Bu sertifika sadece Cloudflare ile sunucun arasındaki iletişimi güvence altına alır, ziyaretçiler sertifikayı doğrudan görmez.

Gerçek Dünya Senaryosu: E-Ticaret Sitesi Geçişi

Geçen ay bir e-ticaret müşterisinin domain’ini Cloudflare’e taşırken yaşadığımız sorunu paylaşayım. Müşterinin sitesi hem web hem de POS entegrasyonu için kullanılan API subdomain’lerine sahipti. Cloudflare’e geçişin hemen ardından POS ödemeleri kesildi.

Sorun şuydu: api.example.com kaydı proxy aktif halde geçmişti. POS sistemi, Cloudflare IP’si üzerinden gelen sertifikayı tanımadığı için bağlantıyı reddediyordu. Ayrıca POS sisteminin sabit bir IP whitelist’i vardı ve Cloudflare proxy IP’leri bu listeye dahil değildi.

Çözüm basitti, API subdomain’inin proxy’sini kapattık:

# DNS kaydını bul
curl -X GET "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records?name=api.example.com" 
     -H "Authorization: Bearer ${API_TOKEN}" 
     -H "Content-Type: application/json"

# Record ID'yi al ve proxy'yi kapat
RECORD_ID="record_id_buraya"

curl -X PATCH "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${RECORD_ID}" 
     -H "Authorization: Bearer ${API_TOKEN}" 
     -H "Content-Type: application/json" 
     --data '{"proxied": false}'

Bu değişiklik anında devreye girer çünkü proxy durumu değişince Cloudflare DNS anında gerçek IP’yi döndürmeye başlar. TTL beklemenize gerek kalmaz.

Sık Yapılan Hatalar ve Çözümleri

Email çalışmıyor: MX kayıtları doğru girilmiş olsa bile mail subdomain’i (mail.example.com) proxy aktifse sorun çıkar. Mail sunucusuna işaret eden tüm A kayıtlarında proxy’yi kapat.

www çalışıyor, apex domain çalışmıyor veya tersi: Hem @ (apex) hem de www için kayıt oluşturduğundan emin ol. Apex domain için CNAME kullanamazsın, A kaydı kullanmalısın.

Mixed content uyarıları: Flexible SSL modundayken bazı sayfalar HTTP içerik yükleyebilir. Bunu engellemek için Cloudflare’deki “Always Use HTTPS” ve “Automatic HTTPS Rewrites” özelliklerini aktif et.

Cloudflare’e geçtikten sonra site yavaşladı: Bu paradoks gibi görünse de bazen olur. Genellikle origin sunucunun Cloudflare IP’lerini rate-limit ya da block etmesinden kaynaklanır. Sunucunun .htaccess, nginx.conf ya da firewall kurallarında Cloudflare IP bloğuna erişim izni verilip verilmediğini kontrol et.

Cloudflare’in güncel IP listesini almak için:

# Cloudflare IPv4 listesi
curl -s https://www.cloudflare.com/ips-v4

# Cloudflare IPv6 listesi
curl -s https://www.cloudflare.com/ips-v6

# Nginx için Cloudflare IP'lerini gerçek IP olarak tanımla
# /etc/nginx/conf.d/cloudflare.conf dosyasını oluştur
curl -s https://www.cloudflare.com/ips-v4 | while read ip; do
    echo "set_real_ip_from $ip;"
done > /etc/nginx/conf.d/cloudflare_ips.conf

echo "real_ip_header CF-Connecting-IP;" >> /etc/nginx/conf.d/cloudflare_ips.conf
nginx -t && systemctl reload nginx

Page Rules ve Redirect Yönetimi

Cloudflare’e geçtikten sonra bazı yönlendirme kurallarını da buraya taşıyabilirsin. Örneğin www olmayan trafiği www‘ye yönlendirmek ya da HTTP’yi HTTPS’e yönlendirmek için sunucuda kural yazmak yerine Cloudflare üzerinden halledebilirsin.

Page Rules sekmesi (artık Rules > Redirect Rules olarak güncellendi) üzerinden bu yönlendirmeleri kolayca yapılandırabilirsin. Cloudflare’in kendi CDN edge’inden yapılan bu yönlendirmeler, origin sunucuya hiç trafik gitmeden tamamlanır. Bu hem hız hem de kaynak tasarrufu açısından avantajlı.

Cloudflare Sonrası İzleme ve Doğrulama

Geçiş tamamlandıktan sonra mutlaka şu kontrolleri yap:

# Site HTTP yanıt kodunu kontrol et
curl -I https://example.com

# Cloudflare'den gelip gelmediğini doğrula (CF-RAY header'ı olmalı)
curl -I https://example.com | grep -i "cf-ray|server|cf-cache"

# SSL sertifikasını kontrol et
echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null 
| openssl x509 -noout -issuer -subject -dates

# DNS çözümleme süresini ölç
time dig A example.com @1.1.1.1

Cloudflare üzerinden gelen yanıtlarda CF-RAY header’ı görüyorsan geçiş başarılı demektir. Server: cloudflare değeri de bunu doğrular. SSL sertifikası issuer’ında “Cloudflare” yazıyorsa proxy aktif ve çalışıyor demek.

Sonuç

Cloudflare’e domain taşımak, doğru yapıldığında gerçekten zahmetsiz bir işlem. Kritik olan noktalar şunlar: geçişten önce mevcut DNS kayıtlarını tam ve eksiksiz listelemek, proxy ayarlarını servis tiplerine göre doğru yapılandırmak, mail altyapını korumak ve geçiş sonrası tüm servisleri teker teker test etmek.

En çok zaman kaybettiren hatalar genellikle aceleyle yapılan geçişlerde ortaya çıkıyor. Özellikle üretim ortamındaki domain’ler için geçişi mesai saatleri dışında, düşük trafikli bir zaman diliminde yapmak ve propagation süresince monitoring tutmak iyi bir pratik. Free plan bile çoğu kullanım senaryosu için fazlasıyla yeterli, üstüne ücretsiz DDoS koruması ve CDN kazanıyorsun. Nameserver değişikliği bir kez yapıldıktan sonra DNS yönetimi çok daha kolay hale geliyor, güvenle söyleyebilirim.

Bir yanıt yazın

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