Aziz Ozbek
WordPress Expert from Zürich
Bind9 Dns Server yapılandırmak ubuntu linux

🗂 Bind9 DNS Server Kurulumu Linux – Ubuntu 16.04

Bind9 DNS Server, ağ aygıtlarının IP Adreslerini domain isimlerine atamanızı sağlar. Bind ile bir IP Adresine, birden fazla domain ismide atayabilirsiniz. Örnek olarak; 192.168.1.10 IP adresli ağ aygıt için hem Webserver “domain.com.tr” hemde Mailserver “mail.domain.com.tr” isimlerini ve istediğiniz kadar fazla isim kullanabilirsiniz. Bind9 DNS Server Kurulumu konusunda biraz DNS mantığına birazda Bind’in çalışma prensibine değineceğim. Eğer siz windows kullanıcıysanız, ilerde Windows Server 2012 R2’de DNS Kurulumunu göstereceğim.

🖥DNS(Domain Name System) Nedir?

İnternetteki her ağ aygıtına, “IP adresi” adı verilen ve benzersiz olan (ancak zaman içinde değişebilen) bir numara verilir).

Örneğin, benim websitemin “azizozbek.ch” IP adresi 104.18.51.8 . Windows’ta Cmd konsolunu veya Linux’ta bir Terminali açıp ping azizozbek.ch veya nslookup azizozbek.ch yazarsanız, web sitemin IP adresini alırsınız. Normalde web siteme taraycı ile http://104.18.51.8/  veya terminalden curl 104.18.51.8 ile ulaşabilirsiniz. Fakat ben Cloudflare kullandığım için ve Cloudflare doğrudan Ip adresine izin vermediği için şuan ulaşamazsınız. Benim site yerine Google’a ping atın ve gelen IP’yi Tarayıcıdaki adres çubuğu kısmına yapıştırın(http://172.217.18.3).

Bu tür sayılarin bizim için hatırlanması zor ve IP adresleri değişebileceğinden, DNS (Domain Name System) geliştirildi. Bu sistem IP adreslerine, Domain adı verilen okunması daha kolay bir ad atar.

DNS Server work principle
img.1 Domain Name System Work Principle

Domain ve Subdomain nedir?

DNS‘in mantığı cep telefonunuzdaki Kişiler Rehber ile aynıdır. Misal; Ahmet’in iki tane numarası var, biri iş hayatında kullandığı numara, diğeri özel hayatta kullandığı numara. Sen de Ahmet’i aramak istiyorsun. Eğer telefondunda kişiler rehberi olmasaydı, iki numarayı da ezbere bilmek zorunda olurdun ve her seferinde yazman gerekirdi. Rehber olduğu için, yapman gereken sadece Ahmetin ismini bilmek ve bu iki numarayı rehberine, “Ahmet İş” ve “Ahmet Özel” diye kaydetmek.

Böyle kaydettiğimizde DNS mantığı ile bakarsak iki tane Domain ismimiz olur, yani rehberde iki kişilik yer kaplamış olur. Fakat önce Ahmet’i ismi ile kayıt edip, sonra İş ve Özel olarak iki alt numara kaydederseniz, rehberinizde bir tane Domain ve bu Domaininde de iki tane Subdomain olmuş olur.

rehber-dns-karsilastirma-domain
3 (Kayıt) Domain
rehber-dns-karsilastirma-subdomain
1 Domain, 2 Subdomain

Bind nedir?

BIND – Berkeley Internet Name Domain, Linux İşletim Sistemleri için alan adı sisteminde (DNS) isim çözümlemeye yarayan açık kaynaklı bir program paketidir. Yazılım, 1980’lerin başında Berkeley’deki California Üniversitesi’nde ortaya çıktı. Bu yüzden ismini bulunduğu yer olan Berkeley’den almıştır. Şimdilik bize bu kadar bilgi yeter. Bind hakkında daha fazla öğrenmek istiyorsanız resmi web sitesini ziyaret edebilirsiniz.

