Cloudflare DNS Kayıtları Nasıl Eklenir: A, AAAA, CNAME, MX ve TXT Rehberi

Cloudflare’e domain ekledikten sonra pek çok sistem yöneticisinin ilk duraksadığı yer DNS kayıtlarının yapılandırılması oluyor. Arayüz yeterince sezgisel olsa da A mı eklemeliyim, CNAME mi diye düşünmek, TTL değerini ne yapmalıyım, proxy açık mı kapalı mı olmalı gibi sorular kafayı karıştırabiliyor. Bu yazıda Cloudflare panelinde karşılaşacağın tüm temel DNS kayıt türlerini gerçek dünya senaryolarıyla birlikte inceleyeceğiz.

Cloudflare DNS Yönetimine Genel Bakış

Cloudflare’e bir domain eklediğinde, nameserver’larını Cloudflare’in NS kayıtlarına yönlendiriyorsun. Bu noktadan itibaren tüm DNS yönetimini Cloudflare panelinden yapıyorsun. Sol menüden DNS > Records sekmesine girdiğinde mevcut kayıtları görüyor, yeni ekleyebiliyorsun.

Cloudflare’in DNS yönetiminde dikkat etmen gereken iki önemli kavram var:

  • Proxy Durumu (Turuncu Bulut): Trafiği Cloudflare’in CDN ve güvenlik katmanından geçirir. Gerçek sunucu IP adresin gizlenir.
  • DNS-Only (Gri Bulut): Sadece DNS çözümlemesi yapar, trafik doğrudan sunucuna gider. Gerçek IP adresin görünür olur.

Şimdi her kayıt türünü tek tek inceleyelim.

A Kaydı: IPv4 Adresi Yönlendirme

A kaydı, bir domain adını IPv4 adresine bağlar. En temel ve en sık kullandığın kayıt türü budur.

Senaryo: Web Sunucusuna Yönlendirme

Diyelim ki example.com ve www.example.com adreslerini 203.0.113.10 IP’sindeki web sunucuna yönlendirmek istiyorsun.

Cloudflare panelinde Add record butonuna tıklıyorsun ve şu değerleri giriyorsun:

  • Type: A
  • Name: @ (kök domain için)
  • IPv4 address: 203.0.113.10
  • Proxy status: Proxied (turuncu bulut)
  • TTL: Auto

www subdomain’i için de aynı işlemi yapacaksın ama Name alanına www yazacaksın.

Cloudflare API üzerinden de bu işlemi yapabilirsin. Özellikle onlarca domain yönetiyorsan API kullanmak çok daha pratik:

# Zone ID ve API token'ını ayarla
ZONE_ID="buraya_zone_id"
API_TOKEN="buraya_api_token"

# A 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": "A",
    "name": "example.com",
    "content": "203.0.113.10",
    "ttl": 1,
    "proxied": true
  }'

Burada "ttl": 1 değeri “Auto” anlamına geliyor. Proxied kayıtlarda TTL zaten Cloudflare tarafından yönetilir.

Wildcard A Kaydı

Tüm subdomainleri tek IP’ye yönlendirmek istiyorsan wildcard kullanırsın:

# Wildcard A kaydı ekleme
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": "*.example.com",
    "content": "203.0.113.10",
    "ttl": 300,
    "proxied": false
  }'

Wildcard kayıtlar Cloudflare’de proxy destekli çalışıyor, ancak bazı plan kısıtlamaları olabiliyor. Free planda wildcard proxy desteği sınırlı.

AAAA Kaydı: IPv6 Adresi Yönlendirme

AAAA kaydı, A kaydının IPv6 versiyonu. Yapısal olarak tamamen aynı çalışır, sadece IPv6 adresi kullanılır.

Senaryo: Dual-Stack Web Sunucusu

Sunucunun hem IPv4 hem de IPv6 adresi varsa her ikisi için de kayıt oluşturman gerekiyor. Bu “dual-stack” yapılandırma deniyor.

# AAAA kaydı ekleme
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": "AAAA",
    "name": "example.com",
    "content": "2001:db8::1",
    "ttl": 1,
    "proxied": true
  }'

Cloudflare paneleden AAAA kaydı eklemek de A kaydıyla aynı, sadece Type alanında AAAA seçiyorsun ve IPv6 adresini giriyorsun.

