Teknoloji

Linux VPS’te Statik IPv6 Kurulumu

VPS Üzerinde IPv6 Kurulumuna Hazırlık

VPS sunucunuz hâlâ yalnızca IPv4 ile mi çalışıyor? IPv4 adres kaynaklarının sınırlı olması, adres maliyetleri ve IPv6 kullanan erişim ağlarının yaygınlaşması, IPv6 desteğini kapasite planlamasının bir parçası hâline getiriyor. Çift yığın (IPv4 + IPv6), mevcut IPv4 erişimini koruyarak IPv6 üzerinden de hizmet sunmanızı sağlar; performans veya maliyet kazancı ise kullanılan ağlara ve iş yüküne bağlıdır.

Bu rehberde, Linux VPS üzerinde statik IPv6 kurulumunu ve yapılandırmasını Netplan, ifupdown veya NetworkManager kullanan sistemler için ele alacağız: sağlayıcı tarafında IPv6 alımından, işletim sistemi ağ ayarlarına, güvenlik duvarı yapılandırmasından DNS AAAA kayıtlarına ve web sunucusu ayarlarına kadar. Pratik komutlar, örnek konfigürasyonlar ve yaygın hata noktalarıyla yeni bir VPS’te IPv6 kurulumu ve mevcut sunucuda çift yığın (IPv4 + IPv6) yapılandırması için izlenecek adımları açıklayacağız.

IPv6’nın Arka Planı: Neden Şimdi?

IPv6’yı konfigüre etmeye başlamadan önce, neden bu kadar kritik hâle geldiğini netleştirmek faydalı. IPv4 adres kaynaklarının sınırlılığını ve fiyatların rekor seviyelere çıktığı dönemi ele alan IPv4 adres fiyatlarının rekor seviyelere ulaşması yazımız, adres maliyetlerinin planlamadaki önemini gösteriyor; güncel fiyatlar ve bulunabilirlik pazara ve sağlayıcıya göre değişir.

Diğer tarafta, IPv6 benimseme oranlarının artışı kullanıcı trafiğini de etkiliyor; IPv6 trafiğinin payı ülkeye, erişim ağına ve hizmete göre değişiyor. Mobil operatörler, ISS’ler ve CDN’lerde IPv6 desteğinin yaygınlaşması, planlamada şu üç başlığı öne çıkarıyor:

  • Maliyet baskısı: IPv4 için ek IP blokları almak bütçeye ek yük getirebilir.
  • Erişilebilirlik: IPv6 destekleyen istemcilere doğrudan IPv6 erişimi sunabilirsiniz; gecikme ve rota kalitesini iki adres ailesinde ayrı ölçün.
  • Gelecek uyumluluğu: IPv6 desteğini şimdiden planlamak, ileride yalnızca IPv6 üzerinden erişilebilen ağ ve hizmetlerle bağlantı kurmayı kolaylaştırır.

IPv6’yı kavramsal olarak daha detaylı anlamak isterseniz, temel konseptleri giriş seviyesinde anlattığımız IPv6 sunucu nedir? yazısına da göz atabilirsiniz. Bu rehberde ise doğrudan pratiğe, yani VPS düzeyinde kurulum ve yapılandırmaya odaklanacağız.

VPS’inizde IPv6’ya Başlamadan Önce Bilmeniz Gereken Temeller

Yapılandırmaya geçmeden önce, IPv6 adres türleri ve temel kavramları kısaca hatırlayalım. Bu bölüm, özellikle konfigürasyon dosyalarında hangi değerin ne anlama geldiğini aklınızda tutmanız için önemli.

IPv6 adres türleri (kısaca)

  • Global Unicast (GUA): Genel internette yönlendirme için kullanılan adres türüdür; kullanılabilirlik tahsis ve yönlendirmeye bağlıdır. Örnek 2001:db8:1234:5678::10, yalnızca dokümantasyona ayrılmış 2001:db8::/32 bloğundadır ve canlı bağlantıda kullanılmaz.
  • Link-local: Aynı bağlantı üzerinde kullanılır, yönlendiriciler tarafından başka bağlantılara taşınmaz. Ayrılmış önek fe80::/10 olmakla birlikte standart adres biçimi ilk 64 bitte fe80::/64 kullanır. Sağlayıcı gateway olarak örneğin fe80::1 verebilir; doğru arayüzle birlikte belirtilmelidir.
  • ULA (Unique Local Address): Dahili ağlar ve VPN gibi yerel kullanım senaryolarına yönelik adreslerdir; genel internet adresi yerine geçmez.

Prefix ve ağ maskesi

IPv6’da /64, /56 gibi prefix değerleri göreceksiniz. Örneğin:

2001:db8:1234:5678::/64

Bu ifade, ilk 64 bit’in ağ kısmı olduğu bir bloğu ifade eder. VPS’e tek bir adres veya bir adres bloğu tahsis edilebilir; kullanabileceğiniz adresleri ve arayüz prefix uzunluğunu sağlayıcınızdan öğrenin. Yapılandırma için gereken IPv6 Prefix ve IPv6 Gateway bilgilerini DCHost panelinizde kontrol edin; panel alanlarının adları ve sunulan bilgiler değişebilir.