Bind9 DNS Server Kurulumu Linux – Ubuntu 16.04

🛠Güncelleme & Kurulum

Öncelikle, sisteminizi güncellemeniz ve yükseltmeniz gerekir, böylece olası bir hata ile karşılaştığınızda, güncellik problemini listenizden kaldırabilirsiniz.🙂

sudo apt update -y - sudo apt upgrade -y

Eğer Ubuntu 16.04 Versiyonundan aşağısını kullanıyorsanız, “apt-get” yazmalısınız.

sudo apt-get install bind9 bind9utils

Kurulum başarı ile tamamlandıktan sonra BIND’i IPv4 moduna ayarlayın. sudo vi /etc/default/bind9

ipv4-mode-bind9
img.1 – Bind’i IPv4 moduna getirme

Birincil DNS Server Yapılandırma

Hedef

Benim iki tane Sanal Makinem var. Bunlardan birini Nameserver olarak diğerini de Client olarak kullanıcam.

HostRolFQDN*IP Address
nsBirincil DNS Serverns.dns.azizozbek.ch192.168.1.130
clientDNS Clientclient.dns.azizozbek.ch192.168.1.131

*FQDN = Fully-Qualified Domain Name

Ilk olarak Bind dizinine gidelim. cd /etc/bind/

named.conf.options dosyasinda nameserver dahil güvenilir Hostları(Ağ Üyelerini) belirleyelim. Ben bu konuda Slave Nameserver(Yedek, Köle) eklemicem. Slave Nameserver ile verilerinizi iki yerde tutarsınız ve Nameserverlardan birinde taşma olursa, yada kapanırsa, yedek Nameserver devreye girer, binevi backup. Lokalde kurulum yapıyorsanız, büyük ihtimal fazla ihtiyaç duymazsınız.

Recursive Mode

Eğer Recursive Modunu etkinleştirirseniz, Clientlardan(Resolver) Domain talebi geldiğinde ve istenilen Domain Nameserverda bulunmadığında, Nameserver diğer Nameserverlara talebi iletir, eğer onlarda da Domain bulunmazsa, size öneride bulunur

Iterative Mode

İterative Modunda, Nameserver’da istenilen Domain varsa size IP’yi verir, yoksa bilmediğini söyler.

img.2 – named.conf.options

Yukarda ki düzenlemeleri yaptıktan sonra, Zoneları(Alanları) belirleyelim. named.conf.local dosyasında henüz bişi olmayabilir. Aşağıdak ekran fotosundaki yazabilirisiniz(elinizin alışması için öneririm). Yazmak istemiyorsanız, named.conf.default-zones dosyasinda hazır Şablonlarda mevcut. Ordan named.conf.local dosyasına kopyalayabilirsiniz ve isimleri kendinize göre değiştirebilirsiniz. İlk zone paragrafı bizim Forward lookup zone’muz. İkincisi ise Reverse(ters) Lookup Zone. Burda dikkat etmeniz gereken, DNS çözümleme sağdan başladığı için, Ağ Ip’inizi tersten yazmanız. Yani Ağ Ip’isi 192.168.1.0 ise 1.168.192.in-addr.arpa yazmalısınız.

ubuntu bind9 named conf local
img.3 – Named.conf.local

Bölge isimleri size bağlı. Bu konu için ben kendi sitemin reklamını yaptığım için “dns.azıözbek.ch” adresini seçiyorum. Siz Lokalde deniyorsanız, ismi istediğiniz gibi değiştirebilirsiniz. Misal bir Lig ismi kullanabilirsiniz. Örneğin “superlig.local”. Böylece, Futbol Kulübü isimlerini Clientlara atayabilir ve bunları kolayca hatırlayabilirsiniz. Misal benim çalıştığım şirkette Gezegenleri Nameserver olarak kullanıyorlar.

📝Forward Lookup Zone – Bind9 DNS Server Kurulumu

