15%

Tüm Hosting Hizmetlerinde %15 indirim

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın:

Skills
Başlayın
30.10.2024

Linux Hosts Dosyasında Ustalaşmak: Yerel DNS Kontrolü İçin Eksiksiz Kılavuz

İster yeni bir uygulama test eden bir geliştirici, ister DNS yayılımını sorun gidermeye çalışan bir sistem yöneticisi, isterse dikkat dağıtıcı web sitelerini engellemek isteyen biri olun, /etc/hosts dosyası herhangi bir Linux sistemindeki en güçlü ve yeterince kullanılmayan araçlardan biridir. Bu kılavuz, hosts dosyasının ne olduğunu anlamaktan VPS Hosting ortamınızda güvenli bir şekilde düzenlemeye kadar bilmeniz gereken her şeyi derinlemesine ve pratik olarak ele almaktadır.

İçindekiler

  1. Hosts Dosyası Nedir?
  2. Linux’ta Hosts Dosyası Nerede Bulunur?
  3. Hosts Dosyasının Yapısını Anlamak
  4. Linux’ta Hosts Dosyası Nasıl Düzenlenir (Adım Adım)
  5. Hosts Dosyasının Yaygın Kullanım Alanları
  6. Düzenlemelerden Sonra DNS Önbelleğini Temizleme
  7. En İyi Uygulamalar ve Güvenlik Değerlendirmeleri
  8. Sonuç