Adım 1: DCHost Panelinde IPv6 Bilgilerinizi Kontrol Edin

İlk adım, VPS’inize gerçekten IPv6 atanmış olduğundan emin olmak. DCHost müşteri panelinizde VPS detay sayfasına girdiğinizde, şu bilgileri kontrol edin; eksikse destek ekibinden isteyin:

  • IPv6 Adresi: Örneğin 2001:db8:1234:5678::10
  • Prefix: Örneğin /64; sağlayıcınızın bildirdiği değeri kullanın
  • IPv6 Gateway: Örneğin fe80::1 gibi bir link-local adres

Eğer burada IPv6 bilgisi görmüyorsanız, destek talebi açarak IPv6 talep edebilirsiniz. IPv6’nın paketinizde ve bulunduğunuz lokasyonda sunulup sunulmadığını, ayrıca sağlayıcı tarafında etkinleştirme gerekip gerekmediğini destek ekibiyle netleştirin.

Adım 2: VPS Üzerinde IPv6 Desteğini Doğrulayın

Sunucunuza SSH ile bağlandıktan sonra, önce çekirdek ve ağ yığını tarafında IPv6’nın devrede olup olmadığını kontrol edelim.

Çekirdekte IPv6 desteği var mı?

lsmod | awk '$1 == "ipv6" {print}'

Bu çıktı yalnızca ipv6 adlı yüklenmiş modülü gösterir. IPv6 çekirdeğe gömülü derlenmişse lsmod listesinde görünmez; boş çıktı tek başına desteğin yokluğunu kanıtlamaz. Çekirdeğin IPv6 desteğini, önyükleme parametrelerini ve aşağıdaki arayüz ayarını birlikte değerlendirin. ipv6.disable=1 ile önyüklemede kapatılmış destek, yalnızca sysctl değişikliğiyle açılmaz; parametrenin düzeltilmesi ve planlı yeniden başlatma gerekir.

sysctl ile IPv6’nın devrede olduğundan emin olun

sysctl net.ipv6.conf.all.disable_ipv6
sysctl net.ipv6.conf.eth0.disable_ipv6

eth0 yerine gerçek arayüz adınızı kullanın. net.ipv6.conf.all.disable_ipv6 = 0 çıktısı tek başına IPv6’nın arayüzde etkin olduğunu göstermez. Arayüze ait disable_ipv6 değeri 0 ise IPv6 işlemleri açıktır; bu, adres ve rota yapılandırmasının tamamlandığı anlamına gelmez. Değer 1 ise ve IPv6’yı bu arayüzde kullanacaksanız, ağ yöneticisinin ayarlarını da kontrol ederek geçici olarak açabilirsiniz:

sudo sysctl -w net.ipv6.conf.eth0.disable_ipv6=0

Kalıcı çekirdek ayarı gerekiyorsa, dağıtımınızın sysctl.d yükleme düzenini kontrol ederek örneğin /etc/sysctl.d/99-vps-ipv6.conf dosyasına aşağıdaki satırı ekleyin. Mevcut /etc/sysctl.conf, /etc/sysctl.d/99-sysctl.conf veya ağ yöneticisi ayarları aynı değeri sonradan değiştirebilir; çelişkileri giderin. Bu adım adres ve gateway tanımının yerine geçmez.

net.ipv6.conf.eth0.disable_ipv6 = 0

Yalnızca düzenlediğiniz dosyayı yükleyin, ardından arayüz değerini yeniden okuyun. Dosya adı verilmeden kullanılan sudo sysctl -p, procps sürümünde varsayılan olarak /etc/sysctl.conf dosyasını okur:

sudo sysctl -p /etc/sysctl.d/99-vps-ipv6.conf
sysctl net.ipv6.conf.eth0.disable_ipv6

Adım 3: Ağ Arayüzüne IPv6 Adresini Tanımlama

Burada dağıtıma göre iki ana senaryoya bakacağız: Ubuntu/Debian (netplan veya interfaces) ve RHEL/AlmaLinux türevleri. Yalnızca sunucunuzda etkin olan ağ yönetim yöntemine ait örneği kullanın. Değişiklikten önce mevcut ağ dosyalarını yedekleyin ve SSH kesilirse geri yükleme yapabileceğiniz konsol erişimini doğrulayın. Aşağıdaki adres, prefix, gateway ve arayüz adı örnektir; bunları kendi tahsis bilgilerinizle değiştirin. Örnekler tek arayüzde statik IPv6 ve doğrudan erişilebilen gateway varsayar. Sağlayıcınız SLAAC, DHCPv6, /128 adres veya özel yönlendirme istiyorsa onun yöntemini kullanın. Mevcut IPv4 adreslerini, rotaları, DNS ayarlarını ve loopback tanımlarını koruyun:

  • IPv6 adresiniz: 2001:db8:1234:5678::10
  • Prefix: /64
  • Gateway: fe80::1
  • Ağ arayüzü adı: eth0 (bazı sistemlerde ens3, ens18 vb. olabilir, ip a ile bakın)

