BIND 9 এর মধ্যে সমস্ত অঞ্চল স্বয়ংক্রিয়ভাবে সিঙ্ক করুন


9

BIND (9) সার্ভারগুলির মধ্যে সমস্ত অঞ্চলকে স্বয়ংক্রিয়ভাবে সিঙ্ক্রোনাইজ করার কোনও উপায় আছে যাতে আমি যখন মাস্টারগুলিতে যুক্ত করি তখন আমাকে দাসে জোনের যোগ করতে হবে না?


1
নামযুক্ত.কনফটিতে ম্যানুয়ালি এগুলি যুক্ত করার পরিবর্তে, আমি অন্য কোনও উপায়ে দেখি না; যদি আপনি এটি জিজ্ঞাসা করেন
quaie

উত্তর:


12

BIND 9.7.2-P2 দেখুন যেখানে আপনার কাছে "আরএনডিসি অ্যাডজোন" এবং "আরএনডিসি ডেলজোন" বিবৃতি রয়েছে যা আপনাকে চলমান সার্ভার থেকে অঞ্চলগুলি "দূরবর্তীভাবে" যুক্ত করতে এবং মুছে ফেলার অনুমতি দেয়।

আমার কাছে একটি কাগজ রয়েছে যা কিছু উদাহরণ দেয় যা আমি গত মাসে ন্যানোগে দিয়েছিলাম।

ftp://ftp.isc.org/isc/pubs/pres/NANOG/50/DNSSEC-NANOG50.pdf

যদিও এটি পিছনে যাবে না এবং আপনার বর্তমানে থাকা কোনও জঞ্জাল পরিষ্কার করবে না, এটি আপনাকে "rndc" ব্যবহার করে পরিচালনা করতে সক্ষম মেশিনগুলিকে সিঙ্ক্রোনাইজ করা সত্যিই সহজ করে তোলে।

[হ্যাঁ, বরং একটি পুরাতন পোস্টে প্রতিক্রিয়া জানাচ্ছি, তবে BIND 9.7.2-P2 এটির ওয়ারেন্ট দেওয়ার পক্ষে যথেষ্ট দুর্দান্ত]

আরও একটি আপডেট যুক্ত করা হচ্ছে (সত্যের বহু বছর পরে, তবে আশা করা যায় যে এটি লোকেরা যাতে অনুসন্ধানের ফলাফলগুলিতে এটি জুড়ে যায়) সহায়তা করে, আমি ক্যাটালগ অঞ্চলগুলি ব্যবহারের পরামর্শ দিতে চাই।

BIND 9.11 (2018) এ প্রবর্তিত ক্যাটালগ অঞ্চলগুলি প্রাথমিক ও মাধ্যমিক সার্ভারগুলির মধ্যে ভাগ করা একটি বিশেষ জোনের মাধ্যমে জোনগুলি স্বয়ংক্রিয়ভাবে জোন (সংযোজন এবং মোছার) মঞ্জুরি দেয়।

সম্পূর্ণ তথ্যের জন্য, দেখুন: https://kb.isc.org/docs/aa-01401


আপনার সাথে যুক্ত সফ্টওয়্যার প্রচার করার সময় দয়া করে সেই সত্যের কিছু রেফারেন্স অন্তর্ভুক্ত করুন (এমনকি সফ্টওয়্যারটি নিখরচায় হলেও)। আপনাকে ধন্যবাদ এবং সার্ভার ফল্টে স্বাগতম।
ক্রিস এস

হ্যাঁ, আমি আইএসসি, বিআইএনডি এবং আইএসসি ডিএইচসিপি রক্ষণকারীদের জন্য কাজ করি। :)
নবি

4

আপনি ফ্ল্যাটফাইলে ব্যাকএন্ড ব্যবহার করছেন তবে বাইন্ড 9 এ স্থানীয়ভাবে করার কোনও উপায় আমি জানি না। বিভিন্ন ডিবি-ব্যাকড সিস্টেম রয়েছে যা এটি স্বয়ংক্রিয়ভাবে সহায়তা করতে পারে। অথবা আপনি এটি স্ক্রিপ্ট করতে পারেন:

