DNS Nedir ve Nasıl Çalışır? ISS ler DNS Sunucularını Nasıl Engeller?

DNS, Domain Name Server, web adreslerinin ip karşılıklarının tutulduğu isim sunucularıdır. Ulaşmak istediğimiz bir alan adının ip adresini kayıtlarında tutarlar ve bize iletirler. Peki DNS tam olarak nasıl çalışır? İnternet servis sağlayacıları DNS sunucularını nasıl engeller? Hepsini özetleyelim.

Türkiye’de internet yasaklarının her geçen gün artarak ilerlemesiyle beraber gencinden yaşlısına DNS kavramını kullanmayan kalmamıştır. Ama bu kesimin dışında kalanlar için önce küçük bir tanım yapalım ve ardından daha teknik olarak DNS’in nasıl çalıştığını, ISS’lerin DNS sunucularını nasıl engellediğini anlatalım.

1. DNS Nedir?

DNS, yani alan adı isim sunucuları, internetteki kayıtlı olan domainlerin ip adres karşılıklarını tutan tablolardır. İnternette bir web sitesine veya özel bir sunucuya gitmek istediğimizde gideceğimiz sitenin veya sunucunun ip adresini bilmemiz gerekir. Çünkü yönlendiriciler ip adresleri ile yolları tayin ederler. Fakat bizler web sitelerinin sadece isimlerini biliriz (ör: kerteriz.net, google.com). Her sitenin ip adresini bilmek gereksiz bir uğraştır ve zaten 359.8 milyon alan adının ip adresini ihtiyaç olduğunda bilmemiz de imkansıza yakın bir iştir. İşte bu sebeple devreye DNS sunucular girer.

Siz gitmek istediğiniz sitenin adresini tarayıcıya yazıp git dediğinizde ilk olarak DNS sunucusu bu adresin ip karşılığını kayıtlarından bulmaya çalışır. Eğer kendinde bulamazsa diğer DNS sunuculara da sorarak ip adresini elde etmeye çalışır. İlgili kayıdı bulduğunda ise size bu değeri döndürerek bilgisayarınızın haberleşmeyi başlatmasını sağlar.

DNS in ne olduğunu özetlersek klasik örnek olan telefon rehberi örneği oldukça anlaşılırdır. Siz nasıl ki telefonunuzda ki birini aramak istediğinizde o kişinin ismini arıyorsanız ve ara dediğinizde telefonunuz rehberden ilgili kişinin telefon numarasını çeviriyorsa DNS te aynı mantıkla çalışır. Kısaca internet deneyimimizi iyileştirir.

2. DNS Nasıl Çalışır?

Yukarıda DNS in ne olduğunu ve kaba tabirle nasıl çalıştığını anlattık. Şimdi ise daha teknik olarak inceleyelim. Bunun için örnek olarak kerteriz.net adresine gitmek istediğimizde neler oluyor sırayla inceleyelim.

1. Hosts Dosyası Kontrol Edilir: Bilgisayarlarımızda hosts isimli yerel bir DNS kayıt dosyası bulunmaktadır. Bir siteye gitmek istediğimizde ilk olarak bu dosya kontrol edilir ve sitenin ip adresi burada kayıtlıysa yazılan ip adresine gidilir. hosts dosyası Windows bilgisayarlarda c:\Windows\System32\Drivers\etc\ dizininde bulunur ve dilediğiniz gibi düzenleme yapabilirsiniz. Örnek olarak hosts dosyası üzerinde google.com alan adının ip adresi karşılığını Edevlet web sitesinin ip adresiyle kaydedersek Google’a gitmek istediğimizde Edevlete gideriz.

Bu kayıttaki 94.55.118.33 ip adresi Edevlet sitesinin sunucu adresidir. Şimdi tarayıcıdan google.com adresine gidelim ve bakalım hangi site açılıyor.