Netplan kullanan Ubuntu ve Debian sistemleri

Ubuntu kurulumunuz Netplan kullanıyorsa, mevcut yapılandırmayı /etc/netplan/01-netcfg.yaml veya bu dizindeki diğer YAML dosyalarında kontrol edin. Aşağıdaki dosya adı örnektir; aynı arayüz için çakışan yeni bir dosya oluşturmak yerine etkin yapılandırmayı düzenleyin. Dosya cloud-init veya sağlayıcı tarafından üretiliyorsa elle yapılan değişiklikler yeniden üretimde kaybolabilir; imajın kalıcı ağ ayarı yöntemini izleyin.

sudo nano /etc/netplan/01-netcfg.yaml

Aşağıdaki örnek IPv4 için DHCP ve IPv6 için statik adres varsayar. Mevcut IPv4 adres, rota, DNS ve renderer ayarlarınızı örnekle körlemesine değiştirmeyin; IPv6 eklerini mevcut yapılandırmanıza uyarlayın:

network:
  version: 2
  renderer: networkd
  ethernets:
    eth0:
      dhcp4: true
      dhcp6: false
      accept-ra: false
      addresses:
        - 2001:db8:1234:5678::10/64
      routes:
        - to: "::/0"
          via: fe80::1
      nameservers:
        addresses:
          - 2001:4860:4860::8888
          - 2001:4860:4860::8844

Burada önemli noktalar:

  • dhcp4: true yalnızca mevcut IPv4 bağlantınız DHCP kullanıyorsa korunur. Statik IPv4 tanımlarınızı veya farklı renderer seçiminizi örnekle değiştirmeyin.
  • dhcp6: false DHCPv6’yı, accept-ra: false ise Router Advertisement kabulünü kapatır. Bu ikisi aynı ayar değildir; örnek IPv6 adresi ve varsayılan rotanın elle verildiği durum içindir.
  • addresses altında tahsis edilmiş adres ve arayüz prefix’i bulunur. Eski gateway6 yerine routes içindeki to: "::/0" ve via varsayılan IPv6 rotasını tanımlar.
  • nameservers satırları genel DNS çözümleyicisi örneğidir. Çalışan DNS listenizi koruyun veya ihtiyaca göre birleştirin; AAAA sorgusu yapmak için DNS sunucusuna mutlaka IPv6 ile bağlanmanız gerekmez.

Dosyayı kaydettikten sonra önce yapılandırmayı üretip sözdizimi hatalarını kontrol edin. SSH üzerinden değişiklik yaparken konsol erişimi hazır olsun; ardından süreli denemeyi başlatın:

sudo netplan generate
sudo netplan try --timeout 120

sudo netplan try ayarı uygular ve belirtilen süre içinde onay bekler. İkinci bir bağlantıdan IPv4/IPv6 erişimini kontrol edip doğruysa onaylayın; onay verilmezse geri almayı dener. Belgelenmiş geri alma sorunları nedeniyle bağlantının ve diskteki dosyaların gerçekten eski hâline döndüğünü konsoldan doğrulayın; otomatik geri dönüşü garanti saymayın. sudo netplan apply ise süreli onay sağlamaz. Planlı yeniden başlatma sonrasında adres, rota ve erişimi tekrar kontrol ederek kalıcılığı doğrulayın.

ifupdown kullanan Debian ve Ubuntu sistemleri

Bu yöntemi yalnızca arayüzünüzü ifupdown yönetiyorsa kullanın. Etkin tanımlar /etc/network/interfaces veya bu dosyanın dahil ettiği dosyalarda olabilir; aynı arayüzü Netplan/NetworkManager ile ayrıca yönetmeyin.

sudo nano /etc/network/interfaces

Bu örnek de IPv4 için DHCP varsayar. Mevcut IPv4 ve loopback tanımlarını koruyarak IPv6 bölümünü etkin arayüz yapılandırmanıza ekleyin:

auto eth0
iface eth0 inet dhcp

iface eth0 inet6 static
    address 2001:db8:1234:5678::10/64
    gateway fe80::1
    accept_ra 0

Bu örnekte IPv6 rotası elle verildiğinden accept_ra 0 kullanılır; RA ile rota alan bağlantılara aynen uygulamayın. Değişikliği, yedek ve konsol erişiminiz hazırken, ifupdown ağ servisini yeniden başlatarak uygulayın. Bu işlem SSH’yi kesebilir:

sudo systemctl restart networking

Dağıtımınız aynı ifupdown servisini service üzerinden yönetiyorsa aşağıdaki alternatif kullanılabilir; iki komutu arka arkaya çalıştırmanız gerekmez:

sudo service networking restart

RHEL, AlmaLinux ve Rocky Linux: NetworkManager

NetworkManager arayüzü yönetiyorsa nmcli kullanın. nmcli connection show ile doğru profili bulun; örnekteki System eth0 adı gerçek profil adınızla değiştirilmelidir. Aynı adlı profiller varsa UUID kullanın. Aşağıdaki statik IPv6 ekleri IPv4 özelliklerini değiştirmez; mevcut IPv6 adres/rota ve DNS ayarlarınız varsa bunlarla birleştirerek uyarlayın. ipv6.never-default açık olmamalı ve çakışan varsayılan rota bulunmamalıdır. Yeniden etkinleştirme SSH’yi kesebilir; konsoldan geri dönüş hazırlığı yapın.

