Ubuntu Dapper 6.06 Altinda Bind 9 DNS Server Kurulumu
From Lapis Wiki
Bu makale NASIL bölümü serisinin bir parçasıdır
|
| MasaÜstü • Donanım • Ağ • Dağıtımlar |
| Tarayıcılar• Programlama • Linux ve Oyunlar |
Konu başlıkları |
Giriş
Bu ufak yazıda size Ubuntu altında Bind9 DNS sunucusunun kurulumu anlatacağım. Aslında zapmak istediğim çok basit bir işlem, kendi DNS sunucumu kurmak ile, LAN daki bilgisayarların internette gezinmeleri oldukca hızlanıyor. Eğer kendi ağınızda 1 den fazla bilgisayar varsa, kesinlikle kendi DNS sunucunuzu kurmanızı tavsiye edeceğim.
DNS nedir, ne işe yarar gibi ön fasılı hemen geçip, hemen kurulum, kullanım ve diğer ayarları anlatmaya başlayacağım. Bu anlatıların hepsi Ubuntu Dapper 6.06 test edilmiştir.
Gerekli Olanlar ve Önhazırlık
- Yerel ağda kullanacağımız bir Domain ismi. Ben mesela erkan.ev olarak kullanmaya karar verdim/seçtim.
- Bir makina, Ubuntu kurulu bir makina.
- Bind9 paketi kurulu ( # aptitude install bind9 )
Evde kullandığım ağ yapısı kısaca şöyle:
+----------------+
-----> | Laptop Client1 |
| +----------------+
|
|
|
DSL |
/ +---------------------------+
Internet----> | Router/WLAN(192.168.0.1) |
+---------------------------+
|
|
|
|
| +--------+ +---------------------------+
----->| Switch |------ ------------> | Linux Makina(192.168.0.3) |
+--------+ +---------------------------+
||||||||
||||||||
||||||||
||||||||
+-----------------------------------+
| 192.168.0.xxx |
+-----------------------------------+
| | |
| | |
+----------+ +----------+ +----------+
| Client 1 | | Client 2 | | Client 3 |
+----------+ +----------+ +----------+
Detayları ile şöyle:
- acer 192.168.0.3 SERVER (Ubuntu/Gentoo makina)
- p600 192.168.0.4 Client1 (SuSE Makina)
- laptop 192.168.0.5 Client2 (Gentoo Makina)
- hpvectra 192.168.0.99 Client4 (Gentoo Makina)
- ms2003 192.168.0.100 Client3 (Ms2003 Server)
Zone Nedir
Zone, bir domain ağacının küçük bir bölümüdür ve bu bölümde bir DNS sunucusu için gerekli olan autoritative bilgileri içerir. Bir zone enaz bir Primary Nameserver tarafından yönetilir. Herhangi bir ihtimale karşı, secondary nameserver kurulması kesinlikle tavsiye edilir. Prmary Nameserver',in çalışmaması halinde, o domaine ait secondary nameserverler bu görevi üstlenebilirler.
Bir Zone'ye ait bilgiler, zone-dosyası adi verilen dosyalarda tutulur. Her zone-dosyasında DNS Resource Records kayıtları tutulur.
Bir Zone'ye ait bütün bilgiler Primary Nameserver de tutulur. Bu bilgiler düzenli aralıklar ile Secondary Nameserver'lere aktarılır. Bu işleme Zonentransfer adı verilir. Genelde Primary DNS Sunucusuna yapılan bir ayar ile, her restart işleminde bu bilgilerin aktarılması sağlabilir veya düzenli aralıklar ile secondary dns sunucularını sorması sağlanabilir.
DNS Resource Records
Bir ZONE'nin çalışabilmesi için belirli bazı verilerin mevcut olması gerekiyor. Fazla derine dalmadan, kısaca Resource Records türlerini açıklayalım:
SOA-Records
SOA = Start of Authority
SOA-Records kayıtlarında teknik olarak bu işten kimin sorumlu olduğuna dair bilgileri tutar.
Örnek bir SOA-Records kaydı:
@ IN SOA ns1.erkan.ev. postmaster.erkan.ev. (
20060410003 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
1D ) ; Negative Cache TTL
İlk baştaki 1. satırımız, kendi DNS sunucumuzu, yani Primary DNS Sunucumuzun ismi ( ns1.erkan.ev. ). Sonraki veri ise email adresi (postmaster.erkan.ev.) Yani bu Zone için sorumlu olan kişinin posta adresini tanımlıyor.
; (noktalı virgül) olan yerlerden sonraki yazılanlar yorum (comment) olarak algılanır.
Kullanılan kısaltmalar:
- H
- Saati tanımlar
- W
- Haftayı tanımlar
- D
- Günü tanımlar
Bütün bunları saniye olarakda verebilirsiniz. Mesela 1H yerine 3600 gibi yazılabilir
- Serial
- Serial numarası aslında kafadan uydurulabilecek bir sayı ile başlar ve sonra artırılarak gider. Bu sayı çok önemlidir. Özellikle aynı anda secondary dns sunucusu kullanıyorsanız, bu sayıyı her değiliklinten sonra +1 artırmanız gerekir. Çünkü slave dns suncuları bu rakamın değiştigini gördüklerinde kendilerini güncelliyorlar. Yani primary de değişiklik olduğu zaman +1 artırın ve dolayısı ile secondary dns sunucularıda bunları algılasınlar (20060410003 => sene:2006, 04. ay, 10 nisan ve 3 den başattım). Bu numara Slave sunucusuna aktarılır. Eşleşme yapabilmesi için, Master serial numarası slave serial numarasından büyük olması gerekir.
- Refresh
- Bir Slave sunucusunun hangi sıklıkta/aralıkta Master sunucusuna sorgulama göndermesi gerektiğini tanımlar. Bu sorgulamada sadece Serial numarasına bakılır. Değişiklik varsa eşleşme yapılır. Serial numarada değişiklik yoksa işlem yapılmaz.
- Retry
- Olası bir hatada, Slave sunucusunun hangi aralıkta Zonentransfer olayını tekrarlaması gerektiğini tanımlar.
- Expire
- Diyelimki Master sunucu herhangi bir nedenden dolayı çalışamaz durumda. Buraya girilen değer dahili içinde, Slave sunucusundaki bütün veriler geçerliliğini sürdürür. Süre bitiminden sonra Master sunucusunun çalışıyor olması gerekir. Aksi taktirde Slave sunucundaki bilgiler bütün güncelliğini yitirir.
- Negative Cache TTL
- Time to live: Cache deki Zone dosyasının yaşam süresini tanımlar.
NS-Records
Her zone de en azından, bu zone'nin salahiyetinin (ne güzel arapca bir kelime) kendisinde olduğunu söyleyen bir Nameserver olması gerekir. Yani o Zonedeki Nameserver sunucusu, o zone'nin temsilcisi olduğunu belirtir (güzel bir türkçe oldu sanırım).
Eğer ağda Slave Nameserver var ise, Master Nameserverde bunlar belirtilmesi/tanımlanması gerekir.
Örnek bir NS-Records kaydı:
IN NS ns1.erkan.ev. IN NS ns2.erkan.ev.
A-Records
A-Records kayıtları Domain isimlerini IP adresine bağlar. Yani tanımlanan domain ismi ile tanımlanan IP arasındaki köprüyü kurar.
Örnek bir A-Record kaydı:
laptop IN A 192.168.0.5
PTR-Records
PTR= Pointer Resource Records
PTR-Records kayıtları, IP adreslerini tersinde domain isimlerine yönlendirir.
Örnek bir PTR-Records kaydı:
5.0.168.192.in-addr.arpa. IN PTR laptop.erkan.ev.
veya, kayıt yapılacak olan dosyanın isminin 'db.192.168.0' olduğunu farz edersek, yapılacak kayıt aşağıdaki gibide olabilir. Yani IP adresinin sadece son numarası girilebilir.
5 IN PTR laptop.erkan.ev.
CNAME-Records
CNAME-Records tanımlamarı birer alias dır. Genelde FTP,WWW ve Mail sunucularının kısa alias'larında kullanılır fakat başka kısaltmalar içinde tanımlanabilir.
Örnek bir CNAME-Records tanımlası:
acer IN A 192.168.0.3 p600 IN A 192.168.0.4 .... .... ftp IN CNAME p600 mail IN CNAME acer mail2 IN CNAME p600
MX-Records
Eğer bu domain de birde Mail sunucusu varsa, mail sunucusunun kayıtları MX-Records ile zone ye ilave edilir.
IN MX 10 mail.domain.com. IN MX 20 mail2.domain.com.
Dikkat ederseniz bu örnekte 2 tane domain.com kaydı var. Ve başlarında numaralar var (10 ve 20). Aynı domaine gelen maillerde ilk öncelik dvamlı numarası düşük olan sunucuya yönlendirilir. Eğer bu yönlendirme başarılı olursa ve mail yerine ulaşırsa işlem sona erer. Yok gelen mail yerine ulaşamaz ise, yani öncelik numarası 10 ile tanımlanan sunucuya erişemz ise, bu sefer sıradaki önceki numarasına (yanı 20 20 numaralı posta sunucusuna) gönderilir.
Eğer MX-Records tanımlaması yapılmaz ise, gelen mail local olarak gönderilmeye çalışılır. Yani A-Records tanımlamaları basis alınır.
TXT-Records
DNS sunucusundaki meta bilgilerin aktarılmasındaki kullanılır.
Ayarlar ve Ayar Dosyaları
Aslında ayarlarımızı yaparken bizim için 3 dosya önemli. Bunlar sırası ile şöyle:
- /etc/bind/named.conf.local (zone tanımlarının yapıldığı dosya)
- /etc/bind/db.192.168.0 (PTR-Records tanımlarının bulunduğu dosya)
- /etc/bind/erkan.ev.db (A-Records tanımlarımın yapıldığı dosya)
/etc/bind/db.192.168.0 dosyasını bu şekilde tanımlarsanız, bu dosya içine gireceğiniz IP adreslerini kısaltabilirsiniz.
/etc/network/interfaces
DNS Sunucusunun sabit bir IP si var.
# The loopback network interface auto lo iface lo inet loopback address 127.0.0.1 netmask 255.0.0.0 # The primary network interface auto eth0 iface eth0 inet static # dns-nameservers 127.0.0.1 address 192.168.0.3 netmask 255.255.255.0 gateway 192.168.0.1
/etc/resolv.conf
Bu dosya içine erkan.ev satırını ekliyorum. Bu sayede laptop.erkan.ev yerine sadece laptop yazarak erişim sağlıyorum.
search erkan.ev nameserver 127.0.0.1
/etc/bind/named.conf
Bu dosya içinde hiçbir değişiklik yapmanıza gerek yok. Aynen orjinal olduğu gibi kalabilir. Sadece
include "/etc/bind/named.conf.local";
satırının başında yorum OLMAMASINA dikkat edin. Yani açık olması gerekli.
// This is the primary configuration file for the BIND DNS server named.
//
// Please read /usr/share/doc/bind9/README.Debian.gz for information on the
// structure of BIND configuration files in Debian, *BEFORE* you customize
// this configuration file.
//
// If you are just adding zones, please do that in /etc/bind/named.conf.local
//
include "/etc/bind/named.conf.options";
//
// prime the server with knowledge of the root servers
zone "." {
type hint;
file "/etc/bind/db.root";
};
//
// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912
//
zone "localhost" {
type master;
file "/etc/bind/db.local";
};
//
zone "127.in-addr.arpa" {
type master;
file "/etc/bind/db.127";
};
//
zone "0.in-addr.arpa" {
type master;
file "/etc/bind/db.0";
};
//
zone "255.in-addr.arpa" {
type master;
file "/etc/bind/db.255";
};
//
// zone "com" { type delegation-only; };
// zone "net" { type delegation-only; };
//
// From the release notes:
// Because many of our users are uncomfortable receiving undelegated answers
// from root or top level domains, other than a few for whom that behaviour
// has been trusted and expected for quite some length of time, we have now
// introduced the "root-delegations-only" feature which applies delegation-only
// logic to all top level domains, and to the root domain. An exception list
// should be specified, including "MUSEUM" and "DE", and any other top level
// domains from whom undelegated responses are expected and trusted.
// root-delegation-only exclude { "DE"; "MUSEUM"; };
//
include "/etc/bind/named.conf.local";
/etc/bind/named.conf.local
Bizim için önemli olan dosya. Yani erkan.ev domainini zone dosyası. type master; satırı primary dns sunusucu olduğu tanımlar. Slave sunucularda ise type slave; şeklinde tanımlanır.
// Sadece aşağıdaki IP aralığından gelen istekleri kabul eder.
acl locals { 127.0.0.1; 192.168.0.0/24;};
//
//
// A-Records Kayıtları
zone "erkan.ev" {
type master;
file "/etc/bind/erkan.ev.db";
allow-query { locals; } ;
};
//
// PTR-Records
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.0";
allow-query { locals; } ;
};
/etc/bind/erkan.ev.db
A-Records kayıtlarının bulunduğu dosyadır.
$TTL 86400
@ IN SOA ns1.erkan.ev. postmaster.erkan.ev. (
2006041003 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
1D ) ; Negative Cache TTL
;
@ IN NS ns1.erkan.ev.
;
ns1 IN A 192.168.0.3
acer IN A 192.168.0.3
p600 IN A 192.168.0.4
laptop IN A 192.168.0.5
hpvectra IN A 192.168.0.99
ms2003 IN A 192.168.0.100
/etc/bind/db.192.168.0
PTR-Records kayıtlarının bulunduğu dosyadır.
;
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA erkan.ev. root.erkan.ev. (
2006041003 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.erkan.ev.
;
3 IN PTR ns1.erkan.ev
3 IN PTR acer.erkan.ev.
4 IN PTR pc600.erkan.ev.
5 IN PTR laptop.erkan.ev.
99 IN PTR hpvectra.erkan.ev.
100 IN PTR ms2003.erkan.ev.
Bind9 Demonunu Başlatma
Nihayet bütün işlemler bitti. Bu kısım işin en kolay yanı. Şimdi 2 tane Shell penceresi açıyoruz. Birisinde LOG dosyasını live olarak takip edeceğiz, diğerinde ise bind9 demonunu çalıştıracağız. (2 shell penceresi açın)
1. Pencerede aşağıdaki komutu verin ve öyle bırakın:
# tail -f /var/log/daemon.log
2. Pencerede ise bind9 demonunun başlatın.
# /etc/init.d/bind9 restart * Stopping domain name service... [ ok ] * Starting domain name service... [ ok ]
Şimdi 1. pencereye geri dönün ve bir hata olup olmadığına dikkat edin. Eğer bir hata varsa orda gösterir. HAta yoksa aşağıdaki gibi bir çıktı görebilmeniz lazım.
Apr 11 12:47:05 localhost named[6836]: shutting down: flushing changes Apr 11 12:47:05 localhost named[6836]: stopping command channel on 127.0.0.1#953 Apr 11 12:47:05 localhost named[6836]: stopping command channel on ::1#953 Apr 11 12:47:05 localhost named[6836]: no longer listening on 127.0.0.1#53 Apr 11 12:47:05 localhost named[6836]: no longer listening on 192.168.0.3#53 Apr 11 12:47:05 localhost named[6836]: exiting Apr 11 12:47:07 localhost named[6877]: starting BIND 9.3.2 -u bind Apr 11 12:47:07 localhost named[6877]: found 2 CPUs, using 2 worker threads Apr 11 12:47:07 localhost named[6877]: loading configuration from '/etc/bind/named.conf' Apr 11 12:47:07 localhost named[6877]: listening on IPv4 interface lo, 127.0.0.1#53 Apr 11 12:47:07 localhost named[6877]: listening on IPv4 interface eth0, 192.168.0.3#53 Apr 11 12:47:07 localhost named[6877]: command channel listening on 127.0.0.1#953 Apr 11 12:47:07 localhost named[6877]: command channel listening on ::1#953 Apr 11 12:47:07 localhost named[6877]: zone 0.in-addr.arpa/IN: loaded serial 1 Apr 11 12:47:07 localhost named[6877]: zone 127.in-addr.arpa/IN: loaded serial 1 Apr 11 12:47:07 localhost named[6877]: zone 0.168.192.in-addr.arpa/IN: loaded serial 2006041003 Apr 11 12:47:07 localhost named[6877]: zone 255.in-addr.arpa/IN: loaded serial 1 Apr 11 12:47:07 localhost named[6877]: zone erkan.ev/IN: loaded serial 2006041003 Apr 11 12:47:07 localhost named[6877]: zone localhost/IN: loaded serial 1 Apr 11 12:47:07 localhost named[6877]: running Apr 11 12:47:07 localhost named[6877]: zone 0.168.192.in-addr.arpa/IN: sending notifies (serial 2006041003) Apr 11 12:47:07 localhost named[6877]: client 192.168.0.3#32812: received notify for zone '0.168.192.in-addr.arpa'
Kontrol Araçları/Komutları
# nslookup ns1.erkan.ev. Server: 127.0.0.1 Address: 127.0.0.1#53 ; Name: ns1.erkan.ev Address: 192.168.0.3
# nslookup > server laptop (kendiniz girin) Default server: laptop Address: 192.168.0.5#53 > server ms2003 (kendiniz girin) Default server: ms2003 Address: 192.168.0.100#53 > server hpvectra (kendiniz girin) Default server: hpvectra Address: 192.168.0.99#53 >
# dig @ns1.erkan.ev . ns ; <<>> DiG 9.3.2 <<>> @ns1.erkan.ev . ns ; (1 server found) ;; global options: printcmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41115 ;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 13 ;; QUESTION SECTION: ;. IN NS ;; ANSWER SECTION: . 515729 IN NS M.ROOT-SERVERS.NET. . 515729 IN NS A.ROOT-SERVERS.NET. . 515729 IN NS B.ROOT-SERVERS.NET. . 515729 IN NS C.ROOT-SERVERS.NET. . 515729 IN NS D.ROOT-SERVERS.NET. . 515729 IN NS E.ROOT-SERVERS.NET. . 515729 IN NS F.ROOT-SERVERS.NET. . 515729 IN NS G.ROOT-SERVERS.NET. . 515729 IN NS H.ROOT-SERVERS.NET. . 515729 IN NS I.ROOT-SERVERS.NET. . 515729 IN NS J.ROOT-SERVERS.NET. . 515729 IN NS K.ROOT-SERVERS.NET. . 515729 IN NS L.ROOT-SERVERS.NET. ;; ADDITIONAL SECTION: A.ROOT-SERVERS.NET. 602129 IN A 198.41.0.4 B.ROOT-SERVERS.NET. 602129 IN A 192.228.79.201 C.ROOT-SERVERS.NET. 602129 IN A 192.33.4.12 D.ROOT-SERVERS.NET. 602129 IN A 128.8.10.90 E.ROOT-SERVERS.NET. 602129 IN A 192.203.230.10 F.ROOT-SERVERS.NET. 602129 IN A 192.5.5.241 G.ROOT-SERVERS.NET. 602129 IN A 192.112.36.4 H.ROOT-SERVERS.NET. 602129 IN A 128.63.2.53 I.ROOT-SERVERS.NET. 602129 IN A 192.36.148.17 J.ROOT-SERVERS.NET. 602129 IN A 192.58.128.30 K.ROOT-SERVERS.NET. 602129 IN A 193.0.14.129 L.ROOT-SERVERS.NET. 602129 IN A 198.32.64.12 M.ROOT-SERVERS.NET. 602129 IN A 202.12.27.33 ;; Query time: 1 msec ;; SERVER: 192.168.0.3#53(192.168.0.3) ;; WHEN: Tue Apr 11 13:32:16 2006 ;; MSG SIZE rcvd: 436
# nslookup -class=CHAOS -query=txt version.bind Server: 127.0.0.1 Address: 127.0.0.1#53 ; version.bind text = "9.3.2"
Client Ayarları
Client bilgisayarlarda fazla birşey yapmanıza gerek yok. Sadece /etc/resolv.conf dosyasının içine SEARCH ve NAMESERVER tanımlamalarını yapmanız yeterli.
Örnek, laptop daki /etc/resolv.conf dosyası:
search erkan.ev # kullandığım domain ismim nameserver 192.168.0.3 # dns sunucusunun Ip adresi
DHCPD ve DNS İletişimi (DDNS = Dinamik DNS)
Evet, yukarıdaki bütün işlemleri yaptıysanız DNS sunucunuz çalışıyor olmalı. Şimdi biraz daha komplex bir konuya giriş yapalım.
LAN içinde 2-3 bilgisayar olunca insana fazla bir yük binmiyor. Fakat LAN içinde yüzlerce bilgisayar olunca insan ister istemez DHCPD olayının içine giriyor. Bizim bu bölümde yapacağımız ise, DHCP de DNS arasında bir iletişim sağlamak ve dhcp sunucusundan IP olan bir clientin nasıl DNS sunucusuna otomatikman kayıt yapabileceği, gene kopyala/yapıştır yöntemi ile kısaca değinelim.
Gerekli Paketlerin Kurulması
DHCP Sunucusu için aşağıdaki komutun verilmesi yeterli.
# aptitude install dhcp3-server
Anahtar Üretmek
DHCP ve DNS sunucularının birbiri ile iletişimini sağlayacak bir anahtar üretmemiz gerekecek. Yani "shared secret key" denilen olay fakat bu parolayı biz kendimiz üretmeyecegiz, aksine dnssec-keygen adındaki program üretecek ve üretilen parolayı hem DNS hemde DHCP sunucusu kullanacak. Yapacaklarımız kısaca şöyle:
# cd /etc # dnssec-keygen -a HMAC-MD5 -b 128 -n USER mykey
Bu komuttan sonra /etc/ dizini altında yeni 2 dosya olusacaktır (.key ve .private dosyaları):
# ls -l /etc/Kmykey* -rw------- 1 root root 47 2006-04-11 16:10 Kmykey.+157+36639.key -rw------- 1 root root 81 2006-04-11 16:10 Kmykey.+157+36639.private
Görüldüğü gibi bu dosyalar sadece ROOT kullanıcısı tarafından okunabilir. Çünkü bu dosya içinde kullanılan parola kayıtlıdır. Özellikle .private dosyası çok önemli bir dosyadır ve parolayı ihtiva eder(içerir). Aşağıdaki komut ile dosyanın içeriğini gözden geçirebilirsiniz.
# cat Kmykey.+157+36639.private Private-key-format: v1.2 Algorithm: 157 (HMAC_MD5) Key: bsFG/L92mdVZYLDL+ueDDg==
Bizim için önemli olan Key satırıdır. Çünkü iletişimde kullanılacak olan şifre odur.
Bütün işlemler bittikten sonra .key ve .private dosyalarını silebilirsiniz. Ya da güvenli başka bir dizine taşıyabilirsiniz.
Ayarlar ve Ayar Dosyaları
DDNS için fazla bir ayara gerek yok. Sadece aşağıdaki dosyaları değiştirmemiz yeterli olacak.
/etc/dhcp3/dhcpd.conf
- 192.168.0.1 = Router/Wlan IP numarası
- 192.168.0.3 = Acer sunucu (Linux Ubuntu makina ve üstünde DHCP ve DNS server çalışıyor.
DHCPD üzerinden IP almak isteyen herkese 10-150 arasında IP verilecek şekilde, aşağıdaki ayarları yapıyoruz.
allow unknown-clients;
ddns-update-style interim;
authoritative;
#
key MYKEY {
algorithm hmac-md5;
secret "bsFG/L92mdVZYLDL+ueDDg==";
};
#
zone 0.168.192.in-addr.arpa {
primary 192.168.0.3;
key MYKEY;
}
#
zone erkan.ev {
primary 192.168.0.3;
key MYKEY;
}
#
# Set parameters for the 192.168.0.0/24 subnet.
subnet 192.168.0.0 netmask 255.255.255.0 {
range 192.168.0.10 192.168.0.150;
option subnet-mask 255.255.255.0;
option domain-name-servers 192.168.0.3;
option domain-name "erkan.ev";
option routers 192.168.0.1;
# option smtp-server 192.168.0.1;
option netbios-name-servers 192.168.0.3;
}
#
# Başka Subnet varsa ilave edilebilir
#
# subnet 192.168.1.0 netmask 255.255.255.0 {
# }
/etc/bind/named.conf.local
Daha önceden mevcut olan dosyamızı aşağıdaki şekilde değiştiriyoruz.
acl locals { 127.0.0.1; 192.168.0.0/24;};
key MYKEY {
algorithm hmac-md5;
secret "bsFG/L92mdVZYLDL+ueDDg==";
};
zone "erkan.ev" {
type master;
file "/etc/bind/erkan.ev.db";
allow-transfer { locals; } ;
allow-update { key MYKEY; } ;
allow-query { locals; } ;
};
zone "0.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192.168.0";
allow-query { locals; } ;
allow-update { key MYKEY; } ;
};
/etc/bind/db.192.168.0
Daha önceden manuel olarak tanımladığımız isimleri kaldırmamız yeterli. Cünkü dhcp sunucusundan otomatikman IP almaya başladıklarında dinamik olarak gerekli olan dosyalar oluşturulacak.
; BIND reverse data file for local loopback interface
;
$TTL 604800
@ IN SOA erkan.ev. root.erkan.ev. (
2006041003 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
@ IN NS ns1.erkan.ev.
/etc/bind/erkan.ev.db
Aynen bu dosyada da manuel olarak yaptığımız girişleri kaldırıyoruz.
$TTL 86400
@ IN SOA ns1.erkan.ev. postmaster.erkan.ev. (
2006041003 ; Serial
8H ; Refresh
2H ; Retry
4W ; Expire
1D ) ; Negative Cache TTL
;
@ IN NS ns1.erkan.ev.
Servislerin Tekrar Başlatılması
DHCP demonunu başlatmak için
# /etc/init.d/dhcp3-server restart
DNS demonunu başlatmak için
# /etc/init.d/bind9 restart
Yukardaki komutları vermeden önce 2. bir pencere açıp "tail -f /var/log/daemon.log" komutunu verin ve olası hataları anında yakalayın. Bu hata mesajlarını incelerseniz hatalarınızı kolayca bulabilirsiniz.
Herhangi bir Client IP isteminde bulunduğu zaman, log dosyaları şunları yazmaya başlayacaktır:
Apr 11 17:46:15 localhost named[9697]: client 192.168.0.3#32854: updating zone 'erkan.ev/IN': deleting an RR Apr 11 17:46:15 localhost dhcpd: if laptop.erkan.ev IN TXT "319194aa93033f0eb672fff19a9e052a5a" rrset exists and laptop.erkan.ev IN A 192.168.0.150 rrset exists delete laptop.erkan.ev IN A 192.168.0.150: success. Apr 11 17:46:15 localhost named[9697]: client 192.168.0.3#32854: updating zone 'erkan.ev/IN': deleting an RR Apr 11 17:46:15 localhost dhcpd: if laptop.erkan.ev IN A rrset doesn't exist delete laptop.erkan.ev IN TXT "319194aa93033f0eb672fff19a9e052a5a": success. Apr 11 17:46:15 localhost named[9697]: client 192.168.0.3#32854: updating zone '0.168.192.in-addr.arpa/IN': deleting rrset at '150.0.168.192.in-addr.arpa' PTR Apr 11 17:46:15 localhost named[9697]: zone 0.168.192.in-addr.arpa/IN: sending notifies (serial 2006041005) Apr 11 17:46:15 localhost dhcpd: removed reverse map on 150.0.168.192.in-addr.arpa. Apr 11 17:46:15 localhost dhcpd: DHCPRELEASE of 192.168.0.150 from 00:08:0d:45:25:03 (laptop) via eth0 (found) Apr 11 17:46:18 localhost dhcpd: DHCPDISCOVER from 00:08:0d:45:25:03 via eth0 Apr 11 17:46:19 localhost dhcpd: DHCPOFFER on 192.168.0.150 to 00:08:0d:45:25:03 (laptop) via eth0 Apr 11 17:46:19 localhost named[9697]: client 192.168.0.3#32854: updating zone 'erkan.ev/IN': adding an RR at 'laptop.erkan.ev' A Apr 11 17:46:19 localhost named[9697]: client 192.168.0.3#32854: updating zone 'erkan.ev/IN': adding an RR at 'laptop.erkan.ev' TXT Apr 11 17:46:19 localhost dhcpd: Added new forward map from laptop.erkan.ev to 192.168.0.150 Apr 11 17:46:19 localhost named[9697]: client 192.168.0.3#32854: updating zone '0.168.192.in-addr.arpa/IN': deleting rrset at '150.0.168.192.in-addr.arpa' PTR Apr 11 17:46:19 localhost named[9697]: client 192.168.0.3#32854: updating zone '0.168.192.in-addr.arpa/IN': adding an RR at '150.0.168.192.in-addr.arpa' PTR Apr 11 17:46:19 localhost named[9697]: zone 0.168.192.in-addr.arpa/IN: sending notifies (serial 2006041006) Apr 11 17:46:19 localhost dhcpd: added reverse map from 150.0.168.192.in-addr.arpa. to laptop.erkan.ev Apr 11 17:46:19 localhost dhcpd: DHCPREQUEST for 192.168.0.150 (192.168.0.3) from 00:08:0d:45:25:03 (laptop) via eth0 Apr 11 17:46:19 localhost dhcpd: DHCPACK on 192.168.0.150 to 00:08:0d:45:25:03 (laptop) via eth0
Eğer herşey yolunda gittiyse, aynı yukardaki gibi bir log dosyanız olması gerekir.
DDNS Çalışırlık Testi
Efet bu son kontrolmüz. Dinamik olarak IP alan bir Client DNS veribankasına ilave edilmesi gerekiyor. Bunun kontrolünü yapmak çok basit. Bunun için /etc/bind/erkan.ev.db ve /etc/bind/db.192.168.0 dosyasını açıp bakmanız yeterli:
# cat db.192.168.0 ....... ....... $TTL 43200 ; 12 hours 150 PTR laptop.erkan.ev.
# cat erkan.ev.db
.....
.....
laptop A 192.168.0.150
TXT "319194aa93033f0eb672fff19a9e052a5a"
Görüldüğü gibi hem A-Records hemde PTR-Records kayıtları otomatik olarak yapılmış. Artık rahat bir nefes alabilirsiniz.
Anahtar Hatası
Bazen bind9 restart olurken Log dosyasında KEY hatası görebilirsiniz. Bunun sebebi default KEY kullanılması. Bunun için /etc/bind/rdnc.key dosyasını ürettiğiniz KEY e göre değiştiriniz:
key "rndc-key" {
algorithm hmac-md5;
secret "bsFG/L92mdVZYLDL+ueDDg==";
};
Artık bundan sonra sorunsuzca üretilen KEY kullanılacaktır.
Anahtarı yukardaki şekilde düzelttikten ve bütün servisleri tekrar başlattıktan sonra hala aynı hatayı vermeye devam etti. Bilgisayarı kapatıp açtıktan sonra bu hata kendiliğinden kayboldu. Sanırım bir yerlerde hala cache olarak kalıyor. Sizde aynı hatayı alırsanız, kapatın ve tekrar açıp deneyin. Tahminen düzelecektir.
Secondary Nameserver
Eğer Master Nameserver başarılı bir şekilde çalışıyor, Secondary Nameserver kurulumunu tamamlamak gerçekten çok basit. Çünkü çalışan Master Nameserver'e ait bütün dosyaları alıp Secondary Nameserver de kullanabiliriz. Sadece 2-3 yerini değiştirmemiz gerekli.
Ayarlar ve Ayar Dosyaları
Secondary Nameserver de sadece aşağıdaki dosyayı değiştirmemiz ve Master Nameserver IP adresini tanımlamamız yeterli olacaktır. Diğer ayarlar aynen kalabilir:
/etc/bind/named.conf.local
Bu dosya içinde sadece TYPE ve MASTERS değişkenlerini değiştirmeniz yeterli olacaktır.
acl locals { 127.0.0.1; 192.168.0.0/24;};
key MYKEY {
algorithm hmac-md5;
secret "bsFG/L92mdVZYLDL+ueDDg==";
};
zone "erkan.ev" {
type slave;
masters {192.168.0.3; };
file "/etc/bind/erkan.ev.db";
allow-transfer { locals; } ;
allow-update { key MYKEY; } ;
allow-query { locals; } ;
};
zone "0.168.192.in-addr.arpa" {
type slave;
masters {192.168.0.3; };
file "/etc/bind/db.192.168.0";
allow-query { locals; } ;
allow-update { key MYKEY; } ;
};
Master ve Slave Eşleştirmesi
Hem Master hemde Slave makinadan aşağıdaki gibi bir çıktı aldığınızdad bütün Zonetransfer işlemi gerçekleşmiş olacaktır.
# dnswalk erkan.ev. Checking erkan.ev. Getting zone transfer of erkan.ev. from ns1.erkan.ev...done. SOA=ns1.erkan.ev contact=postmaster.erkan.ev 0 failures, 0 warnings, 0 errors.
DNSWALK extra bir pakettir. Kurmanız gerekli. Öntanımlı olarak kurulu gelmez.
Güvenlik için ufak öneriler
TODOOOO
İndirme
Bütün ayar dosyalarını aşağıdaki adresden indirebilirsiniz. Ayar dosyaları en güncel halidir. Yukarda anlatılankların haricinde birkaç ilave satırlar içerebilir.
Master Nameserver+DHCP ayar dosyaları
http://erkan.linux-sevenler.org/dhcp_bind9.tar.gz
Slave Nameserver ayar dosyaları
http://erkan.linux-sevenler.org/slave_bind9.tar.gz
Son Söz
Konu ile ilgili yorumlarinizi asagidaki adrese yapabilirsiniz
http://forum.linux-sevenler.org/index.php/topic,4194.msg20780/topicseen.html#msg20780