Gördüğünüz gibi DNS sorgularının başlangıç adresi olan hosts dosyası ile ilk DNS hack işlemini de yapmış olduk 🙂 Tabi şuan da konumuz bu olmadığı için işlem sırasından devam edelim. Eğer bu dosyada gitmek istediğimiz web sitesinin ip adresi kayıtlı değilse sıradaki işlem DNS sunucuna bu adresi sormak olacaktır.

2. Bağdaştırıcı DNS Sunucusu Kontrol Edilir: İlk aşamada gitmek istediğimiz adresi bulamazsak sırada hangi bağdaştırıcıyı kullanıyorsak o bağdaştırıcıya tanımlı olan DNS sunucuya bu adresi sormak olacaktır. Örneğin bir şirket ağında özel bir DNS sunucusu kullanılıyorsa, bilgisayarınız bu sunucuya ilgili adresi soracaktır. Çünkü bağlı olduğunuz ağdaki bağdaştırıcının DNS tanımı şirketin DNS sunucusuna tanımlıdır.

Ağ trafiğimizin üzerinden aktığı bağdaştırıcıda resimdeki gibi özel bir DNS sunucusu tanımlı olmayabilir. Olsa bile sorduğumuz adres bu DNS sunucusunda kayıtlı olmayabilir. Bu durumda artık bir sonraki aşamaya geçmemiz gerekiyor.

3. ISS DNS Sunucusuna Gidilir: Üstteki aşamada ağ bağdaştırıcımızda özel bir DNS sunucu adresi kayıtlıysa ona sormuştuk. Ama özel bir DNS sunucusu yoksa veya bağdaştırıcı ayarlarımız otomatikteyse İnternet servis sağlayıcınız tarafından hem ip adresiniz hemde DNS sunucunuz otomatik olarak cihazınıza gönderilir. Bunu test etmek için modeminize hangi bağdaştırıcıyla bağlıysanız (Wifi veya Ethernet) o bağdaştırıcının aldığı ip adreslerini ipconfig /all ile kontrol edebilirsiniz.

Burada yaptığımız kontrolde DNS sunucusu ve Gateway adresiniz (yani modem ip adresiniz) aynı adrese sahip. Öyleyse modeme girip ISS firmasının (Türk Telekom,Superonline vs.) kullandığı DNS sunucu adresini öğrenelim.

Modemimizin arayüzünde WAN bağlantımıza ait olan DNS sunucusunu gördük. Yani bu aşamanın özeti olarak gitmek istediğimiz site adresinin ip karşılığı ilk 2 aşamada bulunamazsa buradaki DNS sunucusuna sorulur. Bulunursa ip adresi cevap içinde döner ama bulunamazsa ISS kök sunuculara bu adresi sormaya gider.

4. Kök Sunuculara Adres Sorulur: Artık global oyuncunların sırası geldi. İnternette istediğimiz sayfaya ulaşabilmemiz için web sayfasının ip adresini bizim için bulmaları gerekiyor. Bu işten ise sorumlu olan toplam 13 adet kök DNS sunucu bulunmaktadır. Bunlar;

HostnameIP adresiOrganizasyon
a.root-servers.net198.41.0.4VeriSign, Inc.
b.root-servers.net199.9.14.201University of Southern California (ISI)
c.root-servers.net192.33.4.12Cogent Communications
d.root-servers.net199.7.91.13University of Maryland
e.root-servers.net192.203.230.10NASA
f.root-servers.net192.5.5.241Internet Systems Consortium, Inc.
g.root-servers.net192.112.36.4US Department of Defense (NIC)
h.root-servers.net198.97.190.53US Army (Research Lab)
i.root-servers.net192.36.148.17Netnod
j.root-servers.net192.58.128.30VeriSign, Inc.
k.root-servers.net193.0.14.129RIPE NCC
l.root-servers.net199.7.83.42ICANN
m.root-servers.net202.12.27.33WIDE Project

