21 January 2011

Migrasi Windows DNS server ke BIND di Windows XP Pro

Minggu ini minggu penuh dns bwt gw, tiba tiba server utama yang ngelayanin dns request di kantor ga berfungsi dengan sukses, dia pake windows dns server, berhubung ganti nya si server itu komputer yang lisensinya windows xp terpaksa nyari alternatif, yang ada ya si BIND, dns server gratisan.

Sebelum cerita tentang instalasi dns, kan ada ribut ribut masalah blocking porno di blackberi, di bulan agustus kmaren pernah cerita cara filter via dns, eeh.. ternyata si RIM ngikutin cara yang kurang lebih sama dengan yang gw pake, via dns filtering punya kominfo si nawala. Bagus lah... murah meriah n simpel.

Balik lagi ke migrasi, setting gw dns nya setting yang simple banget, kantor butuh beberapa domain yang ketika di browse di arahkan ke ip-address lokal, biar developer bisa akses server langsung, ga muter2 ke dunia luar dulu, sisa query untuk domain domain lain di forward ke dns server luar, dalam kasus gw, gw forward ke opendns, berhubung dibutuhkan filtering

Inti yang bakal gw tulis
1. Introduksi kilat dns server, terutama yang menyangkut migrasi aja
2. Ambil Data Windows DNS Server dengan copy/backup data data file zone windows dns server
3. Instalasi BIND
4. Setting BIND dan migrasi data file2 zone dns-server

Mulai...

Introduksi
- dns server : server yang nerjemahin nama domain (mis: www.goole.com, www.aespesoft.com, www.yahoo.com) ke ip address dari server domain tersebut, kalau pingin tau manual, buka command prompt terus ping aja alamat itu, nah hasil angka adalah


c:\>ping www.google.com


Pinging www.l.google.com [209.85.153.104] with 32 bytes of data:
Reply from 209.85.153.104: bytes=32 time=120ms TTL=52
Reply from 209.85.153.104: bytes=32 time=111ms TTL=52
Reply from 209.85.153.104: bytes=32 time=114ms TTL=52


Ping statistics for 209.85.153.104:
    Packets: Sent = 3, Received = 3, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 111ms, Maximum = 120ms, Average = 115ms

yang warna merah itu hasil kerjaan dns server

- zones, dns server nyimpan data2 domain yang dia handle itu dalam zones, ada 2 type, forward dan reverse, kalau forward itu nerjemahin dari nama domain ke ip-address, klo reverse, itu nerjemahin dari ip-address ke nama domain. Dari zone ini isinya ada macam2 record type yang gw pake cuman tipe A (address), NS (name server) dan MX (mail xchange), sisanya cari aja di wiki ya :D.

Sepertinya udah ada kesepakatan dalam bikin dns server, tiap zone yang tercatat dalam dns server, disimpan dalam satu file, untuk windows dns server, extensi file2 zone = .dns, disimpan di C:\windows\system32\dns 

contoh isi file zone, file ini sebagai misal aja, dinamain : guwe.com.dns,  dibawah ini struktur minimal file zone yang bisa bikin jalan

@ IN SOA ns1. (
       postmaster ; contact email 
       2004041700 ; Serial ID in reverse date format
       21600 ; Refresh interval for slave servers
       1800 ; Retry interval for slave servers
       604800 ; Expire limit for cached info on slave servers
       900 ) ; Minimum Cache TTL in zone records


@       NS ns1.
@       A  192.168.0.7
www      A 192.168.0.10
test     A  192.168.0.11

Dari data file zone diatas, dns server bakal memetakan www.guwe.com ke 192.168.0.10 dan test.guwe.com ke 192.168.0.11 dan guwe.com (tanpa subdomain apapun) ke 192.168.0.7

Note yah, dns sistem yang gw pake itu dibutuhkan yang sederhana banget, lihat lagi setting yang lain kalau pengen bagus, biasanya sih ada info ns1 itu ip berapa dsb...

Ambil Data Windows DNS Server


copy semua file file zone dengan ekstensi *.dns dari folder c:\windows\system32\dns ,

Instalasi BIND


kepanjangan kalau gw cerita disini, untuk panduan instalasi bisa ke
1. http://alex.charrett.com/bind-on-windows-mainmenu-3 atau
2. http://ipintarakan.blogspot.com/2008/03/installasi-dan-setting-bind-9-di.html

Dari link ke dua itu gw dapet contoh konfigurasi bind yang paling bagus, yaitu situs dollardns yang bisa diakses di http://www.dollardns.net/bind/ tapi setting dari si dollardns ini aga di rubah sesuai kebutuhan gw

Setting BIND dan Import Data


Situasi gw, seperti yang gw bilang diatas, pertama memetakan domain server2 punya kantor dulu, terus resolving situs2 lain ke dns server opendns (forwarding), domain2 server kantor itu punya ip publik dan ip lokal, yang dikasi ke developer di kantor gw, ip lokal dulu, bukan yang publik.

Setelah instalasi BIND beres, file configurasi yang bakal sering di edit yaitu "named.conf", dibawah contoh yang masih kosong info zone2nya, yang ditebelin warna merah itu yang gw rubah