nmcli connection show
sudo nmcli connection modify "System eth0" \
  ipv6.method manual \
  ipv6.addresses 2001:db8:1234:5678::10/64 \
  ipv6.gateway fe80::1
sudo nmcli connection up "System eth0"

Eski ifcfg biçimi ayrı bir alternatiftir: RHEL 9 önceki dosyaları okuyabilir; RHEL 10’da bu biçimin desteği kaldırılmıştır. Türev dağıtımınızda da sürümü ve kurulu ifcfg-rh desteğini doğrulayın. Yalnızca NetworkManager’ın hâlihazırda kullandığı /etc/sysconfig/network-scripts/ifcfg-eth0 gibi bir dosyada, aşağıdaki IPv6 satırlarını mevcut profilinize birleştirin. DEVICE, BOOTPROTO, ONBOOT ve IPv4 ayarları örnekteki DHCP bağlantısına aittir; kendi çalışan değerlerinizi koruyun.

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes

IPV6INIT=yes
IPV6_AUTOCONF=no
DHCPV6C=no
IPV6ADDR=2001:db8:1234:5678::10/64
IPV6_DEFAULTGW=fe80::1

Bu eski dosya yöntemini seçtiyseniz, düzenlenen dosyayı NetworkManager’a yeniden okutun ve doğru profili tekrar etkinleştirin. Dosyayı yüklemek tek başına çalışan bağlantıyı değiştirmez. systemctl restart network komutunu modern NetworkManager kurulumlarına genellemeyin:

sudo nmcli connection load /etc/sysconfig/network-scripts/ifcfg-eth0
sudo nmcli connection up "System eth0"

Adım 4: IPv6 Bağlantısını Test Etme

Konfigürasyonları uyguladıktan sonra, IPv6’nın gerçekten çalıştığını doğrulayalım.

Arayüzde IPv6 adresini görüyor musunuz?

ip -6 addr show dev eth0

Sağlayıcınızın tahsis ettiği global adresi görmelisiniz; 2001:db8:1234:5678::10 yalnızca örnektir. Adreste tentative veya dadfailed durumları varsa Duplicate Address Detection sonucunu inceleyin. Yalnızca fe80:: link-local adresinin görünmesi, genel internet için kullanılacak adresin henüz tanımlanmadığını gösterebilir. Adresin listelenmesi tek başına yönlendirme ve servis erişimini kanıtlamaz.

Gateway’e ping atın

ping6 -c 4 fe80::1%eth0

Link-local gateway’i doğru bağlantıda seçmek için %eth0 arayüz kapsamını kullanın; arayüz adını kendinize göre değiştirin. ping6 bulunmayan iputils kurulumlarında ping -6 kullanılabilir. Echo isteği filtrelenebileceği için yanıtsız ping tek başına ağın bozuk olduğunu kanıtlamaz.

Internet’e IPv6 ile çıkış var mı?

ping6 -c 4 2606:4700:4700::1111
ping6 -c 4 2001:4860:4860::8888

Ve alan adı üzerinden test:

ping6 -c 4 ipv6.google.com

Ayrıca dışarıdan hangi IP ile çıktığınızı görmek için:

curl -6 https://ifconfig.io

İstek başarılıysa hizmet, gördüğü IPv6 çıkış adresini döndürür. Bu testler yalnızca seçilen hedeflere dışarı yönlü erişimi gösterir; VPS’inizdeki web servisinin dışarıdan erişilebilir olduğunu kanıtlamaz. Bunu bağımsız bir IPv6 bağlantısından HTTP/HTTPS isteğiyle ayrıca test edin.

Adım 5: Güvenlik Duvarını IPv6’ya Göre Düzenlemek

Adres yapılandırması doğru olsa da işletim sistemi veya sağlayıcı güvenlik duvarı gelen IPv6 trafiğini engelleyebilir. iptables ve ip6tables kuralları ayrı olabilir; nftables inet ailesindeki kurallar ise iki adres ailesini kapsayabilir. Etkin kuralları, kaynak adres kısıtlarını ve hizmetin dinlediği adresleri birlikte kontrol edin.

UFW kullanıyorsanız IPv6’yı açmayı unutmayın

UFW arayüzün mevcut güvenlik duvarını yönetiyorsa, IPv6 desteğini aşağıdaki dosyada kontrol edin. UFW, firewalld ve elle yazılmış nftables kurallarını aynı arayüzde plansızca üst üste uygulamayın.

sudo nano /etc/default/ufw

Şu satırı kontrol edin:

IPV6=yes

Yeniden yüklemeden önce mevcut kuralları inceleyin. SSH’nin gerçek portu ve izin verilen yönetim kaynakları ile web portlarının iki adres ailesinde de tanımlı olduğundan emin olun; konsol erişimini hazır tutun:

sudo ufw status verbose
sudo ufw show raw