Kök DNS sunucuları domainlere ait herhangi bir ip bilgisi saklamazlar. Sadece o domainin ip adresini hangi DNS sunucusunda bulabileceğimizi bilirler ve bize ilgili TLD DNS sunucularının listesini döndürürler. Örneğin .com uzantılı bir alan adı için bize .com TLD (Top Level Domain) DNS sunucularının listesi gönderilir. Bizde bu listede yer alan bir TLD DNS sunucusuna isteğimizi atarız. Öyleyse sıradaki durağımız olan TLD DNS sunucularına gidelim.

5. TLD DNS Sunucusuna Adres Sorulur: Gitmek istediğimiz domaini kök DNS sunuculara sorduktan sonra bu domaini hangi TLD DNS sunucularda bulabileceğimize dair bir liste alırız. Örneğin turkiye.gov.tr adresi için mevcutta çalışan 7 adet tr TLD DNS sunucusunun listesini elde ederiz.

Artık bu listeden birisini seçerek o adrese gitmeli ve domainin hangi Yetkili DNS Sunucusunda olduğunu sormalıyız. Burada ki yetkili ad sunucusu web sitesinin barındığı sunucu/hosting firmasının DNS sunucu adresleridir. Örneğin site Turhost üzerinde barınıyorsa bize cpns1.turhost.com ve cpns2.turhost.com sunucularının adı ve ip adresleri dönecektir. Bizde bu yetkili DNS sunucusunun adresine giderek alan adının ip adresini soracağız.

6. Yetkili DNS Sunucusuna Adres Sorulur: Geldik son aşamaya. Artık gitmek istediğimiz domaine ait ip adresi bilgisinin hangi DNS sunucuda olduğunu biliyoruz. Tek yapmamız gereken son kez bu DNS sunucusuna adresimizi sorup cevap olarak ip adresini elde etmek olacaktır. Böylece elde ettiğimiz hedef ip adresine ağ trafiğimizi başlatabiliriz.

ÖRNEK: Küçük Bir Lab Çalışması

Bu başlık altında DNS in nasıl çalıştığını adım adım anlattık. Şimdi de küçük bir örnekle taşları yerine oturtalım. Örneğin Kerteriz Bloga ulaşmak için tarayıcınıza kerteriz.net yazıp enterladınız diyelim. Bu dk dan itibaren aşamalar hızlıca şu şekilde olacaktır;

  1. Hosts dosyasına bakılır. Kayıt varsa ilgili ip adresine gidilir yoksa yerel DNS sunucusuna sorulur.
  2. Yerel DNS sunucusu varsa sorulur ve ilgili ip adresine gidilir. Yoksa ISS DNS sunucusuna sorulur.
  3. ISS DNS sunucusunda kayıt varsa ilgili ip adresine gidilir. Yoksa root DNS sunucusuna istek atılır. root DNS sunucuları bize mevcut root DNS sunucularının listesini gönderir.
  1. Listeden herhangi bir root DNS sunucusuna kerteriz.net sorulur. Kök sunucuda bize .net TLD isim sunucularının listesini döndürür.
  1. Artık bu listeden bir DNS sucusuna kerteriz.net adresini sorabiliriz. TLD isim sunucusu da bize kerteriz.net in olduğu yetkili isim sunucusunun yani barındırılan firma DNS sunucusunun adresini döndürür.
  1. Şimdi son aşamadayız. Elde ettiğimiz yetkili DNS sunucusuna domainimizi sorarak ip adresini öğreneceğiz.
  1. Tebrikler! kerteriz.net in ip adresini biliyoruz. Bu dk dan itibaren bu ip adresi ile ağ trafiğimizi başlatabiliriz.

Eğer sizde bu şekilde DNS adımlarını incelemek istiyorsanız şu iki faydalı siteyi ziyaret edebilirsiniz;

NOT: 5.aşamada TLD tarafından bize gönderilen yetkili DNS sunucusunun ip adresini TLD DNS sunucusu da bilmiyorsa öğrenebilmek için aynı aşamaları en baştan bu adres için gerçekleştirir ve yetkili DNS sunusucusunun ip adresini öğrenip bize cevap döner.