İlk olarak Zone’lar(Alanlar) için ayrı bir klasör oluşturalım. sudo mkdir /etc/bind/zones. Sonra db.local dosyasını kendi Forward Lookup Zone adınızı vererek kopyalayın. Bu isim named.conf.local‘de ki ile aynı.

cp db.local zones/db.dns.azizozbek.ch

DNS Resource Records – Kaynak Kayıtları

$TTL: (Time to Live) Hayatta Kalma Zamanının değerini belirtir. Burada saniye cinsinden belirttiğimiz süreç, diğer DNS sunuculara bu alanın kayıtlarını ne kadar süreyle onbellege alması gerektiğini söyler. Yani burada bir DNS Sunucusunun bizim Sunucudan istek talep ettiğinde, verdiğimiz cevabın onların Onbelleğinde ne kadar süre durmasını söyler. Böylelikle aynı sunucu TTL Süresi bitene kadar ikinci kez aynı Sorgu için bizim sunucuya gelmek zorunda kalmaz.

SOA (Start of Authority): Bu kayıt dosyanın içinde olmalıdır.  Bir domaine ait global paramtertelerin belirtildiği ana kayıttır.

Bu satırdaki “@” işareti, alan adının kendisini gösterir. “IN”, Internet demek ve sınıftır(class), “SOA” kaynak kaydı (rr), ana isim sunucusu “ns.dns.azizozbek.ch” ve “admin.dns.azizozbek.ch” yetkilinin e -posta adresi. Burada @ yerine . (nokta) kullanır:

  1. Serial : Format olarak YYYYMMDDXX okunur. Yani 2007040101 -> 01/04/2007 oluşturulmuş ve bir kez değiştirilmiştir. İkinci değiştirme de 2007040102.
  2. Refresh : Bilgilerin yenilenme süresi.
  3. Retry : Yenilenirken bir hata çıkarsa, tekrar deneme süresi.
  4. Expires’: Son kullanma tarihi de diyebiliriz.
  5. Negative cache TTL’: Yukardaki hayatta kalma süresi ile aynı olmalıdır.

NS: Nameserver ismi.

MX: Mail Server Bilgisi. Birden fazla eklenildiğinde öncelikte belirtilmelidir. En düşük sayı en yüksek önceliktedir.

A: IPv4 Adresinde (32 bits) domaine karşılık gelen IP

AAAA: IPv6 adresinde (128 bits) domaine karşılık gelen IP

CNAME: Alias(Göbek isim) olarak kullanilir.

PTR: A Kaydının tam tersi gibi çalışır.

Forward Lookup Zone dosyanız aşağıdaki gibi görünmelidir:

ubuntu bind9 forward-lookup-zone
img.4 – Forward-lookup-zone

📝Reserve Lookup Zone – Bind9 DNS Server Kurulumu

Reverse Lookup Zone dosyası, ters DNS aramaları için DNS PTR kayıtlarını tanımladığımız yerdir.

ubuntu bind9 reserve lookup zone
img.5 – Reserve Lookup Zone

✔️Yazım Hatalarını Kontrol Etme – Bind9 DNS Server Kurulumu

sudo named-checkconf komutu ile oluşturduğunuz dosyaları kontrol edebilirsiniz. Eğer bi hata yok ise herhangi bir çıktı ile karşılaşmazsınız. Forward Lookup Zone ve Reverse Lookup Zone dosyalarını da aşağıdaki gibi kontrol edebilirsiniz.

sudo named-check
sudo named-checkzone dns.azizozbek.ch db.dns.azizozbek.ch // bind klasörunun icinde degilseniz, dosyanin tam yolunu verin.
sudo named-checkzone 1.168.192.in-addr.arpa db.192.168.1

Kontol ettikten sonra, Bind yeniden başlatın.

sudo /etc/init.d/bind9 restart
sudo /etc/init.d/bind9 status //check out if it works
ubuntu bind9 server status
img.6 – Bind9 Server Status

⚙️Client Konfigurasyonu

Aslında Client Tarafında herhangi bir şey yapılandırmanız gerekmez. DHCP Sunucunuz varsa, orada sadece Nameserver’i “ns.dns.azizozbek.ch” ekleyin ve DHCP Bilgilerinizi yenileyin.