Aşağıdaki örnek, SSH’yi 22 numaralı porttan tüm kaynaklara açmanın uygun olduğu basit bir web sunucusu içindir. SSH için farklı port veya kaynak IP kısıtı kullanıyorsanız kendi eşdeğer kuralınızı koruyun; bu geniş SSH iznini eklemeyin. Gerekli izinleri tanımladıktan sonra etkin UFW’yi yeniden yükleyin:

sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
sudo ufw status verbose

IPV6=yes iken bu adres belirtmeyen port kuralları IPv4 ve IPv6’ya uygulanır; çıktıda (v6) kayıtlarını da doğrulayın. UFW başlangıçta etkin değilse reload yerine, izinleri hazırladıktan sonra sudo ufw enable kullanılır. status tüm çerçeve kurallarını göstermez; gerekli ICMPv6 ve DHCP izinleri için ufw show raw çıktısını da inceleyin.

nftables ile IPv6 kuralları

Güvenlik duvarınızı doğrudan nftables ile yönetiyorsanız, IPv6 için ayrı ip6 aile tablosu veya karma bir inet tablosu kullanabilirsiniz. Detaylı bir güvenlik duvarı kurmak istiyorsanız, nftables ile VPS güvenlik duvarı rehberinde IPv6 kurallarını adım adım anlattık.

Aşağıdaki örnek, tek dış arayüzlü, yönlendirme/container ağı bulunmayan ve çıkış trafiği başka kurallarla engellenmeyen basit bir VPS için giriş zinciridir. SSH portunu, kaynak kısıtlarını ve eth0 adını kendi ortamınıza uyarlayın; çalışan kuralları silip bununla değiştirmeyin. IPv4 DHCP kullanan örnekler için 67→68 izni bulunur; statik IPv4’te kaldırılabilir. DHCPv6 gerekiyorsa yorum satırındaki 547→546 kuralı ayrıca etkinleştirilir.

table inet filter {
  chain input {
    type filter hook input priority 0;

    ct state established,related accept
    iifname "lo" accept
    iifname "eth0" meta nfproto ipv4 udp sport 67 udp dport 68 accept
    # DHCPv6 kullaniliyorsa etkinlestirin:
    # iifname "eth0" meta nfproto ipv6 udp sport 547 udp dport 546 accept

    tcp dport { 22, 80, 443 } accept
    icmp type echo-request accept
    meta l4proto ipv6-icmp accept

    counter drop
  }
}

Bu giriş zinciri izin verilen bağlantıları ve IPv4 ping isteklerini geçirir; meta l4proto ipv6-icmp ise yalnızca ping değil, tüm ICMPv6 türlerini kabul eder. Neighbor Discovery ve Path MTU Discovery için gerekli kontrol trafiğini tümden kesmemek amaçlanır. Daha dar bir ICMPv6 politikası hazırlıyorsanız RFC 4890’daki tür ve kapsam önerilerini değerlendirin. Diğer tablo/zincirler trafiği ayrıca düşürebilir; dosya denetimi, konsoldan kontrollü uygulama ve dışarıdan bağlantı testi birlikte yapılmalıdır.

Adım 6: Web Sunucusunu IPv6’da Dinleyecek Şekilde Ayarlamak

Sunucunuz IPv6 ile internete çıkıyor olabilir; ancak web sitenizin gerçekten IPv6 üzerinden erişilebilir olması için, web sunucusunun da IPv6 adresinde dinleme yapması gerekir.

Nginx’te IPv6 dinlemesi

Sitenizin mevcut Nginx server bloğunu düzenleyin; Debian/Ubuntu’da örnek konum /etc/nginx/sites-available/default olabilir. Aşağıdaki HTTP bloğu örnektir; mevcut uygulama, erişim ve IPv4 ayarlarınızı koruyarak IPv6 dinlemesini ekleyin. Aynı sokete ait çakışan default_server tanımları oluşturmayın.

server {
    listen 80;
    listen [::]:80;
    server_name example.com;
    root /var/www/html;
}

listen [::]:80 IPv6 HTTP soketidir. HTTPS için yalnızca 443 numaralı portu yazmak yetmez: ssl, geçerli sertifika ve özel anahtar tanımları gerekir. Aşağıdaki yollar örnektir; kendi alan adınızın sertifika dosyalarıyla ve çalışan TLS ayarlarınızla birleştirin:

server {
    listen 443 ssl;
    listen [::]:443 ssl;
    server_name example.com;
    root /var/www/html;
    ssl_certificate /etc/ssl/example.com/fullchain.pem;
    ssl_certificate_key /etc/ssl/example.com/privkey.pem;
}

Önce sudo nginx -t ile birleştirilmiş yapılandırmayı kontrol edin; başarılıysa kurulumunuzun servis yöntemiyle yeniden yükleyin ve dışarıdan doğrulayın. IPv6, HTTP/2 veya TLS 1.3 gerektirmez. Bu ek özellikleri yapılandırmak istiyorsanız, Nginx tarafında TLS yapılandırmasını detaylıca anlattığımız TLS 1.3 ve modern şifrelemeyle hızlı ve güvenli HTTPS rehberimize de göz atabilirsiniz.

Apache’de IPv6 dinlemesi

Debian/Ubuntu Apache paketlerinde dinleme ayarları genellikle ports.conf içindedir; diğer dağıtımlarda dosya konumu değişebilir. Mevcut tüm Listen tanımlarını birlikte inceleyin:

sudo nano /etc/apache2/ports.conf

Tüm arayüzlerde HTTP sunan basit bir kurulumda aşağıdaki tek tanım kullanılabilir. IPv6 desteği etkin derleme ve işletim sistemi davranışını, gerçek dinleme soketleri ve dış testlerle doğrulayın:

Listen 80

Alan adına ait mevcut sanal host’u iki adres ailesinde de kullanılacak biçimde düzenleyin. Aynı siteyi sırf IPv6 için ikinci kez tanımlamanız gerekmez:

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html
</VirtualHost>

<VirtualHost *:80> sanal host eşleştirmesidir; kendi başına soket açmaz. Gerçek dinlemeyi Listen belirler. IPv6 soketi IPv4 eşlemeli adresleri kabul ediyorsa Listen 80 ile Listen [::]:80 birlikte çakışabilir. Açık adres bağlamaları gerekiyorsa bunları derleme/işletim sistemi davranışına göre tasarlayın. Debian/Ubuntu’da sudo apache2ctl configtest ve sudo apache2ctl -S ile dosya ve vhost eşleşmesini inceleyin; değişiklikten sonra ss -lnt ve iki adres ailesinden HTTP isteğiyle doğrulayın. HTTPS için ayrıca mevcut SSL sanal host’unu ve sertifikaları yapılandırın.

Adım 7: DNS’te AAAA Kayıtlarını Oluşturmak

AAAA kaydını yayınlamadan önce dışarıdaki IPv6 bağlantılı bir istemciden sitenin HTTP/HTTPS erişimini test edin. Sağlayıcı veya CDN kullanıyorsanız istemciye sunulan adres ile origin bağlantısını ayrı değerlendirin. Ardından DNS’te doğru IPv6 adresini yayınlayın; çalışan A kayıtlarını koruyun.

A ve AAAA kayıtlarının farkı

  • A kaydı: Alan adını bir IPv4 adresine yönlendirir (örnek: 192.0.2.10).
  • AAAA kaydı: Alan adını bir IPv6 adresine yönlendirir (örnek: 2001:db8:1234:5678::10).

DNS tarafındaki temel kayıt türlerini ve sık yapılan hataları detaylandırdığımız DNS kayıtları A’dan Z’ye rehberimiz, özellikle karmaşık DNS senaryolarında işinizi kolaylaştıracaktır.

Temel bir AAAA kaydı örneği

Aşağıdaki kayıtlar DNS sözdizimi örneğidir: example.com ve 2001:db8:1234:5678::10 değerlerini kendi alan adınız ve tahsis edilmiş gerçek IPv6 adresinizle değiştirin.

example.com.  300  IN  AAAA  2001:db8:1234:5678::10

Alt alan adı için:

www.example.com.  300  IN  AAAA  2001:db8:1234:5678::10

DNS panelinizde bu kayıtları ekledikten sonra, istemci tarafında şu komutlarla yanıtı kontrol edebilirsiniz. DNS yanıtı servis bağlantısını kanıtlamaz; ardından curl -6 https://example.com gibi bir HTTPS isteği yapın. Kaydı değiştirir veya geri alırsanız önbellekler önceki TTL süresi boyunca eski yanıtı tutabilir:

dig AAAA example.com

# veya

host -t AAAA example.com

IPv6 ile DNS tarafında yaptığınız küçük bir AAAA kaydının bile sistemi nasıl değiştirdiğini, örnek bir geçiş üzerinden ele aldığımız “Küçük Bir AAAA Kaydı, Büyük Bir Aydınlanma” yazısı da okuma listenizde olsun.

IPv6 ile E-posta, İzleme ve Diğer Servisler

IPv6’yı yalnızca web için kullanmak zorunda değilsiniz. Posta sunucuları, izleme sistemleri, API servisleri ve hatta veritabanı replikasyonu için de IPv6 kullanmak mümkün.

E-posta sunucusu ve IPv6

IPv6 üzerinden posta göndermeden önce alıcı sağlayıcıların DNS, kimlik doğrulama ve itibar koşullarını kontrol edin. PTR, HELO/EHLO, SPF ve engelleme listelerinin farklı rollerini ele alan IPv6 ile e-posta teslimi saha rehberinde bu ayrımları adım adım anlatıyoruz. Özetle:

  • Gönderim IPv6 adresiniz için sağlayıcıdan PTR kaydı isteyin; PTR’nin gösterdiği hostname’in AAAA kaydı aynı adrese dönmelidir (FCrDNS). HELO/EHLO geçerli, çözümlenebilir bir sunucu adı olmalıdır; PTR ile aynı adı kullanmak tutarlılık sağlar ancak bu eşitlik tek başına genel bir SMTP zorunluluğu değildir.
  • MX hedefinin AAAA kaydı, o sunucuya IPv6 üzerinden posta kabul edecekseniz gereklidir. Yalnızca IPv6 ile dışarı posta göndermek için MX hedeflerine AAAA eklemek zorunlu değildir.
  • SPF gönderim adresini veya ilgili altyapıyı yetkilendirmelidir; ip6: mekanizması kullanılabilir. DKIM iletiyi imzalar, DMARC ise alan adı hizalaması ve politikayı değerlendirir; bu iki kayda IP adresi listesi eklenmez.
  • Alıcı politikalarını, port 25 erişimini ve IP itibarını doğrulayın. IPv6 kullanımı teslimatı veya engelleme listelerinden çıkmayı garanti etmez.