3. DNS İle Yasaklar Nasıl Aşılır?

Bir siteye gitmek istediğimizde adım adım neler yaşandığını yukarıda ki başlıkta detaylıca inceledik. Eğer bir site yasaklanacaksa İnternet Servis Sağlayıcısı (ISS) firma kendi DNS sunucusunda bu sitenin karşılığında ki IP adresini yasaklandığı bilgisinin olduğu ip adresi ile değiştirir. Yani siz yukarıda üçüncü adım olan ISS DNS Sunucusuna Gidilir başlığında olduğu gibi internet firmanızın DNS sunucusuna gidip bu yasaklı siteyi sorduğunuzda size gerçek sitenin ip adresi yerine yasak bilgisinin ip adresi döndürülür.

Öyleyse biz ISS firmamızın öntanımlı DNS sunucusunu kullanmak yerine özel bir DNS sunucusu ayarlayarak bu yasakları aşabiliriz. Böylece sorgularımız ISS DNS sunucusuna hiç uğramadan hiçbir yanlış kayıt ile yasak sayfasına yönlendirilmeyeceğimiz özel DNS sunucularına yapılacaktır. Yani istediğimiz sitenin gerçek IP adresi dönecektir bize. Piyasada ise kullanabileceğimiz birçok ücretsiz ve ücretli DNS sunucusu bulunmaktadır. Bunlardan en popülerleri;

  • 1.1.1.1 – 1.0.0.1 (Cloudflare + APNIC)
  • 8.8.8.8 – 8.8.4.4 (Google)
  • 208.67.222.222 – 208.67.222.220 (OpenDNS)
  • 199.85.126.10 – 199.85.126.20 (norton ConnectSafe)
  • 8.26.56.26 – 8.20.247.20 (Comodo Secure DNS)
  • 209.244.0.3 – 208.244.0.4 (Level3)
  • 156.154.70.1 – 156.154.71.1 (DNS Advantage)
  • 46.151.208.154 – 128.199.248.105 (OpenNIC)
  • 216.146.35.35 – 216.146.36.36 (Dyn)
  • 195.46.39.39 – 195.46.39.40 (SafeDNS)
  • 84.200.69.80 – 84.200.70.40 (DNS.Watch)

En popüler olanlardan bazıları bunlar. Tabiki de kullanabilirsiniz ama çok sevinmeyin. Teknik olarak yasakları aşabiliyor olmamız gerekirken maalesef işe yaramıyorlar. Bunun sebebini bir sonraki başlıkta açıklayacağız ama siz premium DNS satın alarak ISS firmanızın bilmediği bir DNS sunucu ip si ile yasakları aşmaya devam edebilirsiniz. Fakat yine hatırlatalım ki ücretsiz DNS hizmetleri maalesef işe yaramıyor :/

4. Ücretsiz DNS Sunucuları Neden İşe Yaramıyor?

Kullanacağımız premium bir DNS sunucu hizmeti veya çok duyulmamış bir DNS sunucusu ile yasakları rahatlıkla aşabiliyorken 1.1.1.1 ve 8.8.8.8 gibi ücretsiz DNS hizmetleriyle neden aşamıyoruz? Teknik olarak yukarıda da gördüğümüz gibi çalışması gereken şeyler neden çalışmıyor? Tüm bunların cevabı özetle ISS firmalarının illegal ve etik olmayan bir şekilde yaptığı BGP Hijacking işlemleridir. Bizde ilk olarak BGP nin ne olduğunu öğrenerek başlayalım.

4.1 BGP Nedir?

BGP Protokolü (Border Gateway Protocol – Sınır Geçit Protokolü), internet üzerindeki otonom sistemler (ISP, üniversite veya şirket ağı gibi herhangi bir ağ) arasında geniş bilgi paylaşımı ve yönlendirmeye imkân sağlayan bir ağ protokolüdür. BGP Protokolü olmasaydı günümüzde internet üzerinde kolayca gerçekleştirdiğimiz bir web sorgusunu yapamayacaktık. Örneğin turkiye.gov.tr adresine girmek istediğinizde sorgunuza cevap gelmeyecekti.