##############################################################################
# Server Configuration
#
options {
# Set the working directory from which all relative paths are based
# For the win2k default install "C:\WINNT\system32\dns\etc"
#
directory "d:\named\zones";


# RECURSION - Required for caching servers
# Default: yes
# Values : yes, no
#
# yes: Attempt to resolve requests we are not authoritative for
# no : Do not resolve requests we are not authoritative for
#
recursion yes;


# ALLOW-RECURSION - Who may use our caching server?
# Default: any;
# Values : any, none, (addresslist)
#
# any : anybody may use the caching server
# none : noone may use the caching server
# address: List of IP addresses that may use the caching server.
#
allow-recursion { localhost; localnets; };


# FORWARD - Recommended for caching servers
# Default: first
# Values : first, only
#
# first: Query "forwarders" first, then resolve request ourself
# only : Only query the "forwarders" to resolve requests
#
# forward first;


# FORWARDERS - Required if "forward" is used
# Default: (no forwarding)
# Values : (addresslist)
#
# It is recommended that you use your ISP's caching server addresses
# Example: forwarders { 127.0.0.1; 127.0.0.2; }
#
forwarders {208.67.222.222; 208.67.220.220 };


# QUERY SOURCE - Useful for caching servers behind a firewall
# Default: address * port *
# Values : The IP address and port to use as the source of queries to other servers
#
#query-source address * port 53;


# NOTIFY - Relevant to authoritative servers
# Default: yes
# Values : yes, explicit, no
#
# yes : Send DNS NOTIFY messages to slave servers in zone NS records when zone changes
# explicit: Only send DNS NOTIFY messages to "also-notify" hosts
# no : Never automatically send DNS NOTIFY messages
#
notify no;
};


################################################################################
# Logging Configuration
#
logging {
#
# Define channels for the two log files
#
channel query_log {
severity info;
print-time yes;
file "query.log" versions 3 size 100M;
};
channel activity_log {
severity info;
print-time yes;
print-category yes;
print-severity yes;
file "activity.log" versions 3 size 100M;
};


#
# Send the interesting messages to the appropriate channels
#
category queries { query_log; };


category default { activity_log; };
category xfer-in { activity_log; };
category xfer-out { activity_log; };
category notify { activity_log; };
category security { activity_log; };


category update { activity_log; };
#category update-security { activity_log; }; # BIND 9.3 only


#
# Dump all uninteresting messages
#
category network { null; };
category lame-servers { null; };
};


##############################################################################
# Zone Configuration
#


#
# Specify the root name servers
#
zone "." IN {
type hint;
file "db.root.hint.txt";
};


#
# tempat nulis domain dan file yang bersangkutan
#


zone "guwe.com" IN {type master;file "guwe.com.dns";};


Info :
- d:\named itu folder instalasi BIND gw di windows xp
- semua file zones dari windows dns server, gw pindahin ke folder d:\named\zones
- setting forwarders gw aktifin, tapi ga gw set first, biar dia resolve hasil editan kita dulu baru di forward ke opendns, alamat dns server si opendns = 208.67.222.222 ama 208.67.220.220 untuk pake nawala ganti dengan 180.131.144.144 dan 180.131.145.145

Untuk mastiin jalan, coba set dengan data simple diatas,  bikin file guwe.com.dns taro di d:\named\zones terus buka command prompt via start-run, ketik cmd terus enter, kemudian ketik

nslookup - ipaddressserver


Ganti ipaddresserver dengan ipaddress tempat BIND terinstall, dalam kasus saya ip addressnya 192.168.1.10 ketik guwe.com, kalau ada result ip 192.168.0.7  berarti si BIND sebagai dns server udah jalan. 



C:\>nslookup - 192.168.1.10
> guwe.com
Server:         192.168.1.10
Address:        192.168.1.10#53


Name:   guwe.com
Address: 192.168.0.7
>




Sekarang tips untuk memasukkan secara massal data zone2 dari windows dns server yaitu dari file file dns dari hasil copyan ke named.conf ini, butuh editor kolumnar dan command prompt. editor kolumnar bagusnya pake excel, kalau ga ada, cari alternatif lain ya

- pertama, buka excel
- kedua buka command prompt lagi, terus masuk ke folder BIND, bagian zones, kasus gw di d:\named\zones
- disini kita bakal ambil nama nama file dns nya, lakukan


dir /b/on *.dns > listfilezones.txt


Perintah tersebut adalah untuk melisting nama file saja dengan urut nama, kemudian dimasukkan ke file listfilezones.txt, buka file listfilezones.txt dengan notepad
- select all isi file tersebut dan copy kan ke kolom D di file excel
- kemudian, masih di notepad, lakukan find and replace, untuk menghilangkan ".dns" dengan kosong


Setelah extensi .dns hilang, select all dan copykan datanya ke kolom B,
- isikan kolom A dengan data zone ", (zone spasi kutip)
- isikan kolom C dengan " IN {type master; file ", (kutip spasi IN spasi ...dst... file kutip)
- isikan kolom E dengan ";};, (kutip titik koma kurawal tutup titik koma)
- isikan kolom F dengan rumus  =CONCATENATE(A2;B2;C2;D2;E2)

hasilnya kurang lebih seperti  berikut :



Nah dari kolom F inilah yang kita ambil dan letakkan dibagian akhir dari named.conf, file konfigurasi si BIND tersebut

Untuk beberapa file zone yang tidak jalan, perhatikan struktur minimal yang harus ada seperti contoh guwe.com.dns diatas, biasanya bila record type NS tidak ada, maka BIND tidak akan memproses file zone tersebut, sehingga gagal query, perhatikan file activity.log di folder zones, untuk error dari file zone mana yang tidak di proses oleh BIND