[Gelistirici] Geçici DNS modeli

Furkan Duman coderlord at gmail.com
22 Ara 2008 Pzt 09:56:28 EET


19 Aralık 2008 Cuma 10:34 tarihinde Gürer Özen <gurer at pardus.org.tr> yazdı:
> Aslında en güzeli yerel bir dns proxy yazmak, yada uygun bi tane bulup entegre
> etmek. Bir global listesi olacak, bir de dhcp'den vb gelen geçici listesi.
> İsim çözme ricası geldiğinde listedeki herkese paralel sorgulama yapacak,
> daha sonra içlerinden en hızlı cevap vereni kullanmaya devam edecek. O da
> yavaş cevap verir hale gelirse tekrar listeden tarayacak. Sistemdeki
> resolv.conf ise bunu kullanacak şekilde ayarlanıp öyle bırakılacak.

Gürer'in tanımladığı bu işi karşılayacak ve sorunumuzu çözecek bir
uygulama buldum.

dnsmasq - http://www.thekelleys.org.uk/dnsmasq/doc.html

Uygulamanın artıları:

Uygulamayı seçme nedenlerimden ilki dbus desteğinin olması. Yani
resolv.conf elleşmeden veya başka dosyaları yaz boz yapmadan dbus
yoluyla dns sunucu ekleyebiliyorsunuz. resolv.conf ve hosts
dosyasındaki değişiklikleri izliyor, değişiklik varsa otomatik
listesini güncelliyor. ppp dns dosyası oluştuğunda otomatik dns
listesine ekliyor. Gürer'in tanımladığı gibi, paralel sorgu yapabilip
içinden en hızlıyı seçiyor. Daha da güzeli dns caching yapıyor. Bu
sayede normalde 120 ms olan dns sorgu sürem cache'lenen sorgularda 1
ms 'ye indi. Sayfaların bariz biçimde daha hızlı yanıt verdiğine şahit
oldum. Modem kullanıcıları için performans bariz biçimde artacak
bence. Test etmek lazım.

Eksileri:

dbus altyapısı istediğim metodları sağlamıyor. Eklemek lazım. ( Bu da
halloldu sayılır )

stack modelinde dnsmasq ile birlikte çalışması için gereken şeyleri
hallettim. Gayet güzel çalışmakta. Biraz daha ince ayar gerekli.Belki
bazı Comar modellerinde değişiklik gerekecek. Şu an emin değilim o
duruma gelince tartışırız. Yakında ilgili kodları playground a atarım.

Bundan önce ben size aklımdakileri söyleyeyim. Tasarımın bir özetini
çıkartmaya çalışayım, bunun üzerinde kafanıza yatmayanı konuşuruz:

Global olarak kullandığımız DNS tanımlarının çok bir anlamı olmadığını
düşünüyorum. Çıkarabiliriz veya kalabilir. Çok önemli değil. Priority
de sona atarız bu dns sunucuları.

Her profil kendi dns tanımlarını taşımalı. Bu Auto (dhcp'den) veya
manual (elle istenildiği kadar) olabilir. (NM arabirim değişikliği
lazım!)

Aynı anda iki profil up durumda ise her ikisinin de dns tanımları dns
listesine eklenir. Profillerden birisi down olduğunda o profile ait
dns tanımı dns listesinden çıkar, diğer profile ait olan kalır. (dns
listesinden kastım dnsmasq'a gönderdiğimiz dns adres listesi) Bütün
profiller down olduğunda dns listesi boşalır. (Veya koddan tamamen
çıkartmazsak sadece global dns tanımları kalır.)

resolv.conf üzerinde bir değişiklik yapılmaz. resolv.conf'da dnsmasq
kullanılması için sadece "nameserver 127.0.0.1" tanımı bulunur. Herşey
dbus üzerinden dnsmasq ile konuşarak halledilir. (Dosya işlemi
olmayacağı/azalacağı için Laptop pil süresinde ufak bir iyileştirme
diye düşünülebilir)

Bütün bunlar sayesinde DNS için, daha merkezi ve yönetilebilir bir yapı oluşur.

Fikirler, görüşler lütfen.

-- 
Furkan Duman


Gelistirici mesaj listesiyle ilgili daha fazla bilgi