Monitoring ve log toplama

Prometheus, Grafana, Loki gibi araçlarda IPv6 kullanırken dinleme adresini, erişim kurallarını ve hedef URL biçimini kontrol edin. Port içeren IPv6 adresleri köşeli parantez ister; günlük ayrıştırıcıları da iki adres ailesini desteklemelidir. Kritik hizmetlerde IPv4 ve IPv6 bağlantılarını ayrı ölçün; IPv4’e otomatik dönüşün IPv6 arızasını gizlemesine izin vermeyin. VPS log yönetimini Loki + Promtail ile nasıl rayına oturtabileceğinizi anlattığımız yazı, IPv4/IPv6 fark etmeksizin genel mimariyi kurarken size rehberlik edecektir.

IPv6-Only VPS Senaryoları ve NAT64/DNS64

IPv6-only VPS, IPv4 tahsis maliyetini bazı iş yüklerinde azaltabilir; toplam maliyet uygulama uyumluluğu ve geçiş altyapısına bağlıdır. NAT64/DNS64, IPv6 istemcinin IPv4 hedeflerine bağlantı başlatmasına yardımcı olur. IPv4 adresini doğrudan kodlayan veya yalnızca IPv4 soketi açan uygulamalar için ek uyumluluk mekanizmaları gerekebilir. IPv4-only ziyaretçilerin IPv6-only sitenize erişmesi ise ayrıca IPv4 kabul eden bir CDN/reverse proxy gibi ön uç gerektirir. Panelin kendi gereksinimlerini de kontrol edin; örneğin cPanel & WHM en az bir IPv4 adresi gerektirir.

Bu senaryoyu teknik detaylarıyla ele aldığımız IPv6-only VPS üzerinde web sitesi yayınlama rehberinde, NAT64/DNS64 mimarisini adım adım kuruyoruz. Sağlayıcınızdan NAT64/DNS64 veya IPv4 ön uç hizmetinin gerçekten sunulup sunulmadığını, protokol kapsamını ve fiyatlandırmasını ayrı doğrulayın.

Yaygın Hatalar ve Sorun Giderme İpuçları

1. IPv6 adresi var, ping yok

Kontrol listesi:

  • ip -6 route çıktısında varsayılan default via <gateway> satırını görüyor musunuz?
  • Gateway’iniz link-local ise, konfigürasyonda doğru arayüzle birlikte tanımlandığından emin olun.
  • Güvenlik duvarınız ICMPv6 trafiğini (özellikle echo-request, echo-reply, Neighbor Discovery ve Path MTU Discovery için Packet Too Big mesajlarını) engellemiyor mu?

2. IPv6 çalışıyor ama site dışarıdan açılmıyor

  • DNS’te AAAA kaydınız doğru adrese işaret ediyor mu?
  • Web sunucunuz doğru IPv6 adresinde dinliyor mu? Nginx’te HTTP için listen [::]:80, HTTPS için TLS ayarlarıyla listen [::]:443 ssl; Apache’de ise uygun Listen ve SSL sanal host tanımları gerekir.
  • Güvenlik duvarı IPv6 80/443 portlarına izin veriyor mu?

https://[2001:db8:1234:5678::10]/ gibi doğrudan IP içeren bir URL, sertifika adı ve SNI nedeniyle farklı sonuç verebilir. DNS yayınını beklemeden gerçek hostname ile HTTPS sınaması yapmak için, dışarıdaki IPv6 istemcide şu örneği kendi alan adınız ve tahsis edilmiş adresinizle kullanın. Sertifika doğrulamasını kapatmayın:

curl -6 --noproxy '*' --resolve 'example.com:443:[2001:db8:1234:5678::10]' https://example.com/

Bu deneme seçtiğiniz sunucuya doğrudan gider. CDN üzerinden sunulan hizmetin istemci yolunu ayrıca test edin.

3. Sadece bazı kullanıcılarda sorun var

Bazen ISS tarafındaki yanlış IPv6 yönlendirmeleri, bozuk MTU değerleri veya hatalı firewall kuralı, sadece belirli bölgelerden gelen IPv6 trafiğini etkileyebilir. Bu gibi durumlarda:

  • Farklı lokasyonlardan traceroute6 çıktıları toplayın.
  • Sunucu genelinde adres ailesi kapatmak yerine istemcide curl -4 ve curl -6 ile aynı endpoint’i ayrı sınayın.
  • CDN veya WAF kullanıyorsanız, onların IPv6 davranışını da inceleyin.

Güvenlik Perspektifinden IPv6