En özetleyici tabiriyle BGP,”İstediğimiz bir kaynağın nerede olduğunu ve oraya nasıl gideceğimizi gösterir.”

BGP karar mekanizması paketleri hedefe kesin olarak yönlendirebilmek için tüm verileri ve eşler arasındaki iletişimi analiz eder. Her eş paketin nereye yönlendirileceğine dair bir rota tablosunu yönetir. Bu yöntemle BGP otonom sistemlerin yönlendirme bilgilerini birbirlerinden toplamalarını ve yine birbirlerine duyurmalarını sağlar. Eşler kendi özerk otonom sistemlerinde dâhili olarak bilgi aktarımı gerçekleştirirler.

Yani internetteki bir paket bir noktadan başka bir noktaya giderken kullanacağı en kısa rotayı ASler (otonom sistemler) üzerindeki BGP yönlendirme tablolarından öğrenir ve o yolu izler.

4.2 BGP Hijacking Nedir ve Nasıl Yapılır?

Bir noktadan başka bir noktaya giderken izlenecek en kısa yolun BGP tablosu üzerinde tutulduğunu söyledik. Bu en kısa yol ise BGP ler tarafından yine AS ler üzerindeki rotalar analiz edilerek oluşturulur. BGP tarafından bir rota oluşturulup tabloya eklendiğinde ise ağdaki diğer tüm otonom sistemlere bu rota bildirilir ve kullanabilmeleri için onların BGP tablolarına işlenir. Böylece internet verimli bir şekilde kullanılır ve ağdaki paketler hedeflerini kolayca ve en kısa yoldan bulabilirler.

A adresinden B adresine giderken kullanılabilecek 10 adet yolun olduğunu düşünelim. Bunlardan en kısa yol BGP tablosunda tutulur ve bu rotada bu yol kullanılır. Eğer mevcut en kısa yoldan daha kısa bir yol bulunursa BGP tablosu bu rota ile güncellenir. Fakat, bir AS A dan B ye giden istediği bir yolu en kısa yolmuş gibi ağa duyurursa BGP tabloları bu rota ile güncellenir ve BGP Hijacking yapılmış olur. Çünkü bizi en kısa diye yönlendirdiği yol gerçekten B adresine gitmiyor olabilir (gitmiyor).

İşte tam da bu şekilde ISS firmaları aktif olarak BGP Hijacking kullanarak etik olmayan bir şekilde (legal bile olduğunu düşünmüyorum) trafiğimizi istediği gibi yönlendirebiliyorlar. Hadi daha detaya inerek bu işi çözelim.

4.3 Türk ISS (ISP) Firmaları BGP Hijackingi Nasıl Kullanıyor?

İnternet servis sağlayacımızın DNS adresini kullanmayıp özel bir DNS kullandığımızda bile yasaklı sitelere erişmediğimizi söyledik. Bunu ise bir üst başlıktaki yöntemde anlattığımız gibi yapıyorlar. Örneğin biz DNS sunucusu olarak 1.1.1.1 adresli sunucuyu kullandığımızda BGP tablolarındaki rotalar ile gerçek olan 1.1.1.1 ip adresli sunucuya gitmeli ve cevabı ondan almalıyız. Fakat ISS, BGP Hijacking ile 1.1.1.1 adresli hedef sunucusuna giden en kısa yolu ağa yanlış şekilde duyurarak bize yanlış bir rota çizer. Yolun sonunda ise kendi DNS sunucuları bulunur ve bize yine DNS sunucudaki o sitenin yasaklandığının duyurulduğu ip adresi karşılığı döner.

(Resimde daha spesifik bir etki alanı yani prefix tanımlayan yol daha belirli bir yol olduğu için /16 prefixi yerine /24 prefixinin belirlediği yol kullanıldı.)