আমি জোনগুলির তালিকা এবং জোনটির জন্য প্রাথমিক এনএস আইপি সহ একটি পাঠ্য ফাইল পপুলেট করি এবং এটি এমন একটি ওয়েবসাইটে আটকে রাখি যা আমি আমার দাসদের অ্যাক্সেসের অনুমতি দিয়ে থাকি। দাসরা এই ফাইলটি পর্যায়ক্রমে নিয়ে আসে এবং যদি এটি পরিবর্তিত হয় তবে তারা পার্স করে এটি একটি নামডকনফ তৈরি করে এবং কনফিগারগুলি পুনরায় লোড করতে বাইন্ডকে বলে। এটি "স্বয়ংক্রিয়" এই অর্থে যে আমাকে নিজের সেকেন্ডারিগুলিতে ম্যানুয়ালি চাপ দিতে হবে না এবং কনফিগারগুলি আপডেট করতে হবে তবে এটি এখনও বাইন্ড 9 এর বাহ্যিক।

আপনার পুরো ডিএনএস অবকাঠামো পরিচালনা করতে আপনি একটি উচ্চ স্তরের কনফিগারেশন ম্যানেজমেন্ট সিস্টেম যেমন পুতুলের মতো ব্যবহার করতে পারেন । যদিও এটি কিছুটা জটিল।


1
+1 - আমি নিজে একটি অনুরূপ (তবে সম্ভবত কম দক্ষ) প্রযুক্তি ব্যবহার করি এবং এটি নির্ভরযোগ্যভাবে কাজ করে বলে মনে হয়। নতুন পরিবর্তনের দাসদের কাছে দ্রুত প্রচার পেতে তাদের মাস্টার ডকুমেন্টটি প্রায়শই পোল করা প্রয়োজন (আমি প্রতি দশ মিনিটেই ঘন ঘন যথেষ্ট পরিমাণে বেশি হয়েছি বলে খুঁজে পেয়েছি)।
ডেভিড স্পিললেট

অটোমেশন এবং টিনিডেন্সের দ্বৈত ধর্মগুলি পাওয়ার আগে আমার কাছে একটি স্ক্রিপ্ট ছিল যা জোনগুলির তালিকা পাওয়ার জন্য মাস্টার্স জোন কনফিগারেশন তালিকার বিশ্লেষণ করেছিল, যা আমি ইনটেডের মাধ্যমে প্রকাশ করেছি, এবং তারপর দাসদের উপর একটি স্ক্রিপ্ট যা কোনও সংখ্যক মাস্টার আইপি পোল করেছিল led ঠিকানাগুলি (এবং তাদের দাস কনফিগারেশনে সেই ঠিকানাটি মাস্টার আইপি ঠিকানা হিসাবে ব্যবহার করেছেন)। একটি স্বপ্ন কাজ করেছেন।
দোলা

4

হতে পারে আপনি পুতুল বা সিএফইঙ্গিনের মতো কোনও কনফিগারেশন ম্যানেজমেন্ট সিস্টেমের সন্ধান করছেন ? এতে অতিরিক্ত অবকাঠামো জড়িত রয়েছে, তবে তারা প্রচুর কনফিগারেশন সামগ্রী বিতরণ করতে পারে এবং এটিকে সহজেই অন্তর্ভুক্ত করতে পারে।


2

বাঁধাই নিজে এটি করতে পারে না। আরও উল্লেখযোগ্য বিষয়, এটি এটি করা অযাচিত হবে। অনেকগুলি পরিস্থিতি রয়েছে যেখানে নির্দিষ্ট কয়েকটি ডোমেন কোনও প্রদত্ত গোলামের সাথে প্রতিলিপি করা উচিত।


এখন BIND আপাতদৃষ্টিতে দেখতে পারেন, @ নোবির উত্তর দেখুন।
ভোলকার স্টলজ

@mad_vs - ধন্যবাদ, আমি উত্তরটি অন্যথায় না দেখতাম।
জন গার্ডেনিয়ার্স 13'11

1

আপনার পুরো অঞ্চলটি / var / নামযুক্ত গাছে rsync ব্যবহার করা বেশ ভাল কাজ করে যদি আপনি নিজের অঞ্চলগুলি সঠিকভাবে লিখেন এবং নিশ্চিত হন যে নামযুক্ত.কনফ / var / নামেই বাস করে। এটি যদিও গতিশীল আপডেটগুলির সাথে কাজ করবে না, এবং "কীভাবে জিনিসগুলি করা উচিত" এর জন্য শস্যের বিরুদ্ধে বাছাই।