dhclient -r
dhclient ens33 // give here your interface name
ipconfig /renew // Windows CMD

Fakat benim DHCP Server’im yok.(Aslında var, ama Router’dan, Router’da kompakt olduğu için yapılandıranıyorum). Ayrıca benim kullandığım domain hali hazırda var olduğu için, bunu lokalde kullanmak için ayrıca bir değişiklik yapmalıyım. İlk olarak “resolv.conf” dosyası ile oynuyoruz. Aşağıdaki kodlar ile dosyayı kalıcı olarak değirtirebilirsiniz. Eğer tek seferlik istiyorsanız, direk dosyanın kendisini değiştirin.  sudo vi /etc/resolv.conf,

sudo vi /etc/resolvconf/resolv.conf.d/head
sudo resolvconf -u // regenerate new resolv.conf
ubuntu bind9 server status
img.7 – /etc/resolvconf/resovl.conf.d/head
ubuntu regenerate resolv.conf
img.7.1 etc/resovl.conf

Eğer sizin özel FQDN’iniz “superlig.local”, gibi ise, sizin işiniz burda bitiyor. nslookup ile Sunucuyu kontrol edebilirsiniz.

nslookup 192.168.1.131
nslookup client

Ben halka açık bir FQDN olduğu için “ns.dns.azizozbek.ch” Domain sorgu sıralamasını değiştirmeliyim. Eger nslookup client, yazarsaniz Istek ilk olarak /etc/hosts dosyasina, sonra /etc/resolv.conf dosyasina Sunucuyu bulmaya gider. /etc/hosts dosyası, içinde Nameserver’in IP’sini istediğim isime atayabilirim, fakat bu bir çözüm değil. O yüzden /etc/nsswitch.conf dosyasındaki DNS Sorgu sıralamasını değiştiricem.

nsswitch.conf

ubuntu bind9 nsswitch.conf
img.9 /etc/nsswitch.conf

Sıralamayı değiştirdikten sonra nslookup ile domain ismini kontrol ediyorum ve herşey problemsiz çalışıyo. Ben Nameserver’in olduğu Ubuntu’ya Webserver’da kurmuştum. Eğer Nameserverin adını Tarayıcıda adres çubuğuna yazarsam, web serveri görürüm.

ubuntu bind9 browser apache
img.10 Final Görünümü

Bu konuda Bind9 DNS Server Kurulumu ile ilgili neredeyse bildiğim herşeyi yazmaya çalıştım 🙂 DNS Konusunda uzman değilim, ancak bir herhangi bir Hata ile karşılaşırsanız, aşağıda yorum yapabilirsiniz.

Rating: 4.9/5. From 9 votes.
Please wait...

6 comments

  1. bu .com .net .org alan adları nasıl kuruluyor lütfen cevaplayın bu sayfadakını yaparsam .com diye olurmu yada siz .com .net .org alan adı yapımı videosu çekermisiniz lütfen saygılar

  2. Merhaba Azizullah. .com ‘lu bir siteyi ücretsiz bir şekilde kurma ihtimalim yok mu? Anlattığın bind9 local haricinde çalışmıyor mu, ya da global dns için linux üzerinde yapabileceğim neler var?

    1. com Top-Level-Domainler ücret karsiligi satin alinmalidirlar(kiralanmalidirlar). Bind’in Global çalisabilmesi için global erisilebilir olmasi lazim, bunu da sbait bir IP-Adresi ile yapabilirsin.

  3. Merhabalar,
    Burada 1 Domain İcin İcin Gerekli Forward ve Reverse Tanimlamalari Anlatilmaktadir.
    Ornek Olarak Birbirinden Bagimsiz 2 Domain İcin Forward ve Reverse Dosyalarini Nasil Yapilandirmam Gerekmektedir ?
    Genel Olarak 1 Adet DNS Sunucum Suan İcin Bulunmaktadir

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir