Linux DNS Ayarları: Ubuntu, Debian ve AlmaLinux'ta DNS Değiştirme
Linux DNS ayarları dağıtım dağıtım: resolv.conf tuzağı, Ubuntu'da netplan ve resolvectl ile kalıcı DNS değiştirme, AlmaLinux ve Rocky Linux'ta nmcli, Debian'da resolv.conf, DNS önbelleğini temizleme ve VDS'te erişimi kaybetmemek için önlemler.

Linux'ta DNS ayarı denince akla ilk gelen /etc/resolv.conf dosyasıdır; ama güncel Ubuntu, Debian ve AlmaLinux sürümlerinde bu dosyayı elle düzenlemek çoğu zaman işe yaramaz, değişiklik ilk yeniden başlatmada ya da ağ yenilendiğinde silinir. Bu rehberde Linux DNS ayarları konusunu dağıtım dağıtım ele alıyoruz: sisteminizin DNS'i hangi bileşenle yönettiğini nasıl anlarsınız, Ubuntu'da DNS değiştirme (netplan ve resolvectl), AlmaLinux ve Rocky Linux'ta nmcli, Debian'da klasik yöntem, DNS önbelleğini temizleme ve değişikliği doğrulama. VDS üzerinde çalışıyorsanız sunucuya erişimi kaybetmemek için alınacak önlemleri de anlattık.
Terminal görüntüleri Ubuntu 24.04 çalışan gerçek bir sunucudan alınmıştır; sunucu adı ve IP adresleri maskelenmiş, 203.0.113.x örnek adresleriyle değiştirilmiştir. Komutları kendi sisteminizde root olarak ya da başına sudo ekleyerek çalıştırın.
Önce Sisteminizin DNS'i Nasıl Yönettiğini Bulun
Linux'ta DNS ayarını yapan tek bir program yoktur. Dağıtıma ve kurulum türüne göre şu üç yapıdan biriyle karşılaşırsınız:
| Sistem | DNS'i yöneten | Ayar yeri |
|---|---|---|
| Ubuntu Server 18.04 ve sonrası | systemd-resolved + netplan | /etc/netplan/*.yaml |
| Ubuntu Desktop | NetworkManager + systemd-resolved | Ağ ayarları veya nmcli |
| AlmaLinux, Rocky Linux, RHEL 8/9 | NetworkManager | nmcli |
| Debian (statik IP'li sunucu) | Klasik dosya | /etc/resolv.conf |
Hangisinin sizde çalıştığını anlamak için iki komut yeterlidir:
ls -l /etc/resolv.conf
systemctl is-active systemd-resolved NetworkManager

/etc/resolv.confdosyası../run/systemd/resolve/stub-resolv.confadresine giden bir sembolik bağlantı ise ve içindenameserver 127.0.0.53yazıyorsa sisteminiz systemd-resolved kullanıyor. Buradaki127.0.0.53gerçek DNS sunucunuz değil, sunucunun içindeki yerel önbellekli çözümleyicidir.- Dosyanın başında
# Generated by NetworkManageryazıyorsa DNS'i NetworkManager yönetiyor. - Dosya sıradan bir dosyaysa (bağlantı değilse) ve başında bir "otomatik oluşturuldu" uyarısı yoksa klasik yöntemle doğrudan düzenlenebilir.
resolv.conf tuzağı: neden elle düzenlenmemeli?
Ekran görüntüsündeki dosyanın ilk satırı açıkça uyarır: "Do not edit." systemd-resolved veya NetworkManager bu dosyayı her ağ değişikliğinde yeniden yazar. Elle eklediğiniz nameserver 1.1.1.1 satırı bir süre çalışır gibi görünür, sonra kaybolur. İnternette sık önerilen chattr +i /etc/resolv.conf (dosyayı değiştirilemez yapmak) ise sorunu gizler; sistem güncellemelerinde ve ağ yapılandırmasında beklenmedik hatalara yol açar. Doğru yol, DNS'i yöneten bileşenin kendi ayarından değiştirmektir.
Mevcut DNS Sunucularını Görme
systemd-resolved kullanan sistemlerde (Ubuntu) gerçek DNS sunucularını resolvectl gösterir:
resolvectl status
resolvectl dns

Çıktıdaki Link 2 (ens192) satırı ağ arayüzünüzü, Current DNS Server o anda kullanılan sunucuyu, DNS Servers tanımlı tüm sunucuları gösterir. Arayüz adını (burada ens192; sizde eth0, ens18 gibi olabilir) bir sonraki adımda kullanacaksınız. NetworkManager kullanan sistemlerde aynı bilgiyi nmcli device show | grep IP4.DNS verir. Ubuntu 18.04 gibi eski sürümlerde resolvectl yoktur; aynı bilgi için systemd-resolve --status komutunu kullanın.
Ubuntu'da DNS Değiştirme: netplan ile Kalıcı Ayar
Ubuntu Server'da ağ ayarları /etc/netplan/ klasöründeki YAML dosyalarında durur. Kalıcı DNS ayarı burada yapılır.
1. Dosyayı bulun ve yedeğini alın:
ls /etc/netplan/
sudo cp /etc/netplan/00-installer-config.yaml /root/netplan-yedek.yaml
Yedeği /etc/netplan/ klasörünün içine almayın. Bu klasördeki her .yaml dosyası okunur; aynı içerikte iki dosya çakışmaya yol açar. Dosya adınız farklı olabilir (50-cloud-init.yaml, 01-netcfg.yaml gibi).
2. Dosyayı açın ve nameservers bölümünü düzenleyin:
sudo nano /etc/netplan/00-installer-config.yaml

Statik IP'li bir sunucu için güncel netplan sözdizimiyle örnek dosya şöyledir (girintiler boşlukla yapılır, sekme kullanılmaz):
network:
version: 2
ethernets:
ens192:
addresses:
- 203.0.113.10/24
routes:
- to: default
via: 203.0.113.1
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
Yalnızca nameservers altındaki addresses satırını değiştirin; IP adresi (addresses) ve ağ geçidi (routes) satırlarına dokunmayın. Eski kurulumlarda ekran görüntüsündeki gibi gateway4: satırı bulunabilir. Bu anahtar artık önerilmiyor ve netplan uyarı verir, ama çalışmaya devam eder; yalnızca DNS değiştirecekseniz onu da olduğu gibi bırakın.
IP adresini DHCP ile alan bir sistemde DHCP'nin verdiği DNS'i yok sayıp kendi adreslerinizi kullanmak için arayüzün altına şunu ekleyin:
dhcp4: true
dhcp4-overrides:
use-dns: false
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
3. Ayarı güvenli şekilde uygulayın:
sudo netplan try
netplan try yeni ayarı uygular ve 120 saniye onay bekler. Bağlantınız sorunsuzsa Enter'a basarak kalıcı yaparsınız. Bir hata yüzünden SSH bağlantınız koparsa hiçbir şey yapmanıza gerek kalmaz; süre dolunca eski ayara kendiliğinden döner. Bu yüzden uzaktaki bir sunucuda netplan apply yerine önce netplan try kullanın.
4. Kontrol edin:
resolvectl dns
Dosyanın başında This file is generated from information provided by the datasource. Changes to it will not persist gibi bir uyarı varsa netplan dosyasını cloud-init yönetiyordur ve yeniden başlatmada eski hâline döner. Bu durumda /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg dosyasına network: {config: disabled} satırını yazarak cloud-init'in ağ ayarını yönetmesini kapatın, sonra netplan dosyasını düzenleyin.
Geçici DNS değişikliği: resolvectl
Bir sorunu test etmek için DNS'i yeniden başlatmaya kadar geçerli olacak şekilde değiştirebilirsiniz:
sudo resolvectl dns ens192 1.1.1.1 8.8.8.8
sudo resolvectl revert ens192
İlk komut ens192 arayüzünün DNS'ini anında değiştirir, ikincisi geri alır. Bu ayar kalıcı değildir; ağ yenilendiğinde netplan'daki değerlere döner.
Tüm arayüzler için genel DNS: resolved.conf
Masaüstü sistemlerde veya birden çok arayüzü olan makinelerde genel bir DNS tanımlamak için /etc/systemd/resolved.conf.d/dns.conf dosyası oluşturabilirsiniz:
[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=9.9.9.9
Ardından sudo systemctl restart systemd-resolved çalıştırın. Bu genel adresler, arayüzlere netplan veya DHCP ile gelen adreslerle birlikte kullanılır; sunucularda en net sonuç için DNS'i netplan'da tanımlamanızı öneririz.
AlmaLinux, Rocky Linux ve RHEL'de DNS Değiştirme: nmcli
RHEL tabanlı dağıtımlarda ağı NetworkManager yönetir ve /etc/resolv.conf dosyasını o yazar. DNS'i nmcli ile değiştirin.
1. Bağlantı adını öğrenin:
nmcli -t -f NAME,DEVICE connection show --active
Çıktı ens192:ens192 ya da System eth0:eth0 gibidir; iki noktadan önceki kısım bağlantı adı, sonraki kısım arayüz adıdır.
2. DNS adreslerini tanımlayın:
sudo nmcli connection modify ens192 ipv4.dns "1.1.1.1 8.8.8.8"
sudo nmcli connection modify ens192 ipv4.ignore-auto-dns yes
İkinci komut, IP adresi DHCP ile geliyorsa DHCP'nin verdiği DNS'in yok sayılmasını sağlar. Bağlantı adında boşluk varsa tırnak içinde yazın ("System eth0"). Var olan listeye ekleme yapmak için +ipv4.dns 9.9.9.9 biçimini kullanabilirsiniz.
3. Ayarı uygulayın:
sudo nmcli device reapply ens192
device reapply, bağlantıyı kapatıp açmadan yeni ayarı uygular; SSH ile bağlıyken en güvenli yoldur. Bu komut desteklenmeyen eski bir sürümdeyseniz sudo nmcli connection up ens192 kullanabilirsiniz, ancak bu komut bağlantıyı kısa süreliğine yeniden kurar.
4. Kontrol edin:
nmcli device show ens192 | grep IP4.DNS
cat /etc/resolv.conf
/etc/resolv.conf içinde # Generated by NetworkManager başlığının altında yeni adresleri görmelisiniz. AlmaLinux 8'de bu ayar /etc/sysconfig/network-scripts/ifcfg-ens192 dosyasına DNS1= ve DNS2= satırları olarak, AlmaLinux 9'da /etc/NetworkManager/system-connections/ altındaki dosyaya kaydedilir. Bu dosyaları elle düzenlemek yerine nmcli kullanmak hata riskini azaltır.
Debian'da DNS Değiştirme
Statik IP ile kurulmuş bir Debian sunucusunda systemd-resolved ve NetworkManager genellikle kurulu değildir; /etc/resolv.conf sıradan bir dosyadır ve doğrudan düzenlenir:
ls -l /etc/resolv.conf
sudo nano /etc/resolv.conf
nameserver 1.1.1.1
nameserver 8.8.8.8
ls -l çıktısı dosyanın bir bağlantı olduğunu gösteriyorsa (örneğin resolvconf paketi ya da systemd-resolved kuruluysa) yukarıdaki yöntemlerden size uyanı kullanın. resolvconf paketi kuruluysa DNS adresleri /etc/network/interfaces dosyasında ilgili arayüzün altına dns-nameservers 1.1.1.1 8.8.8.8 satırı olarak yazılır. Bu satır, resolvconf paketi kurulu değilse hiçbir etki yapmaz; sık yapılan bir hatadır.
/etc/resolv.conf dosyasında en fazla üç nameserver satırı dikkate alınır ve sunucular yazıldığı sırayla denenir.
Linux'ta DNS Önbelleğini Temizleme
"Linux DNS flush" ya da "Ubuntu DNS cache temizleme" aramasının cevabı sisteminize göre değişir:
| Sistem | Komut |
|---|---|
| systemd-resolved (Ubuntu 20.04 ve sonrası) | sudo resolvectl flush-caches |
| Ubuntu 18.04 | sudo systemd-resolve --flush-caches |
| nscd kuruluysa | sudo nscd -i hosts |
| dnsmasq kuruluysa | sudo systemctl restart dnsmasq |
AlmaLinux ve Debian'ın varsayılan kurulumunda sistem genelinde bir DNS önbelleği yoktur; temizlemeniz gereken bir şey de yoktur. Önbelleğin gerçekten dolu olup olmadığını systemd-resolved kullanan sistemlerde resolvectl statistics komutuyla görebilirsiniz:

Current Cache Size önbellekteki kayıt sayısını, Cache Hits ve Cache Misses önbellekten ve dışarıdan gelen cevap sayılarını gösterir. flush-caches sonrasında önbellek boyutu sıfırlanır.
Değişikliği Doğrulama
DNS'in doğru çalıştığını üç farklı yoldan kontrol edebilirsiniz:
resolvectl query anksoft.net
dig anksoft.net +short
dig @1.1.1.1 anksoft.net +short
getent hosts anksoft.net
resolvectl querysorguyu sistemin çözümleyicisi üzerinden yapar ve cevabın hangi arayüzden geldiğini gösterir.dig @1.1.1.1sorguyu doğrudan belirttiğiniz sunucuya gönderir. Bu çalışıyor amadig anksoft.netçalışmıyorsa sorun sistem ayarındadır.getent hostsuygulamaların gördüğü sonucu verir;/etc/hostsdosyasındaki elle eklenmiş kayıtları da hesaba katar.
dig komutu yoksa Ubuntu ve Debian'da sudo apt install dnsutils, AlmaLinux'ta sudo dnf install bind-utils ile kurabilirsiniz.
VDS Kullanıcıları İçin Uyarılar
Uzaktaki bir sunucuda DNS ayarı yaparken asıl risk DNS değil, aynı dosyadaki IP ve ağ geçidi ayarlarını bozmaktır. Bu hata SSH erişimini anında keser. Şu kurallara uyun:
- Değişiklikten önce ağ dosyasının yedeğini ağ klasörünün dışına alın.
- Ubuntu'da
netplan applyyerinenetplan trykullanın; bağlantı koparsa 120 saniye sonra eski ayar geri gelir. - RHEL tabanlı sistemlerde
nmcli connection downkomutunu SSH üzerinden çalıştırmayın; bağlantıyı kapatır ve geri açacak oturumunuz kalmaz.device reapplykullanın. - İkinci bir SSH oturumu açık tutun ve yeni ayarı o oturumdan test edin.
- Çalışmayan bir DNS adresi SSH'yi kesmez, ama
apt updatevednf updatekomutları "Temporary failure in name resolution" hatası verir, SSL sertifikaları yenilenmez, sunucunuz e-posta gönderemez. Her zaman iki farklı hizmetten adres girin.
Bir hata yüzünden sunucuya SSH ile bağlanamıyorsanız VDS panelinizdeki web konsol ile sunucuya doğrudan bağlanıp yedek dosyayı geri yükleyebilirsiniz. Ayrıntılar için VDS uzak masaüstü ve SSH bağlantı sorunları rehberimize bakın. Yeni kurduğunuz bir Ubuntu sunucusunu güvenli hâle getirmek için Ubuntu sunucu güvenliği rehberimiz de işinize yarar.
En Sık Hatalar
/etc/resolv.confdosyasını elle düzenlemek. Bağlantı (symlink) olan bir dosyadaki değişiklik kalıcı değildir. Öncels -l /etc/resolv.confile kontrol edin.- Netplan dosyasında sekme kullanmak. YAML yalnızca boşlukla girinti kabul eder;
netplan trysözdizimi hatası verir. - Yedeği
/etc/netplan/içine almak..yamluzantılı yedek de okunur ve ayarlar çakışır. dns-nameserverssatırınıresolvconfolmadan kullanmak. Debian'da bu satır yalnızcaresolvconfpaketiyle çalışır.- DHCP'nin DNS'i ezmesi. DHCP kullanan arayüzde
use-dns: false(netplan) veyaipv4.ignore-auto-dns yes(nmcli) eklenmezse DHCP'nin verdiği DNS sizinkinin önüne geçebilir. 127.0.0.53adresini değiştirmeye çalışmak. Bu adres yerel önbellektir; gerçek DNS sunucularıresolvectl statusçıktısındadır.- Sitenizin DNS kaydını sunucudan değiştirmeye çalışmak. Sunucunun DNS ayarı yalnızca sunucunun sorgu yaptığı adresi belirler. Alan adınızın A veya MX kaydı için DNS kayıtları rehberimize bakın.
Özet
- Önce
ls -l /etc/resolv.confile DNS'i hangi bileşenin yönettiğini bulun. - Ubuntu Server:
/etc/netplan/*.yamliçindenameserversve ardındannetplan try. - AlmaLinux, Rocky, RHEL:
nmcli connection modify ... ipv4.dnsvenmcli device reapply. - Debian (statik IP):
/etc/resolv.confdosyasını doğrudan düzenleyin. - Önbellek için
resolvectl flush-caches, doğrulama içinresolvectl queryvedigkullanın.
Windows bilgisayarınızda veya Windows Server'da DNS değiştirmek için Windows DNS değiştirme rehberimize, DNS hata kodlarının anlamı için DNS_PROBE_FINISHED_NXDOMAIN rehberimize göz atın. Ubuntu, Debian ve AlmaLinux kurulabilen, panelden web konsol erişimi sunan Türkiye lokasyonlu sunucular için VDS sunucu paketlerimizi, sunucu yönetmeden site yayınlamak için web hosting paketlerimizi inceleyebilirsiniz. Bir adımda takılırsanız destek talebi açın; talebinize sunucunuzun IP adresini ve gördüğünüz hata mesajını ekleyin, şifrenizi yazmayın.
Kaynaklar
- resolvectl(1) kılavuz sayfası:
status,dns,query,flush-caches,statistics - resolved.conf(5) kılavuz sayfası: genel DNS ve FallbackDNS ayarları
- Netplan YAML belgesi:
nameservers,routes,dhcp4-overrides - Ubuntu Server: Configuring networks: netplan ile ağ ve DNS yapılandırması
- Rocky Linux: Network Configuration: RHEL tabanlı sistemlerde
nmcliveipv4.dns - Debian Wiki: NetworkConfiguration:
/etc/network/interfacesve resolv.conf
Sıkça Sorulan Sorular
/etc/resolv.conf dosyasına yazdığım DNS neden siliniyor?
Güncel dağıtımlarda bu dosyayı systemd-resolved veya NetworkManager yönetir ve ağ her yenilendiğinde yeniden yazar. ls -l /etc/resolv.conf çıktısı bir bağlantı gösteriyorsa DNS'i netplan, resolvectl veya nmcli ile değiştirin.
Ubuntu'da DNS nasıl değiştirilir?
Ubuntu Server'da /etc/netplan/ altındaki YAML dosyasında ilgili arayüzün nameservers bölümüne addresses: [1.1.1.1, 8.8.8.8] yazın ve sudo netplan try ile uygulayın. Geçici değişiklik için sudo resolvectl dns <arayüz> 1.1.1.1 8.8.8.8 kullanılabilir.
resolv.conf içindeki 127.0.0.53 nedir?
systemd-resolved'in sunucu içindeki yerel önbellekli çözümleyicisidir, gerçek DNS sunucunuz değildir. Sorguların gittiği gerçek sunucuları resolvectl status komutu gösterir.
Linux'ta DNS önbelleği nasıl temizlenir?
systemd-resolved kullanan sistemlerde sudo resolvectl flush-caches, Ubuntu 18.04'te sudo systemd-resolve --flush-caches komutunu kullanın. AlmaLinux ve Debian'ın varsayılan kurulumunda sistem genelinde DNS önbelleği bulunmaz.
AlmaLinux'ta DNS nasıl değiştirilir?
Bağlantı adını nmcli connection show --active ile öğrenin, sudo nmcli connection modify <bağlantı> ipv4.dns "1.1.1.1 8.8.8.8" ve gerekiyorsa ipv4.ignore-auto-dns yes ayarını yapın, ardından sudo nmcli device reapply <arayüz> ile uygulayın.
netplan try ile netplan apply arasındaki fark nedir?
netplan apply ayarı hemen kalıcı uygular. netplan try ayarı uygular ve 120 saniye onay bekler; bağlantınız koparsa süre dolunca eski ayara döner. Uzaktaki bir sunucuda önce netplan try kullanmak erişimi kaybetme riskini ortadan kaldırır.