Bu sebeple işe yarayan bir DNS hizmeti piyasaya düştüğü anda ISS ler bu DNS sunucusuna giden sahte bir kısa yol çizerek ağdaki otonom sistemlere duyurur ve sonuç internet kullanıcıları açısından hüsran olur. İşte işin tüm özeti bu şekilde. Türkiye’de ISS lerin yaptığı bu faaliyetleri şu yazılarda da görebilirsiniz;

Bu bölümü 2008 Yılında Pakistan Telekomun Youtube erişimini kısıtlamak için 208.65.153.0/24 IP Blokunu null0‘a (Black Hole) a yönlendirdiği örnekle kapatalım. Youtube kendi Routerlarında bu anonsu /22 olarak yapıyordu ve daha specific blok olan /24 tüm dünya routerları tarafından Routing Table’a yazıldı. Sonuç olarak dünya üzerindeki Youtube’a gitmek isteyen herkes Pakistan Telecom aracılığıyla null0‘a gönderildi. Youtube bu durumu aşmak için blokunu /24‘e çekip alt bloklar halinde anons etti. Daha sonra diğer ISPlerin de konu ile ilgili olarak yaptığı prefix-list tanımlaması Youtube erişimini yeniden açtı. 2 saat civarında bir süre kesintiden bahsedilmektedir. Bu olay Pakistan Telecom’un yapmış olduğu BGP Hijacking’e bir örnektir.

4.4 BGP Hijacking Yönteminden Nasıl Korunuruz?

AS (otonom sistem) sahiplerinin BGP Hijacking ataklardan korunmasının bir takım yolları vardır. Bunlardan bazıları;

  • Looking Glass Serverlar ile BGP’deki değişilikler gözlenebilir. LG Server ınternet üzerindeki bütün anonsların duyulduğu ISPlere ait gerçek routerlardır ve kişiler belli başlı bilgilere erişebilir, hangi networkler mevcut, hangi AS-Path ile bu networklere ulaşılıyor ya da benim yapmış olduğum network anonsları Internete ulaşıyor mu gibi.
  • ISPler Prefix-List kullanarak müşterilerinin sahibi olmadığı networklerin anonsunu yapmasını engeller.
  • ISPler sadece /24 ve altındaki networklerin anonsuna izin verirler. (/16, /17… vb)
  • ISPler AS-Path’i limitlerler
  • BGPSec ve RPKI kullanımı

Biz müşteriler için ise en güzel ve en kısa yöntem VPN kullanmaktır. Tabi premium veya ücretsiz bir DNS hizmetini ise ISS ler tarafından keşfedilene kadar kullanabilirsiniz 🙂

5. DNS Kullanmak Güvenli midir?

Son sözlerimizde DNS kullanmanın güvenli olup olmadığını konuşalım. DNS sorgularınız ağda açık metin (clear-text) olarak iletilir ve hangi siteye ulaşmak istediğiniz rahatlıkla öğrenilebilir. Fakat bu DNS sorguları herhangi bir şahsi içerik taşımaz. DNS paketlerinin incelenmesi sonucu sadece hangi sitelere girip çıktığınız gözlenebilir. Fakat BGP Hijacking, hosts dosyası saldırısı gibi yöntemlerle yanlış bir adrese yönlendirilme ihtimaliniz çok yüksektir. Hatta internette bulduğunuz çoğu ücretsiz DNS hizmetinin amacı sizleri tamamen yanlış adreslere yönlendirerek bilgi çalma üzerine kuruludur. Bu sebeple bilmediğiniz DNS hizmetlerini asla kullanmayınız.

DNS içeriğinizin okunmamasını istiyorsunuz DNSSecDNS over TLS (DOT)DNS Over HTTPS (DOH) gibi protokolleri kullanabilirsiniz. Böylece DNS paketlerinizde şifrelenerek gönderileceği için hangi siteleri ziyaret ettiğiniz okunamayacaktır. Yine de en güvenli yöntem sadece DNS paketlerinizi değil tüm trafiğinizi koruyan VPN protokolü kullanmak olacaktır.