Hosts Dosyası Nedir? Nasıl Düzenlenir?
Yerel DNS geçersiz kılma, test amaçlı kullanım ve zararlı yazılım kontrolü.
Hosts dosyası, bilgisayarınızın alan adlarını IP adresine çevirirken DNS'e sormadan önce baktığı küçük bir metin dosyası. Bir alan adı burada yazıyorsa bilgisayar DNS'e hiç gitmiyor ve dosyadaki adresi kullanıyor.
Bu onu hem kullanışlı hem tehlikeli yapıyor. Bir siteyi yayına almadan önce test etmek, bir alan adını engellemek için birebir. Aynı yetkiyle bir zararlı yazılım banka adresinizi sahte bir sunucuya yönlendirebilir. Ad çözümlemenin genel sırasını DNS nasıl çalışır yazısında anlattık; burada dosyanın kendisi var.
Dosya nerede?
| Sistem | Yol |
|---|---|
| Windows | C:\Windows\System32\drivers\etc\hosts |
| macOS | /etc/hosts |
| Linux | /etc/hosts |
| Android, iPhone | Var ama root ya da jailbreak olmadan düzenlenemiyor |
Dosyanın uzantısı yok; adı yalnızca hosts. Bu ayrıntı Windows'ta en sık yapılan hatanın kaynağı, aşağıda anlatıyoruz.
Satır biçimi
Her satır bir adres, ardından bir ya da daha fazla boşluk ya da sekme, ardından bir veya birkaç alan adı. # ile başlayan satırlar açıklama; dikkate alınmıyor.
| Satır | Anlamı |
|---|---|
| # açıklama satırı | Hiçbir etkisi yok |
| 127.0.0.1 localhost | Bilgisayarın kendisi; silinmemeli |
| ::1 localhost | Aynısının IPv6 karşılığı |
| 203.0.113.10 ornek.com www.ornek.com | İki adı aynı sunucuya gönder |
| 0.0.0.0 reklam.ornek.net | Bu adı engelle |
Temiz bir Windows kurulumunda dosyada yalnızca # ile başlayan açıklama satırları var; localhost satırları bile açıklama olarak duruyor, çünkü Windows onu kendisi çözümlüyor. macOS ve Linux'ta localhost satırları etkin olarak yazılı.
Dosyanın yapamadıkları
Hosts dosyası bir DNS sunucusu değil; yalnızca ad → adres eşlemesi tutuyor. Beklenen ama çalışmayan şeyler:
- Joker yok. *.ornek.com yazılamıyor. Her alt alan adı ayrı satır ister.
- www ayrı ad. ornek.com satırı www.ornek.com'u kapsamıyor.
- Port yok. 127.0.0.1:8080 yazılamıyor; dosya yalnızca adresi değiştirir, portu adres çubuğunda yazmak gerekir.
- Yol yok. ornek.com/sayfa gibi bir adres eşlenemiyor; alan adının tamamı aynı yere gider.
- Yönlendirme değil. Tarayıcı adres çubuğunda yine eski adı gösterir ve sunucuya o adı söyler. Hedef sunucu o adı tanımıyorsa sayfa açılmaz.
Son madde test için önemli: sunucu, gelen isteğin hangi alan adı için olduğuna bakarak siteyi seçiyor. Hosts dosyası adres değiştirir ama bu bilgiyi değiştirmez, bu yüzden bir siteyi yayına almadan önceki test tam olarak böyle çalışıyor.
Windows'ta düzenleme
- Başlat menüsünde Not Defteri'ni arayın, sağ tıklayıp Yönetici olarak çalıştır'ı seçin. Normal açarsanız kaydederken "erişim reddedildi" hatası alırsınız.
- Dosya → Aç, yola gidin: C:\Windows\System32\drivers\etc.
- Sağ alttaki dosya türü seçimini Tüm Dosyalar yapın; yoksa hosts görünmez.
- Satırı en alta ekleyin, kaydedin.
- Komut İstemi'nde
ipconfig /flushdnsçalıştırın.
Tuzak: Not Defteri'nde "Farklı kaydet" kullanırsanız dosya hosts.txt olarak kaydedilebiliyor ve Windows onu hiç okumuyor. Değişiklik işe yaramıyorsa klasörde iki dosya olup olmadığına bakın.
Bazı güvenlik yazılımları hosts dosyasını korumaya alıyor ve değişikliği engelliyor ya da geri alıyor. Kaydettiğiniz satır bir süre sonra kayboluyorsa sebep bu olabilir.
macOS ve Linux'ta düzenleme
- Terminal'de
sudo nano /etc/hostsçalıştırın, kullanıcı şifrenizi girin. - Satırı ekleyin;
Ctrl+Oile kaydedin,Ctrl+Xile çıkın. - macOS'ta önbelleği boşaltın:
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder. Linux'ta çoğu dağıtımda gerekmiyor; systemd-resolved kullanılıyorsaresolvectl flush-caches.
Değişiklik görünmüyorsa
Dosya doğru, önbellek boşaltıldı, ama tarayıcı hâlâ eski sunucuya gidiyor. Katmanlar sırayla:
| Katman | Çözüm |
|---|---|
| Tarayıcının kendi DNS önbelleği | Tarayıcıyı tamamen kapatıp açın |
| Açık kalmış bağlantı | Aynı sunucuya açık sekme varsa tarayıcı eski bağlantıyı kullanmaya devam ediyor; tüm sekmeleri kapatın |
| Sayfa önbelleği | Gizli pencerede deneyin |
| Yazım | www'li ve www'siz ad ayrı ayrı yazılı mı, sonda nokta ya da boşluk var mı |
| Dosya adı | hosts.txt olarak kaydedilmiş olabilir |
| VPN ya da proxy | Trafik başka bir makineden çıkıyorsa ad orada çözülebilir |
Önbelleklerin ayrıntısı DNS önbelleği temizleme yazısında. Alan adının gerçek DNS kaydını, hosts dosyasından bağımsız olarak görmek için DNS sorgulama aracını kullanın; sunucu tarafında sorgulandığı için sizin dosyanızdan etkilenmiyor.
Kullanım 1: Siteyi yayına almadan test
Siteyi yeni bir sunucuya taşıyorsunuz ama DNS'i henüz değiştirmediniz. Hosts dosyasına yeni sunucunun adresini alan adıyla birlikte yazın. Yalnızca sizin bilgisayarınız yeni sunucuyu görüyor, ziyaretçiler eski siteyi görmeye devam ediyor. Her şey yolundaysa DNS'teki A kaydını değiştirip satırı silin.
Satırı silmeyi unutmayın. Aylar sonra sunucu yeniden taşındığında bilgisayarınız eski adrese gitmeye devam eder ve "site bende açılmıyor ama herkeste açılıyor" durumu çıkar.
Kullanım 2: Alan adı engelleme
Bir alan adını hiçbir yere gitmeyen bir adrese eşlemek onu engeller. İki seçenek var:
| Adres | Ne olur |
|---|---|
| 0.0.0.0 | Bağlantı hemen başarısız olur |
| 127.0.0.1 | Bilgisayar kendisine bağlanmaya çalışır; yerelde bir sunucu çalışıyorsa isteği o alır |
Engelleme için 0.0.0.0 daha temiz. İkinci satırın neden böyle davrandığını 127.0.0.1 nedir yazısında anlattık.
Binlerce satırlık hazır engelleme listeleri de hosts biçiminde dağıtılıyor. Çok büyük listeler bazı sistemlerde ad çözümlemeyi yavaşlatabiliyor ve yalnızca tek bir bilgisayarı koruyor. Tüm evi kapsayan yöntemleri reklam takibi engelleme yazısında karşılaştırdık.
Güvenlik kontrolü: şüpheli satır nasıl okunur?
Zararlı yazılımlar hosts dosyasını iki amaçla değiştiriyor: kullanıcıyı sahte bir siteye göndermek ya da güvenlik yazılımının güncelleme sunucusunu engellemek. Dosyayı açtığınızda şunlara bakın:
- Banka, e-posta, sosyal ağ alan adı yanında bilinmeyen bir adres: sahte siteye yönlendirme. Bu en tehlikeli durum; adres çubuğunda doğru ad görünür ama sunucu başkasınındır.
- Güvenlik yazılımı ya da işletim sistemi güncelleme adları yanında 0.0.0.0 ya da 127.0.0.1: korumayı kör etme.
- Sizin eklemediğiniz, en altta yüzlerce boş satırdan sonra gelen satırlar: dosyayı açan kişi görmesin diye aşağı itilmiş.
Böyle bir satır bulursanız yalnızca silmek yetmez; onu yazan yazılım hâlâ bilgisayardaysa tekrar yazacak. Önce güvenlik taraması yapın, sonra satırı silin ve DNS önbelleğini boşaltın. Aynı anda proxy ve DNS ayarlarının da değişip değişmediğini zararlı yazılımın ağ belirtileri yazısındaki tabloyla kontrol edin. Sahte bir sitede şifre girdiyseniz phishing yazısındaki adımlara bakın.
HTTPS bu saldırıya karşı bir güvenlik ağı: sahte sunucunun bankanın geçerli sertifikası olmadığı için tarayıcı genellikle sertifika uyarısı veriyor. Bankanızın sitesinde sertifika uyarısı görürseniz devam etmeyin; hosts dosyası kontrol edilecek ilk yerlerden biri.
Sıkça sorulan sorular
Hosts dosyası nedir?
Bilgisayarın alan adlarını IP adresine çevirirken DNS’e sormadan önce baktığı metin dosyasıdır. Bir ad burada yazılıysa DNS’e gidilmez, dosyadaki adres kullanılır.
Windows’ta hosts dosyasını neden kaydedemiyorum?
Dosya yönetici yetkisi ister. Not Defteri’ni sağ tıklayıp Yönetici olarak çalıştır seçeneğiyle açın. Güvenlik yazılımı dosyayı koruyorsa değişikliği o da engelleyebilir.
Hosts dosyasını değiştirdim ama etkisi yok, neden?
DNS önbelleğini boşaltın, tarayıcıyı tamamen kapatıp açın. Dosyanın hosts.txt olarak kaydedilmediğinden ve www’li ile www’siz adın ayrı satırlarda yazıldığından emin olun.
Hosts dosyasında joker karakter kullanılabilir mi?
Hayır. Her alan adı ve her alt alan adı ayrı satır ister. Port ve sayfa yolu da yazılamaz; dosya yalnızca adı adrese eşler.
Hosts dosyamda tanımadığım satırlar var, ne yapmalıyım?
Önce güvenlik taraması yapın, sonra satırları silip DNS önbelleğini boşaltın. Banka ya da e-posta adının yanında bilinmeyen bir adres varsa o sitelerde girdiğiniz şifreleri değiştirin.