Önemli not: Eğer sunucun gerçekten IPv6 dinlemiyorsa AAAA kaydı ekleme. Bağlantı sorunlarına yol açar. Önce sunucunda IPv6’nın aktif olduğunu kontrol et:

# Sunucuda IPv6 bağlantı kontrolü
ip -6 addr show
# veya
curl -6 https://ifconfig.me

CNAME Kaydı: Alan Adı Takma Adı

CNAME kaydı bir domain adını başka bir domain adına yönlendirir. IP adresi vermek yerine başka bir hostname gösteriyorsun.

Senaryo: www’yi Apex Domain’e Yönlendirme

En klasik kullanım www.example.com‘u example.com‘a yönlendirmek:

  • Type: CNAME
  • Name: www
  • Target: example.com
  • Proxy status: Proxied
  • TTL: Auto

Bu yapılandırmada biri www.example.com‘a girdiğinde Cloudflare bunu example.com‘un A kaydına çözümler.

Senaryo: Üçüncü Parti Servis Entegrasyonu

Diyelim ki GitHub Pages kullanıyorsun ya da Netlify, Vercel veya başka bir platform. Bu platformlar sana genellikle bir hostname veriyor ve sen kendi subdomain’ini bu hostname’e CNAME ile yönlendiriyorsun.

Örneğin GitHub Pages için:

# GitHub Pages CNAME kaydı
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": "CNAME",
    "name": "blog",
    "content": "kullanici-adi.github.io",
    "ttl": 300,
    "proxied": false
  }'

Burada blog.example.com‘u kullanici-adi.github.io‘ya yönlendirmiş olduk. GitHub Pages gibi servislerde proxy’yi kapatman gerekebiliyor çünkü platform sertifika doğrulaması yaparken Cloudflare proxy takılabilir.

CNAME Flattening Nedir?

Cloudflare’in ilginç özelliklerinden biri CNAME Flattening. Normal DNS standardında kök domain (@) için CNAME ekleyemezsin, çünkü RFC standartlarına aykırı. Ama Cloudflare bunu otomatik olarak çözüyor: example.com‘a CNAME eklemeye çalışırsan Cloudflare arka planda bunu A kaydına dönüştürüp sunuyor. Bu özelliğe “APEX CNAME” ya da “CNAME Flattening” deniyor.

MX Kaydı: E-posta Yönlendirme

MX (Mail Exchanger) kaydı, bir domain için e-posta sunucusunu belirtir. Mail sunucunun nerede olduğunu dünyaya duyurur.

Senaryo: Google Workspace (Gmail) MX Kayıtları

Google Workspace kullanıyorsan Google’ın verdiği MX kayıtlarını eklemen gerekiyor. MX kayıtlarının kesinlikle proxy olmaması gerekiyor, DNS-only olmalı:

# Google Workspace MX kayıtları - Script ile toplu ekleme
ZONE_ID="buraya_zone_id"
API_TOKEN="buraya_api_token"

# Önce eski MX kayıtlarını listele ve sil (varsa)
OLD_MX=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records?type=MX" 
  -H "Authorization: Bearer ${API_TOKEN}" 
  -H "Content-Type: application/json")

echo "Mevcut MX kayıtları:"
echo $OLD_MX | python3 -m json.tool

# Google Workspace MX kayıtlarını ekle
declare -A MX_RECORDS=(
  ["aspmx.l.google.com"]=1
  ["alt1.aspmx.l.google.com"]=5
  ["alt2.aspmx.l.google.com"]=5
  ["alt3.aspmx.l.google.com"]=10
  ["alt4.aspmx.l.google.com"]=10
)

for mx_host in "${!MX_RECORDS[@]}"; do
  priority=${MX_RECORDS[$mx_host]}
  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": "MX",
      "name": "example.com",
      "content": "${mx_host}",
      "priority": ${priority},
      "ttl": 3600,
      "proxied": false
    }"
  echo "Eklendi: ${mx_host} (Priority: ${priority})"
done

MX Kaydında Öncelik (Priority)

MX kayıtlarında öncelik değeri düşük olan sunucu önce denenir. Yani priority 1 olan en yüksek öncelikli, en önce denenir. Birden fazla MX kaydın varsa mail sunucusu sırayla dener.

  • Priority 1: Birincil mail sunucusu, her zaman önce denenir
  • Priority 5-10: Yedek mail sunucuları
  • Priority 10+: Üçüncül yedekler

