This site is best viewed using the updated version of Mozilla Firefox

রেড হ্যাট লিনাক্স : DNS Server Configuration (Primary and Secondary DNS)

আজকের টিউটোরিয়ালে আমরা দেখবো রেড হ্যাট লিনাক্সে কিভাবে DNS Server কনফিগার করা হয়। DNS Server সম্পর্কে আমরা কম-বেশী সবাই জানি। DNS Server হলো এমন একটি সার্ভার যা ডোমেইননেম কে আই.পি এ্যাড্রেসে ট্রান্সলেট করে কাঙ্খিত মেশিন/সার্ভারের সাথে আমাদের কমিউনিকেট করতে সহায়তা করে। পৃথিবীতে বর্তমানে লক্ষ কোটি সার্ভার আছে। এগুলোর প্রত্যেকটিরই একটি নিজস্ব পরিচয় অর্থাৎ আই.পি এ্যাড্রেস আছে। এই আই.পি এ্যাড্রেসগুলো মনে রাখা একজন মানুষের জন্য অনেক কঠিন। ধরুনঃ www.yahoo.com এর আই.পি 106.10.170.118, www.google.com এর আই.পি 74.124.135.147, www.facebook.com এর আই.পি 31.13.79.17 । এই আই.পি গুলো মনে রাখার চেয়ে ডোমেইননেমগুলো মনে রাখা খুব সহজ। আমরা যখন Web browser এ www.facebook.com লিখে Enter প্রেস করি তখন এই ডোমেইননেমটি একটি DNS Server এর সাহায্যে আই.পিতে রূপান্তরিত হয় এবং 31.13.79.17 আই.পি সম্বলিত ফেসবুকের সার্ভারে রিকোয়েষ্টটি চলে যায় এবং আমরা ফেসবুকের পেজটি Browser এ দেখতে পাই। ইহা একটি ব্যাকগ্রাউন্ড প্রসেস যা সম্পর্কে একজন সাধারণ ব্যবহারকারী কিছুই জানে না। কিস্তু একজন নেটওয়ার্ক প্রফেশনাল হিসেবে কিন্তু আমাদেরকে এই বিষয়টি অবশ্যই জানতে হবে। তো আসুন আমরা দেখি কিভাবে DNS Server কনফিগার করতে হয়।

প্যাকেজের নামঃ Bind
পোর্ট নম্বরঃ 53 (UDP)
Daemon/ডি’মনঃ named
কনফিগারেশন ফাইলঃ /etc/named/named.conf এবং
/etc/named/named.rfc1912.zones

এই টিউটোরিয়ালে আমরা দুই ধরণের DNS Server এর কনফিগারেশন দেখবো।
১। Primary / Master DNS
২। Secondary / Slave DNS

নিচের চিত্রটি ভালভাবে লক্ষ্য করুন।

চিত্রে প্রদর্শিত নেটওয়ার্ক টপোলজিতে দুইটি DNS Server আছে। একটি Master DNS যার আই.পি 192.168.10.1 এবং একটি Slave DNS যার আই.পি 192.168.10.2 । যদি কোন কারণে Master DNS টি ফেইল করে তাহলে সাথে সাথে Slave DNS টি এ্যাকটিভ হয়ে যাবে। এতে করে আমাদের সার্ভিস ইন্টারাপ্ট হবে না।

Primary / Master DNS Configuration

প্রথমেই আমরা # yum install bind* -y কমান্ডের মাধ্যমে প্যাকেজটি ইনস্টল করে নিবো।

তারপর named সর্ভিসটি রিষ্টার্ট দিব।

# service named restart
# chkconfig named on

তারপর DNS এর কনফিগারেশন ফাইল /etc/named.conf ওপেন করে নিচের মতো করে পরির্তন করবো।

# vim /etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for naser named configuration files.
//

options {
listen-on port 53 { 127.0.0.1; 192.168.10.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.10.0/24; };
allow-transfer { localhost; 192.168.10.2; };
recursion yes;

dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;

/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

zone "." IN {
type hint;
file "named.ca";
};

include "/etc/named.rfc1912.zones";

তারপর /etc/named.rfc1912.zones ফাইলটি ওপেন করে নিচের মতো করে পরির্তন করবো।

# vim /etc/named.rfc1912.zones

// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for naser named configuration files.
//

zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};

zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};

zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};

zone "naser.com" IN {
type master;
file "naser.fz";
allow-update { none; };
};

zone "10.168.192.in-addr.arpa" IN {
type master;
file "naser.rz";
allow-update { none; };
};

এখন আমরা DNS এর জন্য দুইটি Zone File তৈরী করো। একটি Zone File হলো Forword Lookup এর জন্য এবং অপরটি Reverse Lookup এর জন্য। /var/named ডাইরেক্টরীর মধ্যে এই দুইটি ফাইলের নমুনা দেওয়া আছে। Forword Lookup এর জন্য named.localhost ফাইলটি এবং Reverse Lookup এর জন্য named.loopback ফাইলটি। এখন ফাইল দুইটি আমরা কপি করে আমাদের পছন্দমতো নাম দিব।

# cd /var/named
# cp named.localhost naser.fz
# cp named.loopback naser.rz

এখন Forword Lookup এর জন্য naser.fz ফাইলটি ওপেন করে নিচের মতো করে পরির্তন করবো।

# vim /var/named/naser.fz

$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS masterdns.naser.com.
IN NS slavedns.naser.com.
IN A 192.168.10.1
IN A 192.168.10.2
masterdns IN A 192.168.10.1
slavedns IN A 192.168.10.2

