dnsmasq nedir ve kullanım alanları nelerdir?
Bu flood’da DNS
, DHCP
, TFTP
sunucuları tek bir programda açık kaynaklı olarak sunan, biz geliştiricilerin başucu yazılımlarından dnsmasq
'ı ve bazı kullanım alanlarını inceleyeceğiz.
dnsmasq
fonksiyon zenginliği, kullanım kolaylığı ve hatasız çalışması ile küçük ve orta ölçekli birçok sistemde kendisine yer bulmaktadır. dnsmasq
, ilerleyen flood'larda inceleyeceğimiz bazı sistemlerde de konumlandırıldığı için doğru anlaşılması önemli bir programdır.
Adından da anlaşılacağı gibi dnsmasq
'ın en çok kullanılan özelliği DNS
sunucudur. dnsmasq
, DNS
sunucu olarak üzerinde yapılandırılan domain'ler için IP adresine dönüşümü sağlar. Kendi yönetmediği isimleri çözmek için de upstream
adlı başka DNS
sunuculara başvurur.
Örneğin, gokhan․dev
domain'i dnsmasq
'ta tanımlandıysa, dnsmasq
bu domain'deki www․gokhan․dev
sorgusuna kendi kayıtlarından cevap verecektir. bing.com
sorulduğunda ise kendi kontrol etmediği domain'ler için kullandığı DNS
sunucusuna sorup cevabı istemciye dönecektir.
dnsmasq
konfigürasyon dosyasında tanımlanan domain'lerdeki kayıtlara ek olarak üzerinde koştuğu bilgisayarın hosts
dosyasındaki kayıtlar için de cevap döner. dnsmasq
üzerinde istediğimiz domain'i tanımlayabileceğimiz için özellikle mobil cihazların trafiğinin dinlenmesi gereken senaryolarda cihaza DNS Spoofing
atak yapmak yani DNS
sorgusu sonucunda gerçek sunucu adresi yerine trafiğin dinleneceği sunucunun adresini vermek mümkün olur. Aşağıdaki ekran görüntüsünde dnsmasq
'a yapılan google․com
sorgusuna lokal IP ile cevap verilmiştir.
dnsmasq
klasik bir DNS
sunucu gibi yaptığı istekleri belirli bir süre için cache
'ler ve sonraki sorgularda performans avantajı sağlar ancak istenirse cache
devre dışı bırakılabilir. Negative Caching
olarak bilinen ve DNS
sunucudan gelen "kayıt bulunamadı" şeklindeki olumsuz cevapları da cache
'leyen mekanizma böylece devre dışı bırakılmış olur. İsim kayıtları ilk yapılırken ve değiştirirken cache
tam bir baş belası olmaktadır. Aslında dnsmasq
bütün cache
'i devre dışı bırakmadan Negative Cache
yapılmamasını da sağlayabilmektedir.
dnsmasq
, kontrolü dışındaki kayıtlar için en sağlıklı olduğunu düşündüğü upstream server
'ı kullanır, böylece en sağlıklı sunucu seçilmiş olur ancak istenirse --all-servers
opsiyonu ile kayıt sorguları bütün sunuculara gönderilir ve en kısa sürede dönen cevap kullanılır.
dnsmasq
kompleks kullanım senaryolarında a) host üzerinde çalıştırılan container
'lara DNS
sunucusu olarak verilebilir b) Minikube
'daki Kubernetes
servislerine isimleri ile erişmek için kullanılabilir c) Vagrant
'a plugin yardımıyla entegre edilebilir.
dnsmasq
'ın ikinci kullanım alanı DHCP
sunucu olarak görev yapmaktır. Tanımlanan IP aralığındaki IP'ler istekte bulunan sunuculara dağıtabilir ve cihazların bütün ağ (Default Gateway
, DNS Server
, Hostname
) konfigürasyonları yapılabilir.
dnsmasq
gelişmiş DHCP
sunucularda bulunan birçok özelliği de desteklemektedir. Bunlar belirli bir MAC
adresine veya bir hostname
'e sürekli aynı IP adresini verme, kablolu, kablosuz ağlara farklı ağ parametreleri gönderme gibi özelliklerdir.
Son olarak dnsmasq
bünyesindeki DHCP
ve TFTP
sunucuları ile önceki flood'lardan birinde bahsettiğimiz PXE - Preboot Execution Environment
standardına göre cihazların ağ üzerinden boot edilmesi için "komple" bir çözüm sunmakta ve bu alanda yoğun olarak kullanılmaktadır.