Panel üzerinden eklerken Priority alanını doğru girdiğine emin ol. Yanlış priority çok ciddi mail sorunlarına yol açar.

TXT Kaydı: Metin Tabanlı Doğrulama

TXT kaydı domain hakkında metin tabanlı bilgi barındırır. En yaygın kullanım alanları SPF, DKIM, DMARC ve domain sahipliği doğrulaması.

SPF Kaydı Ekleme

SPF (Sender Policy Framework) hangi sunucuların senin adına mail gönderebileceğini belirtir. Spam engelleme için kritik öneme sahip:

# SPF TXT kaydı ekleme
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": "example.com",
    "content": "v=spf1 include:_spf.google.com include:sendgrid.net ip4:203.0.113.10 ~all",
    "ttl": 3600,
    "proxied": false
  }'

SPF kaydında sık kullanılan parametreler:

  • v=spf1: SPF versiyonu, her zaman böyle başlar
  • include:domain.com: O domain’in SPF kaydını dahil et
  • ip4:x.x.x.x: Bu IPv4 adresine izin ver
  • ip6:x:x::x: Bu IPv6 adresine izin ver
  • ~all: Listede olmayanlar şüpheli işaretle (soft fail)
  • -all: Listede olmayanları reddet (hard fail)
  • +all: Herkese izin ver (hiç kullanma!)

DKIM Kaydı Ekleme

DKIM kaydı oldukça uzun olabiliyor. Google Workspace için admin panelinden aldığın public key’i TXT olarak ekliyorsun:

# DKIM TXT kaydı - Google Workspace örneği
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": "google._domainkey.example.com",
    "content": "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA...",
    "ttl": 3600,
    "proxied": false
  }'

DKIM için name alanına dikkat et: selector._domainkey.example.com formatında olmalı. Google için selector genellikle google, Sendgrid için s1 veya s2 oluyor.

DMARC Kaydı Ekleme

DMARC, SPF ve DKIM başarısız olduğunda ne yapılacağını belirtir:

# DMARC TXT kaydı
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": "_dmarc.example.com",
    "content": "v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; pct=100",
    "ttl": 3600,
    "proxied": false
  }'

DMARC politika seçenekleri:

  • p=none: Sadece raporla, hiçbir şey yapma (test aşaması için)
  • p=quarantine: Şüpheli mailleri spam klasörüne gönder
  • p=reject: Şüpheli mailleri tamamen reddet (en sıkı)

Domain Sahipliği Doğrulama

Google Search Console, SSL sertifika servisleri, veya başka platformlar domain sahipliğini doğrulamak için TXT kaydı isteyebilir:

# Domain doğrulama TXT kaydı
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": "example.com",
    "content": "google-site-verification=abc123XYZdefGHI456",
    "ttl": 300,
    "proxied": false
  }'

Toplu DNS Kayıt Yönetimi

Birden fazla domain yönetiyorsan tek tek panel kullanmak çok zaman alıyor. İşte tüm zone’daki DNS kayıtlarını listeleyip yönetebileceğin bir script:

#!/bin/bash
# Cloudflare DNS kayıt yönetim scripti

API_TOKEN="buraya_api_token"
ZONE_ID="buraya_zone_id"

# Tüm DNS kayıtlarını listele
list_records() {
  echo "=== DNS Kayıtları ==="
  curl -s -X GET 
    "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records?per_page=100" 
    -H "Authorization: Bearer ${API_TOKEN}" 
    -H "Content-Type: application/json" | 
    python3 -c "
import json, sys
data = json.load(sys.stdin)
for record in data['result']:
    print(f"Type: {record['type']:<6} Name: {record['name']:<40} Content: {record['content']:<40} Proxy: {record.get('proxied', False)}")
"
}

# Belirli tipte kayıtları filtrele
filter_records_by_type() {
  local TYPE=$1
  echo "=== ${TYPE} Kayıtları ==="
  curl -s -X GET 
    "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records?type=${TYPE}" 
    -H "Authorization: Bearer ${API_TOKEN}" 
    -H "Content-Type: application/json" | 
    python3 -m json.tool
}