আমি একটি বিশেষ জোনে প্রচারের জন্য সমস্ত ডোমেন স্টাফ করার জন্যও পরীক্ষা করে দেখেছি এবং মাস্টার জোনে তারা যা দেখছে তার ভিত্তিতে নামটি.কনফ পুনর্নির্মাণের জন্য দাসদের একটি সাধারণ স্ক্রিপ্ট ব্যবহার করেছি। মূলত উপরের টেক্সট ফাইলের মতো একই জিনিস, তবে ডিএনএস থেকে এটি খাওয়ানো সব কিছু ইন-ব্যান্ড রাখতে। এটি হারিয়ে যাওয়ার আগে সম্ভবত আমার স্ক্রিপ্টটি প্রকাশ করা উচিত = /

প্রত্যেকের এবং তাদের মায়ের নিজস্ব ডোমেন থাকার সময়ে, এটি অবাক করে দেয় যে বিনয়ের সাথে এই সংহত করার জন্য এখন পর্যন্ত খুব ভাল সমাধান নেই isn't / /


0

পুতুল বা সিএফইঙ্গাইন পরীক্ষা করার জন্য আমি উপরের পরামর্শগুলি দ্বিতীয় (বা তৃতীয়) করছি। এছাড়াও, আপনি সিভিএস / এসভিএন এর বাইরে এবং আপনার ফাইলগুলি পরীক্ষা করে দেখতে পারেন। আপনি যদি কোনও স্ক্রিপ্টিং সমাধানে আগ্রহী হন তবে আমি যা ব্যবহার করি তা এখানে:

#!/bin/bash

DATE=`date +%Y-%m-%d`
archive='/root/dns'
cd $archive
[ $1 ] && DEBUG=$1
if [ "$DEBUG" == "-debug" ]; then 
        echo "Debugging activated..."
else
        unset DEBUG
fi

for server in dnsm02 dnsm03 dnsm51 dnsm52; do

        for file in named.conf named.cfx.conf named.external.conf named.internal.conf named.logging.conf named.options.conf; do
                PATCHDIR="$archive/$server/$DATE/patch" && [ $DEBUG ] && echo "PATCHDIR = $PATCHDIR"
                SRVDIR="$archive/$server/$DATE" && [ $DEBUG ] && echo "SRVDIR = $SRVDIR"

                ## Fetch bind config files from $server, put them in date stamped $archive/$server
                [ ! -d $PATCHDIR ] && mkdir -p $PATCHDIR  && [ $DEBUG ] && echo "Created archive directory"
                scp -q user@$server:/etc/bind/$file $archive/$server/$DATE/$file && [ $DEBUG ] && echo "Copied remote $file from $server..."

                ## diff fetched file against template file and create a patch
                [ $DEBUG ] && echo "Creating patch file..."
                diff -u $SRVDIR/$file $archive/$server/$file > $PATCHDIR/patch.$file
                [ ! -s $PATCHDIR/patch.$file ]  && rm -f $PATCHDIR/patch.$file && [ $DEBUG ] &&  echo "no differences , no patch created for $server $file"
                [ -s $PATCHDIR/patch.$file ] && patch $SRVDIR/$file $PATCHDIR/patch.$file && ssh user@$server "sudo scp user@dnsm01:$SRVDIR/$file /etc/bind/$file" && [ $DEBUG ] && echo "$file patched and uploaded"
        done
        [ $DEBUG ] && echo "Checking whether patch directory is empty..."
        [ $(ls -1A $PATCHDIR | wc -l) -eq 0 ] && rmdir $PATCHDIR && [ $DEBUG ] && echo "$PATCHDIR empty, removing..."

        ssh user@$server "sudo rndc reload"
done

এই সেটআপের জন্য ssh কীগুলি বেশ প্রয়োজনীয়। আমি অসাধারণ স্ক্রিপ্টিং-ফু শক্তি দাবি করি না, সুতরাং সমালোচনা করতে নির্দ্বিধায় থাকুন, তবে বিনয়ী হন।


0