অতঃপর Reverse Lookup এর জন্য naser.rz ফাইলটি ওপেন করে নিচের মতো করে পরির্তন করবো।

# vim /var/named/naser.rz

$TTL 1D
@ IN SOA @ rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
IN NS masterdns.naser.com.
IN NS slavedns.naser.com.
IN A 192.168.10.1
IN A 192.168.10.2
1 IN PTR masterdns.naser.com.
2 IN PTR slavedns.naser.com.

ফাইলগুলো এডিট করা শেষ হলে আমরা দেখবো আমদের কনফিগারেশন ফাইল দুইটি এবং জোন ফাইল দুইটি ঠিক আছে কি না। এজন্য আমরা পর্যায়ক্রমে নিচের কমান্ড দিব।

# named-checkconf /etc/named.conf
# named-checkconf /etc/named.rfc1912.zones

কনফিগারেশন ফাইল দুইটি যদি ঠিক থাকে তাহলে কমান্ড দেওয়ার পর কোন আউটপুট দেখাবে না।

# named-checkzone naser.fz /var/named/naser.fz
# named-checkzone naser.rz /var/named/naser.rz

জোন ফাইল দুইটি যদি ঠিক থাকে তাহলে কমান্ড দেওয়ার পর আউটপুট OK দেখাবে।

অতঃপর আমরা জোন ফাইল দুইটির Group Permission পরিবর্তন করে named এর অধীনে নিব।

# chgrp named /var/named/naser.fz
# chgrp named /var/named/naser.rz

অতঃপর আমরা named সার্ভিসটি রিষ্টার্ট দিব।

# service named restart
# chkconfig named on

Master DNS Server চেক করার জন্য

# nslookup masterdns

Server: 192.168.10.1
Address: 192.168.10.1#53
Name: masterdns.naser.com
Address: 192.168.10.1
--------------------------------------------------------------------
--------------------------------------------------------------------

Secondary / Slave DNS Configuration

প্রথমেই আমরা # yum install bind* -y কমান্ডের মাধ্যমে প্যাকেজটি ইনস্টল করে নিবো।

তারপর named সর্ভিসটি রিষ্টার্ট দিব।

# service named restart
# chkconfig named on

তারপর DNS এর কনফিগারেশন ফাইল /etc/named.conf ওপেন করে নিচের মতো করে পরির্তন করবো।

# vim /etc/named.conf

//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for naser named configuration files.
//

options {
listen-on port 53 { 127.0.0.1; 192.168.10.2; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { localhost; 192.168.10.0/24; };
recursion yes;

dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;

/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
};

logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};

zone "." IN {
type hint;
file "named.ca";
};

include "/etc/named.rfc1912.zones";

তারপর /etc/named.rfc1912.zones ফাইলটি ওপেন করে নিচের মতো করে পরির্তন করবো।

# vim /etc/named.rfc1912.zones

// named.rfc1912.zones:
//
// Provided by Red Hat caching-nameserver package
//
// ISC BIND named zone configuration for zones recommended by
// RFC 1912 section 4.1 : localhost TLDs and address zones
// and http://www.ietf.org/internet-drafts/draft-ietf-dnsop-default-local-zones-02.txt
// (c)2007 R W Franks
//
// See /usr/share/doc/bind*/sample/ for naser named configuration files.
//

zone "localhost.localdomain" IN {
type master;
file "named.localhost";
allow-update { none; };
};

zone "localhost" IN {
type master;
file "named.localhost";
allow-update { none; };
};

zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};

zone "1.0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
allow-update { none; };
};

zone "0.in-addr.arpa" IN {
type master;
file "named.empty";
allow-update { none; };
};

zone "naser.com" IN {
type slave;
masters { 192.168.10.1; };
file "slaves/naser.fz";
allow-update { none; };
};

zone "10.168.192.in-addr.arpa" IN {
type slave;
masters { 192.168.10.1; };
file "slaves/naser.rz";
allow-update { none; };
};

Primary DNS Server এ কনফিগারেশন ফাইল দুইটি এডিট করার পর আমরা তা # named-checkconf কমান্ডের মাধ্যমে চেক করেছিলাম। কিন্তু Secondary Server এ এটা করার দরকার নেই।

Secondary / Slave DNS এর জন্য কোন Zone File তৈরী করা লাগবে না। কারণ, Zone File গুলো Primary / Master DNS থেকে Slave DNS এর /var/named/slaves ডাইরেক্টরীতে অটোমেটিকভাবে হলো রেপ্লিকেট হবে।

অতঃপর আমরা named সার্ভিসটি রিষ্টার্ট দিব।

# service named restart
# chkconfig named on

Slave DNS Server চেক করার জন্য

# nslookup slavedns

Server: 192.168.10.1
Address: 192.168.10.1#53
Name: slavedns.naser.com
Address: 192.168.10.2

একটি বিষয় ভালভাবে খেয়াল রাখবেন, নেটওয়ার্কের সকল কম্পিউটারসমূহের DNS সেটিংস-এ Primary DNS হিসেবে 192.168.10.1 এবং Secondary DNS হিসেবে 192.168.10.2 এই আই.পি গুলো অবশ্যই বসাতে হবে।

আশাকরি এই টিউটোরিয়ালটি দেখে আপনারা নিজে নিজেই এখন Primary এবং Secondary DNS Server কনফিগার করতে পারবেন। ভাল থাকবেন। আল্লাহ হাফেজ।