1. Hosts Dosyası Nedir? {#what-is-the-hosts-file}

Hosts dosyası, www.example.com gibi insan tarafından okunabilir ana bilgisayar adlarını karşılık gelen IP adresleriyle eşleştiren düz metin biçiminde bir sistem dosyasıdır. Yerel, statik bir DNS çözümleyici olarak işlev görür ve kritik bir özellik olarak, herhangi bir harici DNS sorgusu yapılmadan *önce* işletim sistemi tarafından başvurulur.

Bu, hosts dosyanızdaki girişlerin harici ad sunucuları tarafından döndürülen DNS kayıtlarına göre mutlak önceliğe sahip olduğu anlamına gelir. Bu tek özellik, onu aşağıdakiler için inanılmaz derecede çok yönlü bir araç haline getirir:

  • Yerel geliştirme ortamları — Canlı DNS kayıtlarına dokunmadan gerçek görünümlü bir alan adı altında bir web sitesini test edin.
  • DNS sorun giderme — Sunucu yapılandırmalarını test etmek için bir alan adını geçici olarak belirli bir IP’ye çözümlenmeye zorlayın.
  • Web sitesi engelleme — İstenmeyen alan adlarını yönlendirilemez bir adrese yönlendirerek erişimi etkin bir şekilde engelleyin.
  • Hazırlık ve lansman öncesi test — DNS’i küresel olarak değiştirmeden önce yeni bir sunucu kurulumunu önizleyin.
  • Ağ güvenliği — Bilinen kötü amaçlı alan adlarını işletim sistemi düzeyinde engelleyin.

> Teknik not: Linux’ta çözümleme sırası /etc/nsswitch.conf dosyası tarafından yönetilir. Varsayılan yapılandırma genellikle files‘yi (yani /etc/hosts) dns‘den önce yerleştirerek yerel girişlerin her zaman önce kontrol edilmesini sağlar.

2. Linux’ta Hosts Dosyası Nerede Bulunur? {#location}

Ubuntu, Debian, CentOS, Rocky Linux, AlmaLinux ve Arch Linux dahil tüm büyük Linux dağıtımlarında hosts dosyası şu konumda bulunur:

/etc/hosts

Bu yol dağıtımlar arasında tutarlıdır ve ortamınızdan bağımsız olarak çalışmayı kolaylaştırır. Dosya root tarafından sahiplenilir ve düzenlemek için yükseltilmiş ayrıcalıklar gerektirir.

/etc/hosts Varsayılan İçerikleri

AlexHost VPS Hosting üzerinde çalışan gibi yeni sağlanmış bir Linux sunucusu genellikle aşağıdakine benzer varsayılan girişler içerir:

127.0.0.1       localhost
127.0.1.1       your-hostname.example.com your-hostname

# The following lines are desirable for IPv6 capable hosts
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters

Bu girişler şunları sağlar:

    localhost her zaman 127.0.0.1 (IPv4) ve ::1 (IPv6) geri döngü adresine çözümlenir.
    Sunucunun kendi ana bilgisayar adı, harici bir DNS araması gerektirmeden yerel olarak çözümlenir.
    
    Bu varsayılan girişleri silmeyin; bunu yapmak için belirli ve iyi anlaşılmış bir nedeniniz olmadıkça. Bunları kaldırmak sistem hizmetlerinde, posta tesliminde ve uygulama çerçevelerinde beklenmedik davranışlara neden olabilir.
    3. Hosts Dosyasının Yapısını Anlamak {#structure}
    Hosts dosyası basit ve tutarlı bir biçimi takip eder. Boş olmayan ve yorum içermeyen her satır tek bir eşlemeyi temsil eder ve şu sözdizimini izler:
    IP_address    hostname    [alias1]    [alias2]    ...
    
    
    
    
    Alan
    Açıklama
    
    
    
    
    IP_address
    Ana bilgisayar adının çözümlenmesi gereken IPv4 veya IPv6 adresi
    
    
    hostname
    Birincil tam nitelikli alan adı (FQDN) veya kısa ana bilgisayar adı
    
    
    alias (isteğe bağlı)
    Aynı IP’ye çözümlenmesi gereken bir veya daha fazla ek ad
    
    
    
    
    Temel Biçimlendirme Kuralları
    
    Boşluk: Alanlar boşluk veya sekme ile ayrılır. Birden fazla boşluk kabul edilebilir.
    Yorumlar: Bir satırda # karakterinden sonra gelen herhangi bir metin yorum olarak değerlendirilir ve sistem tarafından yok sayılır.
    Büyük/küçük harf duyarlılığı: Ana bilgisayar adları pratikte büyük/küçük harfe duyarsızdır, ancak kural olarak küçük harf kullanılır.
    Satır başına bir IP: Her satır tam olarak bir IP adresiyle başlar ve ardından bir veya daha fazla ana bilgisayar adı gelir.
    
    Pratik Örnekler
    Tek bir alan adını localhost’a eşleme:
    127.0.0.1    example.com
    Birden fazla ana bilgisayar adını aynı IP’ye tek satırda eşleme:
    127.0.0.1    example.com    www.example.com    staging.example.com
    Bir alan adını yönlendirilemez bir adrese yönlendirerek engelleme:
    0.0.0.0    ads.tracker.com
    Bir alan adını belirli bir uzak sunucu IP’sine çözümlenmeye zorlama:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Belgeleme için satır içi yorum ekleme:
    # Local development environment - Project Alpha
    127.0.0.1    alpha.local    api.alpha.local
    
    # Blocked domains - updated 2025-01-15
    0.0.0.0    malicious-site.com
    4. Linux’ta Hosts Dosyası Nasıl Düzenlenir (Adım Adım) {#editing}
    /etc/hosts bir sistem yapılandırma dosyası olduğundan, onu değiştirmek için root veya sudo ayrıcalıklarına ihtiyacınız vardır. Aşağıda eksiksiz, üretime uygun bir iş akışı bulunmaktadır.
    Adım 1: Düzenlemeden Önce Yedek Oluşturun
    Bu, tartışmasız bir en iyi uygulamadır. Herhangi bir değişiklik yapmadan önce dosyayı her zaman yedekleyin:
    sudo cp /etc/hosts /etc/hosts.bak
    Yedeğin oluşturulduğunu doğrulayabilirsiniz:
    ls -lh /etc/hosts*
    Bir şeyler ters giderse, anında geri yükleyin:
    sudo cp /etc/hosts.bak /etc/hosts
    Adım 2: Hosts Dosyasını Bir Metin Düzenleyiciyle Açın
    nano kullanarak (yeni başlayanlar ve hızlı düzenlemeler için önerilir):
    sudo nano /etc/hosts
    nano kullanıcı dostudur, ekranın altında klavye kısayollarını gösterir ve neredeyse her Linux dağıtımında varsayılan olarak mevcuttur.
    vim kullanarak (deneyimli yöneticiler tarafından tercih edilir):
    sudo vim /etc/hosts
    vi kullanarak (minimal kurulumlarda mevcuttur):
    sudo vi /etc/hosts
    Adım 3: Girişleri Ekleyin, Değiştirin veya Kaldırın
    Dosya açıldıktan sonra uygun konuma gidin ve değişikliklerinizi yapın. İşte en yaygın işlemler:
    Yeni bir eşleme ekleme (dosyanın sonuna ekleyin):
    127.0.0.1    myproject.local    www.myproject.local
    Bir web sitesini engelleme:
    0.0.0.0    facebook.com    www.facebook.com
    Bir alan adı için DNS’i geçersiz kılma (örneğin, yeni bir sunucuyu test etmek için):
    198.51.100.25    mywebsite.com    www.mywebsite.com
    Adım 4: Düzenleyiciyi Kaydedin ve Çıkın
    nano‘da:
    
    Dosyayı yazmak (kaydetmek) için CTRL + O tuşuna basın.
    Dosya adını onaylamak için Enter tuşuna basın.
    Çıkmak için CTRL + X tuşuna basın.
    
    vim veya vi‘da:
    
    Komut modunda olduğunuzdan emin olmak için Esc tuşuna basın.
    Yazmak ve çıkmak için :wq yazın ve Enter tuşuna basın.
    Kaydetmeden çıkmak için :q! yazın ve Enter tuşuna basın.
    
    Adım 5: Değişikliklerinizin Sözdizimini Doğrulayın
    Test etmeden önce girişlerinizin doğru göründüğünü görsel olarak onaylayın:
    cat /etc/hosts
    Belirli bir girişi hızlıca bulmak için grep komutunu da kullanabilirsiniz:
    grep "myproject.local" /etc/hosts
    Adım 6: Yeni Eşlemeleri Test Edin
    Ana bilgisayar adının beklenen IP adresine çözümlendiğini doğrulamak için ping kullanın:
    ping -c 4 myproject.local
    Engellenen bir alan adı için (0.0.0.0 veya 127.0.0.1‘a eşlenmiş), ping başarısız olmalı veya hemen dönmelidir:
    ping -c 2 facebook.com
    Daha doğrudan bir hosts dosyası araması için getent komutunu da kullanabilirsiniz:
    getent hosts myproject.local
    Bu komut, sistemin ad çözümleme yığınını (/etc/hosts dahil) sorgular ve çözümlenen IP’yi döndürür; bu da onu doğrulama amacıyla ping‘dan daha güvenilir kılar.
    5. Hosts Dosyasının Yaygın Kullanım Alanları {#use-cases}
    5.1. Yerel Web Geliştirme
    Bu, geliştiriciler arasında tartışmasız en yaygın kullanım alanıdır. Yerel projenize http://localhost:3000 veya http://127.0.0.1:8080 üzerinden erişmek yerine, anlamlı ve üretime benzer bir alan adı atayabilirsiniz.
    Örnek kurulum:
    /etc/hosts‘a ekleyin:
    127.0.0.1    myproject.local    api.myproject.local    admin.myproject.local
    Kaydettikten sonra tarayıcınızda http://myproject.local‘a gidin. İsteğiniz, harici bir DNS sunucusuna hiç dokunmadan yerel olarak çözümlenecektir.
    Bu yaklaşım özellikle şu durumlarda değerlidir:
    
    Uygulamanız sanal barındırma kullanıyor ve belirli bir Host başlığı gerektiriyorsa.
    Yerel olarak SSL sertifikalarını test ediyorsanız (uygun bir alan adına eşlenmiş öz imzalı sertifikalar kullanarak).
    Bir çoklu alt alan adı mimarisini simüle etmeniz gerekiyorsa (örneğin, api., admin., cdn.).
    
    cPanel ile VPS üzerinde birden fazla proje çalıştırıyorsanız, hosts dosyası DNS yayılımı tamamlanmadan önce alan adı yapılandırmalarını test etmenize de yardımcı olabilir.
    5.2. İstenmeyen Web Sitelerini Engelleme
    Hosts dosyası, hafif ve bağımlılığı olmayan bir içerik engelleyicidir. Bir alan adını 0.0.0.0‘e yönlendirerek (bağlantı girişimi olmadan daha hızlı başarısız olduğu için 127.0.0.1‘e tercih edilir), tüm tarayıcıları ve uygulamaları aynı anda etkileyen işletim sistemi düzeyinde erişimi engelleyebilirsiniz.
    Sosyal medya dikkat dağıtıcılarını engelleme:
    0.0.0.0    facebook.com    www.facebook.com
    0.0.0.0    twitter.com    www.twitter.com
    0.0.0.0    reddit.com    www.reddit.com
    Bilinen reklam sunucu veya izleme alan adlarını engelleme:
    0.0.0.0    doubleclick.net
    0.0.0.0    ads.google.com
    0.0.0.0    tracking.example-analytics.com
    > Profesyonel ipucu: Topluluk tarafından yönetilen engelleme listeleri (StevenBlack hosts projesi gibi), tek bir hosts dosyası biçiminde on binlerce reklam, izleme ve kötü amaçlı yazılım alan adını derler; bunları /etc/hosts‘nize birleştirebilirsiniz.
    5.3. Lansman Öncesi Sunucu Testi ve DNS Geçişi
    Bir web sitesini yeni bir sunucuya taşırken — örneğin, Paylaşımlı Web Hosting‘den Dedicated Sunucu‘ya geçerken — DNS yayılımı birkaç dakikadan 48 saate kadar sürebilir. Hosts dosyası, diğer kullanıcıları etkilemeden yalnızca yerel makinenizden yeni sunucuyu hemen önizlemenizi sağlar.
    Senaryo: mywebsite.com‘i 203.0.113.42 IP’sindeki yeni bir sunucuya taşıyorsunuz.
    Yerel /etc/hosts‘nize ekleyin:
    203.0.113.42    mywebsite.com    www.mywebsite.com
    Artık tarayıcınızda mywebsite.com‘ı ziyaret ettiğinizde yeni sunucunun içeriğini göreceksiniz. Dünya genelindeki diğer ziyaretçiler, DNS yayılana kadar eski sunucuyu görmeye devam edecektir. Her şeyin doğru çalıştığını onayladıktan sonra girişi kaldırın ve DNS’in devralmasına izin verin.
    Bu teknik şunlar için paha biçilmezdir:
    
    Yayına geçmeden önce web sunucusu yapılandırmasını doğrulama.
    Yeni sunucuda SSL Sertifikalarını test etme.
    Taşıma sonrası e-posta yönlendirmesini ve uygulama davranışını onaylama.
    
    5.4. DNS Çözümleme Hatalarını Atlama
    Bir DNS sunucusu geçici olarak kullanılamıyorsa veya yanlış sonuçlar döndürüyorsa, kritik hizmetlere bağlantıyı yeniden sağlamak için hosts dosyasını acil geçersiz kılma olarak kullanabilirsiniz.
    Örnek:
    # Emergency override - DNS server outage 2025-01-15
    198.51.100.10    internal-api.company.com
    198.51.100.11    database.company.com
    Temel DNS sorunu çözüldükten sonra bu girişleri kaldırmayı unutmayın; aksi takdirde eski eşlemeler gelecekte kafa karışıklığına neden olabilir.
    5.5. Çok Sunuculu Geliştirme Ortamları
    Birden fazla sanal makine veya kapsayıcı içeren karmaşık geliştirme kurulumlarında, hosts dosyası her hizmete kolay hatırlanır adlar eşleyebilir:
    192.168.1.10    db.local         # Database server
    192.168.1.11    cache.local      # Redis/Memcached
    192.168.1.12    queue.local      # Message broker
    192.168.1.13    search.local     # Elasticsearch
    Bu, IP adreslerini hatırlama ihtiyacını ortadan kaldırır ve yapılandırma dosyalarını daha okunabilir ve taşınabilir hale getirir.
    6. Düzenlemelerden Sonra DNS Önbelleğini Temizleme {#flushing-dns}
    Çoğu modern Linux sisteminde, /etc/hosts‘daki değişiklikler yeni bağlantılar için hemen geçerli olur. Ancak sisteminiz veya uygulamalarınız DNS yanıtlarını önbelleğe alıyorsa, yeni eşlemelerin hemen kullanılmasını sağlamak için bu önbelleği temizlemeniz gerekebilir.
    systemd-resolved Kullanan Sistemler İçin (Ubuntu 18.04+, Debian 10+, çoğu modern dağıtım):
    sudo systemctl restart systemd-resolved
    Veya tam yeniden başlatma olmadan önbelleği temizlemek için:
    sudo resolvectl flush-caches
    Önbelleğin temizlendiğini doğrulayın:
    sudo resolvectl statistics
    nscd (Ad Hizmeti Önbellek Arka Plan Programı) Kullanan Sistemler İçin:
    sudo systemctl restart nscd
    NetworkManager Kullanan Sistemler İçin:
    sudo systemctl restart NetworkManager
    dnsmasq Kullanan Sistemler İçin:
    sudo systemctl restart dnsmasq
    Sisteminizin Hangi DNS Çözümleyicisini Kullandığını Kontrol Etme
    systemctl list-units --type=service | grep -E "resolved|nscd|dnsmasq|NetworkManager"
    > Tarayıcı önbellekleri: Web tarayıcılarının işletim sisteminden bağımsız kendi dahili DNS önbelleklerini tuttuğunu unutmayın. /etc/hosts‘yi değiştirdikten sonra tarayıcınızın DNS önbelleğini de temizlemeniz gerekebilir. Chrome/Chromium’da chrome://net-internals/#dns‘e gidin ve Ana bilgisayar önbelleğini temizle‘ye tıklayın.
    7. En İyi Uygulamalar ve Güvenlik Değerlendirmeleri {#best-practices}
    ✅ Düzenlemeden Önce Her Zaman Yedek Alın
    sudo cp /etc/hosts /etc/hosts.bak.$(date +%Y%m%d_%H%M%S)
    Yedek dosya adında zaman damgası kullanmak, birden fazla sürümü takip etmenizi sağlar.
    ✅ Değişikliklerinizi Belgelemek İçin Yorum Kullanın
    # Added 2025-01-15 by admin@example.com - staging server test
    203.0.113.42    staging.mywebsite.com
    Bu, birden fazla kişinin sunucuya erişebildiği ekip ortamlarında özellikle önemlidir.
    ✅ Geçici Girişleri Zamanında Kaldırın
    Test veya acil geçersiz kılmalar için eklenen girişler, artık ihtiyaç duyulmadığında hemen kaldırılmalıdır. Eski girişler, aylar sonra teşhis edilmesi zor bağlantı sorunlarına neden olabilir.
    ✅ Sözdizimini Doğrulayın
    Hatalı biçimlendirilmiş bir hosts dosyası girişi sistem çökmesine neden olmaz, ancak sessizce çözümleme başarısız olur. Girişlerinizi her zaman şununla iki kez kontrol edin:
    getent hosts <hostname>
    ⚠️ Güvenlik Uyarısı: Hosts Dosyası Ele Geçirme
    Kötü amaçlı yazılımlar bazen /etc/hosts‘yi, meşru alan adlarını (bankacılık web siteleri veya güncelleme sunucuları gibi) saldırgan tarafından kontrol edilen IP’lere yönlendirmek için değiştirir. Bu, hosts dosyası ele geçirme olarak bilinen bir saldırı vektörüdür.
    Buna karşı korunmak için:
    
    Kısıtlayıcı dosya izinleri ayarlayın: sudo chmod 644 /etc/hosts
    auditd veya AIDE gibi araçları kullanarak dosyayı yetkisiz değişiklikler için izleyin.
    Dosya içeriğini düzenli olarak gözden geçirin: cat /etc/hosts

    ⚠️ Hosts Dosyası Uygun DNS’in Yerini Tutmaz

    Üretim ortamları için hosts dosyası yalnızca geçici geçersiz kılmalar ve yerel geliştirme için kullanılmalıdır. Kalıcı alan adı yönetimi için her zaman uygun DNS kayıtlarını kullanın. Alan adlarını profesyonelce kaydetmeniz ve yönetmeniz gerekiyorsa, güvenilir bir sağlayıcı aracılığıyla Alan Adı Kaydı yaptırmak DNS altyapınızın sağlam ve ölçeklenebilir olmasını sağlar.

    8. Sonuç {#conclusion}

    /etc/hosts dosyası, her Linux yöneticisinin ve geliştiricisinin araç setinde aldatıcı derecede basit ama dikkat çekici ölçüde güçlü bir araçtır. DNS çözümlemesini yerel olarak geçersiz kılma yeteneği — sıfır gecikme, harici bağımlılık yok ve altyapı değişikliği yok — onu şunlar için vazgeçilmez kılar:

    • Uygulamaları yerel olarak oluşturan ve test eden geliştiriciler.
    • Sunucu taşımalarını ve DNS geçiş pencerelerini yöneten sistem yöneticileri.
    • Kötü amaçlı veya istenmeyen alan adlarını engelleyen güvenlik bilincine sahip kullanıcılar.
    • Çok hizmetli yerel ortamları düzenleyen DevOps mühendisleri.

    Bu kılavuzdan çıkarılacak temel sonuçlar:

    GörevKomut / Eylem
    Hosts dosyasını açmasudo nano /etc/hosts
    Düzenlemeden önce yedek almasudo cp /etc/hosts /etc/hosts.bak
    Bir eşlemeyi doğrulamagetent hosts <hostname>
    Ping ile test etmeping -c 4 <hostname>
    DNS önbelleğini temizlemesudo resolvectl flush-caches
    Yedekten geri yüklemesudo cp /etc/hosts.bak /etc/hosts

    İster yalın bir geliştirme ortamı çalıştırıyor olun, ister AlexHost VPS Hosting üzerinde bir üretim sunucusu filosu yönetiyor olun, hosts dosyasında uzmanlaşmak, hızlı ve güvenilir yerel DNS geçersiz kılmaya ihtiyaç duyduğunuz her seferinde karşılığını veren temel bir beceridir. Güvenle düzenleyin, değişikliklerinizi belgeleyin ve her zaman bir yedek saklayın — iyi yönlendirmeler!

    15%

    Tüm Hosting Hizmetlerinde %15 indirim

    Becerilerini test et ve herhangi bir hosting planında İndirim kazan

    Kodu kullanın:

    Skills
    Başlayın