আমার যে পরিমাণ জোনের পরিমাণ রয়েছে তার জন্য, ম্যানুয়ালি সিঙ্ক করে কাজ করা অন্য কোনও সমাধান পাওয়ার চেয়ে সহজ হয়ে গেছে। আমার আরও অনেক অঞ্চল থাকলে আমি প্রস্তাবিত সমাধানগুলি সন্ধান করতাম।


0
  1. মাস্টার থেকে সমস্ত জোন ফাইলের নাম ছিড়ে ফেলার জন্য একটি স্ক্রিপ্ট তৈরি করুন (এলএস -1 এটি বেশিরভাগ ক্ষেত্রে করবে)।
  2. দাসের উপরে এমন একটি স্ক্রিপ্ট তৈরি করুন যা জোন ফাইলগুলির তালিকাটিকে ইনপুট হিসাবে গ্রহণ করবে এবং সেই তালিকা থেকে একটি নামডকনফ.লোকাল তৈরি করবে (ফর্ম্যাটটি বেশ সহজ), এবং বিদ্যমান নামকনফন.লোকালকে প্রতিস্থাপন করুন (আপনি অন্যটি ব্যবহার করতে পারেন) নাম দিন, এবং নামযুক্ত.কনফ.এক স্থানীয় থেকে এটি অন্তর্ভুক্ত করুন যদি আপনি এটি নিরাপদে খেলতে চান)
  3. স্লেভের "rndc পুনরায় লোড" এর জন্য একটি একক-কমান্ড পাসওয়ার্ডহীন সুডো অ্যাক্সেস তৈরি করুন।
  4. একটি একক-ব্যবহারের এসএসএ কী তৈরি করুন যা আপনাকে মাস্টারের কাছ থেকে জোনের তালিকা প্রেরণ এবং গোলাম স্ক্রিপ্টে পাইপ করতে এবং তারপরে "sudo rndc পুনরায় লোড" চালানোর অনুমতি দেয়। আপনি এখন জোনগুলি মাস্টার থেকে ক্রীতদাসে ঠেলাতে পারেন।
  5. (alচ্ছিক) প্রতিদিন অঞ্চলগুলিকে বা যা যা চালানোর জন্য ক্রোন জব তৈরি করুন।

ভাল অভিজ্ঞতা, এটি কাজ করে। আমি আমার স্ক্রিপ্টগুলি পোস্ট করতে পারি, যদি কেউ সেগুলি চায়।


@ naught101, আপনি কি স্ক্রিপ্টগুলি পোস্ট করতে পারেন?

0

এটি এমন কিছু পিএইচপি কোড যা মাস্টার সার্ভার একটি তালিকা তৈরি করতে চালাতে পারে। বিকল্পগুলি তখন এটি কোনও ডিবিতে আপলোড করা হতে পারে বা অন্যান্য ডিএনএস সার্ভারগুলি এটিকে http / গুলি ধরে টানতে পারে।

মাস্টার সার্ভার এটি চালাতে পারে:

$dir = "/var/lib/bind";
$files = scandir($dir);
foreach($files as $file) {
    $zoneparts = explode(".hosts", $file);
   if(count($zoneparts) > 1){
       echo $zoneparts[0] . "\r\n";
   }
}

স্লেভ সার্ভার এটি চালাতে পারে:

$zones = file(URL TO MASTER SERVER);
if($zones != ""){

$header = "// 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";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";
";




file_put_contents("/var/www/html/zone/zones.txt", $header);

foreach($zones as $zone){
if($zone != "") {
$zone = preg_replace('~[[:cntrl:]]~', '', $zone);
$config = 'zone "' . $zone.'" {
        type slave;
        masters {lemming; };
        allow-transfer {none; };
        file "/var/lib/bind/db.'.$zone.'";
};

';


file_put_contents('/var/www/html/zone/zones.txt', $config, FILE_APPEND);
}}

}

"জোন" দির লিখতে হবে

তারপরে এটির মতো একটি বাশ স্ক্রিপ্ট তৈরি করুন:

#!/bin/bash

    php /var/www/html/index.php
    cp /var/www/html/zone/zones.txt /etc/bind/named.conf
    service bind9 restart
    logger DNS Zones pulled from master and bind restarted /home/bob/dns_sync.sh

তারপরে রুট হিসাবে ক্রোনজব তৈরি করুন (ক্রন্টব-ই):

*/10 * * * * /home/bob/dns_sync.sh
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.