IPv6, adres alanının büyüklüğü sayesinde “rastgele tarama” saldırılarını zorlaştırsa da, güvenlik duvarı ve hardening ihtiyacını ortadan kaldırmaz. Hatta bazı sistemlerde IPv4 için çok sıkı kurallar yazılıp, IPv6 tamamen boş bırakıldığı için daha riskli bir tablo ortaya çıkabiliyor.

Özellikle VPS güvenliği tarafında port kısıtlama, brute-force önleme, mTLS, HTTP güvenlik başlıkları gibi başlıklara daha derinlemesine girmek isterseniz, VPS sunucu güvenliğini kapıyı açık bırakmadan sağlama rehberimiz ve HTTP güvenlik başlıkları rehberimiz iyi tamamlayıcı kaynaklar olacaktır.

Geçişi Tamamlamadan Önce Son Kontroller

Geçişin tamamlanması için tahsis edilmiş IPv6 adresi, doğru ağ yöneticisinde kalıcı ayarlar, çalışır rota, uygun güvenlik duvarı ve IPv6 dinleyen servisler birlikte gerekir. Dışarıdan IPv4 ve IPv6 erişimini doğruladıktan sonra AAAA kaydını yayınlayın; DNS yanıtını, TLS sertifikasını ve uygulama davranışını yeniden kontrol edin. Planlı yeniden başlatma sonrası da adres, rota ve servis testlerini tekrarlayın.

İzleme sisteminde iki adres ailesini ayrı takip edin. Bir sorun çıkarsa yedek yapılandırmaya dönmek ve gerekirse AAAA kaydını geri almak için hazırlıklı olun; DNS önbellekleri nedeniyle kayıt değişikliğinin tüm istemcilere aynı anda ulaşmasını beklemeyin. E-posta için ayrıca PTR, SPF, DKIM/DMARC ve alıcı politikalarını değerlendirin.

Yeni bir VPS veya fiziksel sunucu seçerken DCHost paketinizde IPv6’nın lokasyon ve plan bazında sunulduğunu, adres/prefix ve gateway bilgilerini ve konsol erişimini teyit edin. Böylece rehberdeki örnekleri kendi tahsis ve işletim sistemi koşullarınıza göre uygulayabilirsiniz.

Sıkça Sorulan Sorular

İş yükünüz ve kullanıcılarınız IPv4 ile erişebiliyorsa yalnızca IPv4 ile çalışabilirsiniz. Çift yığın, mevcut IPv4 erişimini koruyarak IPv6 destekleyen istemcilere doğrudan IPv6 seçeneği ekler. Daha iyi hız, güvenlik veya e-posta teslimatı otomatik sonuç değildir; iki ağ yolunu ve servis davranışını ayrı test edin.

İstemciler ve dış bağımlılıklar belirleyicidir. NAT64/DNS64, IPv6 istemcilerden IPv4 hedeflerine bağlantıyı destekler; IPv4-only ziyaretçileri IPv6-only sitenize tek başına ulaştırmaz. Bunun için IPv4 kabul eden CDN veya reverse proxy gibi bir ön uç gerekir. IPv4 adreslerine ya da soketlerine bağımlı uygulamalarda ek uyumluluk çalışması gerekebilir; çift yığın daha geniş doğrudan erişim sağlar.

IPv6 ayarı /etc/default/ufw içindeki IPV6=yes satırıdır. Gerekli SSH ve web izinlerini hazırladıktan sonra etkin UFW’yi yeniden yükleyin; ufw status verbose çıktısında (v6) kurallarını, ufw show raw ile de çerçeve kurallarını inceleyin. Tahsis edilmiş adres, rota, sağlayıcı güvenlik duvarı ve IPv6 dinleyen web servisini doğrulayın. Dışarıdaki IPv6 istemciden hostname ve geçerli sertifikayla HTTPS testi yapın; AAAA kaydı tek başına erişimi kanıtlamaz.

Her kurulumda ağ dosyalarına elle statik adres yazmak gerekmez; sağlayıcı imajı veya panel iş akışı adresi zaten yapılandırmış olabilir. Önce işletim sistemindeki tahsis edilmiş adresi ve rotayı kontrol edin, ardından kullandığınız panel sürümünün IPv6 adres ekleme veya yeniden okuma ve alan adına atama adımlarını izleyin. Servislerin dinleme adreslerini, güvenlik duvarını ve AAAA kayıtlarını ayrıca doğrulayın; panelin yönettiği dosyaları gelişigüzel değiştirmeyin. cPanel & WHM için en az bir IPv4 adresi gerekliliği de devam eder.

IPv6 ek bir erişim yolu açar; güvenlik, bu yoldaki servis ve erişim politikalarına bağlıdır. IPv4 için uyguladığınız kaynak ve port kısıtlarını IPv6’da da doğrulayın. Büyük adres alanını bir güvenlik önlemi saymayın. ICMPv6’yı tümden engellemek Neighbor Discovery ve Path MTU Discovery’yi bozabilir; gerekli kontrol trafiğini ve kullanılıyorsa DHCPv6’yı politikaya dahil edin.
↑