# Kayıt sil
delete_record() {
  local RECORD_ID=$1
  curl -s -X DELETE 
    "https://api.cloudflare.com/client/v4/zones/${ZONE_ID}/dns_records/${RECORD_ID}" 
    -H "Authorization: Bearer ${API_TOKEN}" 
    -H "Content-Type: application/json"
  echo "Kayıt silindi: ${RECORD_ID}"
}

# Kullanım
list_records
# filter_records_by_type "MX"
# delete_record "kayit_id_buraya"

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

Hata 1: MX Kaydında Proxy Açık

MX kayıtlarında proxy’yi açarsan Cloudflare seni zaten uyarır ve seçeneği engeller. Mail trafiği TCP 25 üzerinden geçer ve Cloudflare bu portu proxy’lemez. Ama yine de bazen karışıklık oluyor, özellikle subdomain mail yönlendirmelerinde.

Hata 2: CNAME Loop

Eğer a.example.com‘u b.example.com‘a, b.example.com‘u da a.example.com‘a yönlendirirsen sonsuz döngü oluşur. DNS çözümlemesi başarısız olur. Cloudflare genellikle bunu engeller ama dikkatli ol.

Hata 3: TTL Yanlış Yapılandırması

Değişiklik yapacaksan önce TTL’yi düşür, değişikliği yaptıktan sonra tekrar yükselt. Aksi halde eski kayıt cache’de uzun süre kalır.

  • Değişiklik öncesi: TTL’yi 120 saniyeye çek
  • Birkaç saat bekle (eski TTL süresince)
  • Değişikliği yap
  • Değişiklik oturdu mu doğrula
  • TTL’yi tekrar 3600’e çıkar

Hata 4: SPF’de Birden Fazla TXT Kaydı

Bir domain için sadece bir SPF kaydı olmalı. Birden fazla SPF kaydı varsa mail doğrulama başarısız olur. Birden fazla servis varsa hepsini tek bir SPF kaydında birleştir:

v=spf1 include:_spf.google.com include:sendgrid.net ip4:203.0.113.10 ~all

DNS Kayıtlarını Test Etme

Kayıtları ekledikten sonra doğrulamak için şu araçları kullan:

# A kaydı sorgusu
dig A example.com @8.8.8.8

# MX kaydı sorgusu
dig MX example.com @1.1.1.1

# TXT kaydı sorgusu (SPF kontrolü)
dig TXT example.com @8.8.8.8

# DMARC kontrolü
dig TXT _dmarc.example.com @8.8.8.8

# DKIM kontrolü
dig TXT google._domainkey.example.com @8.8.8.8

# CNAME kontrolü
dig CNAME www.example.com @1.1.1.1

# Cloudflare proxy kontrolü - gerçek IP'yi görmek için
curl -I https://example.com | grep -i "cf-ray"

Online araçlardan da yararlanabilirsin:

  • dnschecker.org: Global DNS propagasyonunu kontrol eder
  • mxtoolbox.com: MX, SPF, DKIM, DMARC için kapsamlı test
  • toolbox.googleapps.com/apps/checkmx/: Google Workspace mail ayarları doğrulama
  • 1.1.1.1: Cloudflare’in kendi DNS test aracı

Sonuç

Cloudflare DNS yönetimi ilk bakışta karmaşık görünse de her kayıt türünün net bir amacı var. Özetle:

  • A ve AAAA: Doğrudan IP yönlendirme, web sunucuları için temel kayıtlar
  • CNAME: Domain takma adı, üçüncü parti servis entegrasyonlarında sık kullanılır
  • MX: Mail yönlendirme, kesinlikle proxy olmadan kullanılmalı
  • TXT: SPF, DKIM, DMARC ve domain doğrulama, mail güvenliğinin temeli

API üzerinden yönetim, özellikle çok domain’li ortamlarda seni çok kurtaracak. Bir kez iyi bir script yazarsan tüm zone’ları dakikalar içinde yapılandırabilirsin. Mail kayıtlarını ekledikten sonra mxtoolbox.com ile mutlaka doğrula, çünkü yanlış yapılandırılmış mail kayıtları kritik iş maillerinin kaybolmasına neden olabilir.

Proxy ayarına da her kayıt için ayrı ayrı dikkat et. Web trafiği için proxy Cloudflare’in tüm avantajlarından faydalandırır ama mail, FTP veya özel protokoller için proxy’yi kapalı tutman gerekiyor.

Bir yanıt yazın

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