ThaiTux.info - bind9 https://www.thaitux.info/taxonomy/term/145 all-in-one 4.2 (ปรับปรุง zone generator script) https://www.thaitux.info/node/680 <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>ปรับสคริปต์นิดหน่อย</p> <pre># <strong>vi /usr/local/sbin/d.bind-genzone</strong></pre><pre>#!/bin/bash # GENERATE ZONE FILE [AND REVERSE ZONE FILE IF ADD OPTION -b] # READ DATA FROM DATAFILE IN FORMAT # zone:ZONENAME:IP_D:CNAME1 CNAME2 ...:SERIAL:IP_ABC # ns:NAMESERVER1 NAMESERVER2 # mx:MAILSERVER1,RR1 MAILSERVER2,RR2 # IP_D:NAME CNAME1 CNAME2 ... # ... # EXAMPLE: # zone:example.com:1:server1 ns1 mail www ftp:43:192.168.1 # ns:ns1 ns2 # mx:mail,10 mail2,20 # 2:ns2 # 101:work1 # 102:work2 # ... #GLOBAL VAR TTL=86400 BINDUSER="bind" BINDGROUP="bind" #FUNTION function usage { cat &lt;&lt; EOF Script to generate zone file and reverse zone file USAGE: $0 [-b] DATAFILE OPTIONS: -b = both, generate both forward and reverse zone file, only generate forward zone file, if omitted ARGUMENT: DATAFILE : datafile in format:- zone:ZONENAME:IP_D:CNAME1 CNAME2 ...:SERIAL:IP_ABC [ns:NAMESERVER1 NAMESERVER2] [mx:MAILSERVER1,RR1 MAILSERVER2,RR2] IP_D:NAME CNAME1 CNAME2 ... ... EXAMPLE OF DATAFILE: example1: zone:example.com:1:server1 ns1 mail www ftp:43:192.168.1 ns:ns1 ns2 mx:mail,10 mail2,20 2:ns2 101:work1 102:work2 192.168.5.1:router ... example2: zone:ns2.example.org:2::44:192.168.1 ns:ns1 ns2 EOF } function gen_header { Z=$1 S=$2 cat &lt;&lt; EOF \$TTL $TTL @ IN SOA $Z. root.$Z. ( $S ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum EOF } function gen_ns { H=$1 cat &lt;&lt; EOF @ NS $H EOF } function gen_mx { H=$1 R=$2 cat &lt;&lt; EOF @ MX $R $H EOF } function gen_name { N=$1 I=$2 cat &lt;&lt; EOF $N IN A $I EOF } function gen_ptr { I=$1 N=$2 cat &lt;&lt; EOF $I IN PTR $N.$ZONENAME. EOF } function gen_cname { C=$1 N=$2 cat &lt;&lt; EOF $C IN CNAME $N. EOF } function get_ip { I1="$1." #input ip I2="$2." #$IP_ABC A=$(echo "$I1" | cut -d. -f1) B=$(echo "$I1" | cut -d. -f2) C=$(echo "$I1" | cut -d. -f3) D=$(echo "$I1" | cut -d. -f4) W=$(echo "$I2" | cut -d. -f1) X=$(echo "$I2" | cut -d. -f2) Y=$(echo "$I2" | cut -d. -f3) Z=$(echo "$I2" | cut -d. -f4) if [ ! "$B" ]; then echo "$W.$X.$Y.$A"; return elif [ ! "$C" ]; then echo "$W.$X.$A.$B"; return elif [ ! "$D" ]; then echo "$W.$A.$B.$C"; return else echo "$I1" fi } #BEGIN MAIN DATAFILE="" WITHREVERSE="" while getopts "b" ARGS; do case "$ARGS" in b) WITHREVERSE="true"; shift $(($OPTIND - 1)) ;; esac done DATAFILE=$1 shift while getopts "b" ARGS; do case "$ARGS" in b) WITHREVERSE="true"; shift $(($OPTIND - 1)) ;; esac done if [ ! "$DATAFILE" ] || [ ! -f "$DATAFILE" ]; then usage exit 1 fi ZONENAME="" SERIAL="" IP_ABC="" ZONEFILE="" REVERSEFILE="" cat $DATAFILE | grep -v "#" | while read DATA; do #ZONE HEADER if [ "${DATA:0:5}" == "zone:" ]; then ZONENAME=$(echo $DATA | cut -d: -f2) IP_D=$(echo $DATA | cut -d: -f3) CNAMES=$(echo $DATA | cut -d: -f4) SERIAL=$(echo $DATA | cut -d: -f5) IP_ABC=$(echo $DATA | cut -d: -f6) #FORWARD ZONE FILE ZONEFILE="$ZONENAME.zone" if [ -f "$ZONEFILE" ]; then mv "$ZONEFILE" "$ZONEFILE.bak" fi FULL_IP=`get_ip $IP_D $IP_ABC` gen_header $ZONENAME $SERIAL &gt; $ZONEFILE chown $BINDUSER:$BINDGROUP $ZONEFILE gen_name "@" $FULL_IP &gt;&gt; $ZONEFILE for i in $CNAMES; do gen_cname $i $ZONENAME &gt;&gt; $ZONEFILE done if [ "$WITHREVERSE" ]; then #REVERSE ZONE FILE REVERSEFILE="$ZONENAME.reverse" if [ -f "$REVERSEFILE" ]; then mv "$REVERSEFILE" "$REVERSEFILE.bak" fi gen_header $ZONENAME $SERIAL &gt; $REVERSEFILE chown $BINDUSER:$BINDGROUP $REVERSEFILE gen_ptr $IP_D "" &gt;&gt; $REVERSEFILE echo "Generate $ZONEFILE and $REVERSEFILE ..." else echo "Generate $ZONEFILE ..." fi #NS elif [ "${DATA:0:3}" == "ns:" ] &amp;&amp; [ "$ZONENAME" ]; then for i in $(echo $DATA | cut -d: -f2); do gen_ns $i &gt;&gt; $ZONEFILE if [ "$WITHREVERSE" ]; then gen_ns $i &gt;&gt; $REVERSEFILE fi done #MX elif [ "${DATA:0:3}" == "mx:" ] &amp;&amp; [ "$ZONENAME" ]; then for i in $(echo $DATA | cut -d: -f2); do $MAILNAME=$(echo $i | cut -d, -f1) $RRPRIORITY=$(echo $i | cut -d, -f2) gen_mx $MAILNAME $RRPRIORITY &gt;&gt; $ $ZONEFILE done #DATA elif [ "$DATA" ]; then RAW_IP=$(echo $DATA | cut -d: -f1) FULL_IP=`get_ip $RAW_IP $IP_ABC` NAMES=$(echo $DATA | cut -d: -f2) FIRSTNAME=$(echo $NAMES | cut -d\ -f1) echo "gen_name $FIRSTNAME $FULL_IP $ZONEFILE" gen_name $FIRSTNAME $FULL_IP &gt;&gt; $ZONEFILE if [ "$WITHREVERSE" ]; then gen_ptr $RAW_IP $FIRSTNAME &gt;&gt; $REVERSEFILE fi for i in $NAMES; do if [ "$i" != "$FIRSTNAME" ]; then gen_cname $i $FIRSTNAME &gt;&gt; $ZONEFILE fi done fi done </pre></div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Topic:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/taxonomy/term/145">bind9</a></div><div class="field-item odd"><a href="/taxonomy/term/298">all-in-one</a></div></div></div> Wed, 05 Aug 2009 13:07:58 +0000 wd 680 at https://www.thaitux.info https://www.thaitux.info/node/680#comments debian: bind9 + chroot + internal/external https://www.thaitux.info/node/483 <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p><strong>*** ยังเขียนไม่เสร็จ + ยังไม่ได้ตรวจทานซ้ำ ***</strong></p> <p>เป้า</p> <ul> <li>ติดคุกให้ bind (chroot jail)</li> <li>จะทำให้สามารถใช้งานได้ทั้งภายใน และภายนอก (ภายนอกไม่ค่อยจำเป็น แต่ติดตั้งไว้เผื่อจะทำอะไรเพิ่ม) คือโดเมนเดียวกัน แต่มีไอพี 2 กลุ่ม ภายในกลุ่มนึง และภายนอกอีกกลุ่มนึง</li> <li>ติดตั้งเป็นแบบสามารถเปลี่ยนค่าไอพีได้ (allow-update)</li> </ul> <p>สมมุติว่า</p> <ul> <li>มีโดเมนภายในเป็น example.com อย่างเดียว มีไอพีเป็น 192.168.1.0/24 โดยจะทำเรื่อง reverse ip ด้วย (คือค้นย้อนกลับจากเลขไอพีได้)</li> <li>โดเมนภายนอกเป็น example.com และ example.org โดยที่เราจะทำให้ทุกบริการมีไอพีเดียวกัน คือเครื่องนี้เครื่องเดียวทำหลายหน้าที่ เพียงเปลี่ยนชื่อ (CNAME) ไปตามบริการนั้น ๆ ติดตั้งเป็นแบบเปลี่ยนค่าได้ เพราะไอพีเราไม่คงที่<br /> โดเมนภายนอก จะไม่ทำ reverse ip เพราะเรามีหลายโดเมน และถึงแม้จะมีโดเมนเดียว ค่าที่โลกภายนอกค้นได้ก็คงไม่ใช่จากเครื่องเราอยู่ดี (ค้นได้จากชื่อโดเมนอย่างเดียว ค้นย้อนกลับจากเลขไอพีไม่ได้)</li> </ul> <p>ติดตั้งแพกเกจ<br /> <code># aptitude install bind9 dnsutils</code></p> <p>ทำเรื่องติดคุก (chroot jail) จะย้ายคุกไปไว้ที่ /sys1/chroot/bind<br /> <code># vi /etc/default/bind9<code></code></code></p> <pre>... <strong>#</strong> OPTIONS="-u bind" <strong>OPTIONS="-u bindinjail -t /sys1/chroot/bind"</strong> ... </pre><p> สร้างผู้ใช้ชื่อ bindinjail ให้ใช้เชลล์ไม่ได้ อยู่ในกลุ่ม nogroup<br /> <code># useradd -g nogroup -d /nonexistent -s /bin/false -u 65533 bindinjail<br /> # passwd -l bindinjail</code></p> <p>สร้างคุก<br /> <code># mkdir -p /sys1/chroot/bind/{etc,dev,var/cache/bind,var/log,var/run/bind/run}<br /> # mv /etc/bind /sys1/chroot/bind/etc<br /> # ln -sf /sys1/chroot/bind/etc/bind /etc<br /> # mknod /sys1/chroot/bind/dev/null c 1 3<br /> # mknod /sys1/chroot/bind/dev/random c 1 8<br /> # chmod 666 /sys1/chroot/bind/dev/null /sys1/chroot/bind/dev/random<br /> # chown -R bindinjail:nogroup /sys1/chroot/bind/var/*<br /> # chown -R bindinjail:nogroup /sys1/chroot/bind/etc/bind/</code></p> <p>ทำให้ระบบเก็บปูมของ bind (system logging - syslogd)<br /> <code># vi /etc/default/syslogd</code></p> <pre>... <strong>#</strong> SYSLOGD="" <strong>SYSLOGD="-a /sys1/chroot/bind/dev/log"</strong> ...</pre><p> ปรับตั้งระบบปูมของ bind<br /> <code># vi /sys1/chroot/bind/etc/bind/named.conf.local</code></p> <pre>... logging { channel "querylog" { file "/var/log/bind9-query.log"; print-time yes; }; category queries { querylog; }; }; ...</pre><p> ปรับตั้งประวัติปูมของ bind<br /> <code># vi /etc/logrotate.d/bind9-query</code></p> <pre>/sys1/chroot/bind/var/log/bind9-query.log { weekly missingok rotate 10 postrotate /etc/init.d/bind9 reload &gt; /dev/null endscript compress notifempty } </pre><p><code># ln -sf /sys1/chroot/bind/var/log/bind9-query.log /var/log/bind9-query.log</code></p> <p>แก้ไข options ให้มาใช้ pid ของคุก<br /> <code># vi /sys1/chroot/bind/etc/bind/named.conf.options</code></p> <pre>... options { directory "/var/cache/bind"; <strong>pid-file "/var/run/named.pid";</strong> ...</pre><p> เสร็จขั้นต้น ทดสอบระบบครั้งแรก<br /> <code># /etc/init.d/sysklogd restart<br /> # /etc/init.d/bind9 restart</code><br /> ต้องไม่มีรายงานข้อผิดพลาด</p> <p><strong>ต่อไปเป็นเรื่องการอัปเดตไอพี และการทำให้รองรับเครือข่ายภายในและภายนอก ผสมกัน</strong></p> <p>บอก bind ว่าเราจะใช้งาน dnssec<br /> <code># vi /etc/bind/named.conf.options</code></p> <pre>... options { ... <strong>recursion yes; dnssec-enable yes;</strong> }; ...</pre><p> สร้างไดเรกทอรี่มารองรับการทำงาน<br /> <code># mkdir -p /sys1/chroot/bind/etc/bind/{internal,external}</code></p> <p>สร้างกฎ acl สำหรับเครือข่ายภายใน ตั้งชื่อว่า internal (นอกจากนั้นจะถือว่าเป็น external ทั้งหมด)<br /> และให้มาอ่านไฟล์คอนฟิกที่เราจะสร้างขึ้นภายหลัง ของโซน example.com และ example.org<br /> <code># cd /sys1/chroot/bind/etc/bind<br /> # vi named.conf.local</code></p> <pre>... acl internal { 127.0.0.0/8; 192.168.0.0/16; }; include "/etc/bind/example.com.conf"; include "/etc/bind/example.org.conf"; ...</pre><p> สร้างไฟล์เปล่า ๆ กันเหนียวเผื่อทดสอบ จะได้มีไฟล์รองรับ<br /> <code># touch /etc/bind/{example.com.conf,example.org.conf}</code></p> <p>สร้างกุญแจ สำหรับอัปเดตไอพี example.com และ example.org</p> <dl> <dt>ของ example.com</dt> <dd>สั่งสร้างกุญแจสำหรับลงทะเบียนโซน<br /> <code># dnssec-keygen -r /dev/urandom -a rsasha1 -b 1024 -n ZONE example.com</code><br /> ตัวอย่างได้ผลเป็น <pre>Kexample.com.+005+11187</pre><p>และได้ไฟล์ Kexample.com.+005+11187.key และ Kexample.com.+005+11187.private</p> <p>และกุญแจสำหรับอัปเดตโซน<br /> <code># dnssec-keygen -r /dev/urandom -k -a rsasha1 -b 1024 -n ZONE example.com</code><br /> ตัวอย่างได้ผลเป็น</p> <pre>Kexample.com.+005+09453</pre><p>และได้ไฟล์ Kexample.com.+005+09453.key และ Kexample.com.+005+09453.private</p> <p>สร้างไฟล์คอนฟิกของโซน example.com<br /> <code># vi example.com.conf</code></p> <pre>view "internal" { match-clients { internal; }; zone "example.com" IN { type master; file "/etc/bind/internal/example.com.zone.signed"; key-directory "/etc/bind"; update-policy { grant example.com. subdomain example.com any; }; }; zone "0.168.192.in-addr.arpa" IN { type master; file "/etc/bind/internal/example.com.reverse.signed"; key-directory "/etc/bind"; update-policy { grant example.com. subdomain example.com any; }; }; }; view "external" { match-clients { any; }; zone "example.com" IN { type master; file "/etc/bind/external/example.com.zone.signed"; key-directory "/etc/bind"; update-policy { grant example.com. subdomain example.com any; }; }; }; </pre><p> สร้างโซนไฟล์ของ internal<br /> <code># vi internal/example.com.zone</code><br /> อันนี้ลองเปลี่ยนตามจริงนะครับ สมมุติว่าเครื่องนี้เอาชื่อ server1 เป็นหลัก แล้วใช้ชื่ออื่นคือ www, ns1, ftp, mail เป็นชื่อรอง</p> <pre>$TTL 86400 @ IN SOA server1.example.com. root.server1.example.com. ( 41 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum @ IN NS ns1.example.com. ; primary NS @ IN NS ns2.example.com. ; secondary NS www IN CNAME server1 ns1 IN CNAME server1 ftp IN CNAME server1 mail IN CNAME server1 www IN A 192.168.1.1 ns2 IN A 192.168.1.2 work1 IN A 192.168.1.101 work2 IN A 192.168.1.102 work3 IN A 192.168.1.103 $INCLUDE /etc/bind/Kexample.com.+005+11187.key $INCLUDE /etc/bind/Kexample.com.+005+09453.key </pre><p> ลงทะเบียนโซน example.com ของ internal<br /> <code># cd internal<br /> # dnssec-signzone -r /dev/urandom -t -g -o example.com example.com.zone /etc/bind/Kexample.com.+005+11187.private</code></p> <pre>example.com.zone.signed Signatures generated: 21 Signatures retained: 0 Signatures dropped: 0 Signatures successfully verified: 0 Signatures unsuccessfully verified: 0 Runtime in seconds: 0.063 Signatures per second: 331.151 </pre><p><code># cd ..</code></p> <p>เปลี่ยนเจ้าของและกลุ่ม<br /> <code># chown -R bindinjail:nogroup *</code></p> <p>เสร็จโซนไฟล์ของ internal</p> <p>ทดสอบขั้นต้น<br /> <code># /etc/init.d/bind9 restart</code><br /> ต้องไม่มีรายงานข้อผิดพลาด</p> <p>ทดสอบอัปเดต<br /> <code># nsupdate -d -v -k Kexample.com.+005+09453.private</code></p> <pre>Creating key... &gt; <strong>server 192.168.1.1</strong> &gt; <strong>zone example.com</strong> &gt; <strong>update add testing.example.com. 3600 A 192.168.1.5</strong> &gt; <strong>show</strong> Outgoing update query: ;; -&gt;&gt;HEADER&lt;&lt;- opcode: UPDATE, status: NOERROR, id: 0 ;; flags: ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0 ;; UPDATE SECTION: testing.example.com. 3600 IN A 192.168.1.5 &gt; <strong>send</strong> Sending update to 192.168.1.1#53 Outgoing update query: ;; -&gt;&gt;HEADER&lt;&lt;- opcode: UPDATE, status: NOERROR, id: 43656 ;; flags: ; ZONE: 1, PREREQ: 0, UPDATE: 1, ADDITIONAL: 1 ;; ZONE SECTION: ;example.com. IN SOA ;; UPDATE SECTION: testing.example.com. 3600 IN A 192.168.1.5 ;; SIG0 PSEUDOSECTION: . 0 ANY SIG 0 5 0 0 20080223084852 20080223083852 9453 example.com. zpGfPIECwJ8V31lm7mlq7zMiKYSuh2TlIyOZgEUJjZUgYTRHYZrwi75Z mDaKAJGb7uG+r4SLmuFDRdjQQ1mvtZcuo8SK2yjHK59QzUoFnGJXz427 vRNj/do4DbMxMkJpJwqDiKU87lGiy+CXvpbQAm+4AeJutpCTsGnfhixx k4c= Reply from update query: ;; -&gt;&gt;HEADER&lt;&lt;- opcode: UPDATE, status: NOERROR, id: 43656 ;; flags: qr ra ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 0 &gt; <strong>quit</strong> </pre><p> ลองค้นดูอีกที<br /> <code># nslookup testing.example.com localhost</code></p> <pre>Server: localhost Address: 127.0.0.1#53 Name: testing.example.com Address: 192.168.1.5 </pre></dd> <p>เสร็จ forward internal<br /> </p></dl> <p><strong>ยังเขียนไม่เสร็จ หมดแรงก่อน ข้อเขียนข้างบนยังไม่ได้ตรวจทาน</strong><br /> - reverse internal example.com ทำเหมือนเดิม ยกเว้นตอนอัปเดตใช้คำสั่งเป็น<br /> <code>&gt; update add 5.1.168.192.in-addr.arpa. 3600 IN PTR testing.example.com.</code><br /> โดยอย่าให้มีคำสั่ง zone XXXX มาก่อนหน้า อัปเดตได้เลย</p> <p>- forward external ทำเหมือนเดิม ---รอเขียนต่อ---</p> <p>อ้างอิง<br /> http://myrddin.org/howto/debian-bind9-chroot/<br /> http://www.ops.ietf.org/dns/dynupd/secure-ddns-howto.html<br /> http://garnser.blogspot.com/2008/02/how-to-enable-bind-with-dnssec-and.html<br /> http://www.unixwiz.net/techtips/bind9-chroot.html</p> </div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Topic:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/taxonomy/term/3">debian</a></div><div class="field-item odd"><a href="/taxonomy/term/145">bind9</a></div></div></div> Sat, 23 Feb 2008 11:27:32 +0000 wd 483 at https://www.thaitux.info https://www.thaitux.info/node/483#comments debian: bind9 แบบให้บริการเครือข่ายภายในและภายนอก https://www.thaitux.info/node/478 <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><h4>bind9 แบบให้บริการเครือข่ายภายในและภายนอก</h4> <p>การตั้งให้ name server ให้บริการเครือข่ายภายในและภายนอก โดยใช้โดเมนเดียวกัน มีข้อดีตรงที่เราไม่จำเป็นต้องแยกโดเมนให้จำยาก และเมื่อเวลาลูกข่ายภายในสั่งค้น การค้นก็ไม่ต้องเปลืองแพ็กเก็ตออกสู่ภายนอก เพียงแต่การปรับตั้งยุ่งนิดนึง<br /> <code># aptitude install bind9</code></p> <p> สมมุติว่า</p> <ul> <li>เราให้บริการอยู่ 2 โดเมนคือ example.com กับ example.org</li> <li>example.com ภายในเป็น 192.168.1.0/24 ส่วนภายนอกเป็น 111.112.113.114 (ไอพีสมมุติ)</li> <li>example.org ภายในเป็น 10.0.0.0/24 ภายนอกเป็น 211.212.213.214 (ไอพีสมมุติ)</li> <li>เครื่องที่เรากำลังตั้งอยู่ ให้ชื่อว่า ns1 (ซึ่งเราทำเป็น all-in-one ก็อาจมีชื่อเป็น www และ mail ด้วย)<br /> โดยมีไอพีของ ns1.example.com เป็น 192.168.1.1 และ ไอพีของ ns1.example.org เป็น 10.0.0.1</li> </ul> <p> จะต้องมีไฟล์คอนฟิกคือ example.com.conf และ example.org.conf<br /> มีโซนไฟล์คือ internal/example.com.zone กับ internal/example.org.zone และ external/example.com.zone กับ external/example.org.zone<br /> ตามด้วยรีเวิร์สไฟล์คือ internal/example.com.reverse กับ internal/example.org.reverse และ external/example.com.reverse กับ external/example.org.reverse</p> <p> เริ่มด้วย<br /> <code># cd /etc/bind</code></p> <p> เพิ่มกฎแยก internal และ external และให้อ่านไฟล์คอนฟิกของแต่ละโดเมนเข้ามาในระบบด้วย ผ่านไฟล์ named.conf.local<br /> <code># vi named.conf.local</code></p> <pre>... acl internals { 127.0.0.0/8; 10.0.0.0/24; 192.168.1.0/24; }; include "/etc/bind/example.com.conf"; include "/etc/bind/example.org.conf"; </pre><p> สร้างไฟล์คอนฟิกของ example.com<br /> <code># vi example.com.conf</code></p> <pre>view "internal" { match-clients { internals; }; zone "example.com" IN { type master; file "/etc/bind/internal/example.com.zone"; allow-update { none; }; }; zone "1.168.192.in-addr.arpa" IN { type master; file "/etc/bind/internal/example.com.reverse"; allow-update { none; }; }; }; view "external" { match-clients { any; }; zone "example.com" IN type master; file "/etc/bind/external/example.com.zone"; allow-update { none; }; }; zone "113.112.111.in-addr.arpa" IN { type master; file "/etc/bind/external/example.com.reverse"; allow-update { none; }; }; }; </pre><p> สร้างไฟล์คอนฟิกของ example.org<br /> <code># vi example.org.conf</code></p> <pre>view "internal" { match-clients { internals; }; zone "example.org" IN { type master; file "/etc/bind/internal/example.org.zone"; allow-update { none; }; }; zone "0.0.10.in-addr.arpa" IN { type master; file "/etc/bind/internal/example.org.reverse"; allow-update { none; }; }; }; view "external" { match-clients { any; }; zone "example.org" IN type master; file "/etc/bind/external/example.org.zone"; allow-update { none; }; }; zone "213.212.211.in-addr.arpa" IN { type master; file "/etc/bind/external/example.org.reverse"; allow-update { none; }; }; }; </pre><p> อย่าลืมสร้างไดเรกทอรี่ก่อน<br /> <code># mkdir internal external</code></p> <p> ตัวอย่างสร้างโซนไฟล์ของ internal/example.com<br /> <code># vi internal/example.com.zone</code></p> <pre>$TTL 86400 @ IN SOA ns1.example.com. root.ns1.example.com. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum @ IN NS ns1.example.com. ; primary NS @ IN NS ns2.example.com. ; secondary NS www IN CNAME ns1 ftp IN CNAME ns1 mail IN CNAME ns1 ; append or edit host file here ns1 IN A 192.168.1.1 ns2 IN A 192.168.1.2 work1 IN A 192.168.1.11 work2 IN A 192.168.1.12 ...</pre><p> ตัวอย่างสร้างโซนไฟล์ของ external/example.com<br /> <code># vi external/example.com.zone</code></p> <pre>$TTL 86400 @ IN SOA ns1.example.com. root.ns1.example.com. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum @ IN NS ns1.example.com. ; primary NS @ IN NS ns2.example.com. ; secondary NS www IN CNAME ns1 ftp IN CNAME ns1 mail IN CNAME ns1 ; append or edit host file here ns1 IN A 111.112.113.114 </pre><p> ตัวอย่างสร้างโซนไฟล์ของ internal/example.org<br /> <code># vi internal/example.org.zone</code></p> <pre>$TTL 86400 @ IN SOA ns1.example.org. root.ns1.example.org. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum @ IN NS ns1.example.org. ; primary NS @ IN NS ns2.example.org. ; secondary NS www IN CNAME ns1 ftp IN CNAME ns1 mail IN CNAME ns1 ; append or edit host file here ns1 IN A 10.0.0.1 ns2 IN A 10.0.0.2 shop1 IN A 10.0.0.11 shop2 IN A 10.0.0.12 ...</pre><p> ตัวอย่างสร้างโซนไฟล์ของ external/example.org<br /> <code># vi external/example.org.zone</code></p> <pre>$TTL 86400 @ IN SOA ns1.example.org. root.ns1.example.org. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum @ IN NS ns1.example.org. ; primary NS @ IN NS ns2.example.org. ; secondary NS www IN CNAME ns1 ftp IN CNAME ns1 mail IN CNAME ns1 ; append or edit host file here ns1 IN A 211.212.213.214 ...</pre><p> ตัวอย่างสร้างรีเวิร์สไฟล์ของ internal/example.com<br /> <code># vi internal/example.com.reverse</code></p> <pre>$TTL 86400 @ IN SOA ns1.example.com. root.ns1.example.com. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum @ IN NS ns1.example.com. ; primary NS @ IN NS ns2.example.com. ; secondary NS ; ; host in network 192.168.1.0 ; append or edit host file here 1 IN PTR ns1.example.com. 2 IN PTR ns2.example.com. 11 IN PTR work1.example.com. 12 IN PTR work2.example.com. ... </pre><p> ตัวอย่างสร้างรีเวิร์สไฟล์ของ external/example.com<br /> <code># vi external/example.com.reverse</code></p> <pre>$TTL 86400 @ IN SOA ns1.example.com. root.ns1.example.com. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum @ IN NS ns1.example.com. ; primary NS @ IN NS ns2.example.com. ; secondary NS ; ; host in network 111.112.113.0 ; append or edit host file here 114 IN PTR ns1.example.com. </pre><p> ตัวอย่างสร้างรีเวิร์สไฟล์ของ internal/example.org<br /> <code># vi internal/example.org.reverse</code></p> <pre>$TTL 86400 @ IN SOA ns1.example.org. root.ns1.example.org. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum @ IN NS ns1.example.org. ; primary NS @ IN NS ns2.example.org. ; secondary NS ; ; host in network 10.0.0.0 ; append or edit host file here 1 IN PTR ns1.example.org. 2 IN PTR ns2.example.org. 11 IN PTR shop1.example.org. 12 IN PTR shop2.example.org. ... </pre><p> ตัวอย่างสร้างรีเวิร์สไฟล์ของ external/example.org<br /> <code># vi external/example.org.reverse</code></p> <pre>$TTL 86400 @ IN SOA ns1.example.org. root.ns1.example.org. ( 42 ; serial (d. adams) 3H ; refresh 15M ; retry 1W ; expiry 1D ) ; minimum @ IN NS ns1.example.org. ; primary NS @ IN NS ns2.example.org. ; secondary NS ; ; host in network 211.212.213.0 ; append or edit host file here 214 IN PTR ns1.example.org. </pre><p> เปลี่ยนสิทธิ์ทั้งหมด<br /> <code># chown bind:bind * -R</code></p> <p> เสร็จแล้ว<br /> <code># /etc/init.d/bind9 restart</code></p> <p><strong>หมายเหตุ</strong><br /> ตัวเลข serial ไม่ค่อยจำเป็นเท่าไหร่ เป็นตัวเลขอะไรก็ได้ แต่ถ้าเราทำเป็น dynamic dns จะต้องเป็นตัวเลขที่เพิ่มค่าขึ้นไปเรื่อย ๆ ให้มากกว่าค่าเดิม ไม่งั้นเขาไม่ยอมอัปเดตค่าไอพีให้</p> <p><strong>อ้างอิง</strong><br /> <a href="http://www.debian-administration.org/articles/355">Two-in-one DNS server with BIND9</a></p> </div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Topic:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/taxonomy/term/3">debian</a></div><div class="field-item odd"><a href="/taxonomy/term/145">bind9</a></div></div></div> Mon, 18 Feb 2008 09:10:20 +0000 wd 478 at https://www.thaitux.info https://www.thaitux.info/node/478#comments ลองติดตั้ง dns แบบเปลี่ยนค่าได้ https://www.thaitux.info/node/133 <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>จะทดลองทำ DNS แบบยอมให้เปลี่ยนค่าไอพีได้</p> <p>ขออนุญาตเริ่มใหม่ เพื่อให้บทความจบในตัว</p> <p>เริ่มต้นด้วยการติดตั้ง bind9 ใหม่<br /> <code># aptitude remove --purge bind9 dnsutils<br /> # rm -rf /etc/bind<br /> # aptitude install bind9 dnsutils</code></p> <p>เนื่องจากต้องมีการเปลี่ยนค่าไอพีโดยใช้สิทธิ์ของผู้ใช้ชื่อ bind เราจึงควรสร้างไดเรกทอรีขึ้นมาเพื่อให้ผู้ใช้ bind มีสิทธิ์ในการเขียนไฟล์<br /> <code># cd /etc/bind<br /> # mkdir example.com<br /> # chown bind:bind example.com<br /> # cd example.com</code></p> <p>สร้างกุญแจสำหรับใช้ในการอัปเดตค่าไอพี (โดยใช้อัลกอริธึม HMAC-MD5 ขนาด 512บิต ตั้งชื่อกุญแจว่า server1.example.com.)<br /> <code># dnssec-keygen -a HMAC-MD5 -b 512 -n HOST server1.example.com.</code><br /> ผลลัพธ์ของผมคือ</p> <pre>Kserver1.example.com.+157+49285</pre><p>เราจะได้ไฟล์มาสองไฟล์ซึ่งมีลักษณะคือ <code>K(ชื่อกุญแจ)+NNN+NNNNN</code> โดยมีนามสกุลเป็น .key และ .private</p> <p>ตามตัวอย่างได้เนื้อไฟล์ Kserver1.example.com.+157+49285.key เป็น</p> <pre>server1.example.com. IN KEY 512 3 157 wLuCYKvKDqM2XJsqcspdycoJgLNJKUKga4bHANjE7FY0HCujucYhDUKt FD5wgGXGPCNVsZi7NOYDgVZSIJ8LbA==</pre><p> และเนื้อไฟล์ Kserver1.example.com.+157+49285.private เป็น</p> <pre>Private-key-format: v1.2 Algorithm: 157 (HMAC_MD5) Key: wLuCYKvKDqM2XJsqcspdycoJgLNJKUKga4bHANjE7FY0HCujucYhDUKtFD5wgGXGPCNVsZi7NOYDgVZSIJ8LbA==</pre><p> เราจะเอาค่า private key มาใช้ โดยสร้างไฟล์คอนฟิกขึ้นมา ตั้งชื่อว่า dnskeys.conf และนำเนื้อหาของกุญแจ private key มาใช้เป็นค่า secret<br /> <code># vi dnskeys.conf</code></p> <pre>key server1.example.com. { algorithm hmac-md5; secret "wLuCYKvKDqM2XJsqcspdycoJgLNJKUKga4bHANjE7FY0HCujucYhDUKtFD5wgGXGPCNVsZi7NOYDgVZSIJ8LbA=="; }; </pre><p> เพิ่มไฟล์คอนฟิกของคีย์ลงใน named.conf.local<br /> <code># vi ../named.conf.local</code></p> <pre>... include "/etc/bind/example.com/dnskeys.conf"; ...</pre><p> งานต่อไปเป็นงานซ้ำของเก่าคือสร้างโซนไฟล์ และรีเวิร์สไฟล์ และคอนฟิกไฟล์ โดยปรับเปลี่ยนค่าคอนฟิกไฟล์ตรงคำสั่ง allow-update เท่านั้น</p> <p>สร้างโซนไฟล์ชื่อ example.com.zone เหมือนเดิม<br /> <code># vi example.com.zone</code></p> <pre>$TTL 86400 @ IN SOA server1.example.com. root.server1.example.com. ( 51 ; serial (d. adams) 3H ; refresh after 3 hours 15M ; retry after 15 minutes 1W ; expire after 7 days 1D ) ; minimum TTL (Time To Live) of 1 days @ IN NS ns1.example.com. ; primary NS @ IN NS ns2.example.com. ; secondary NS ns1 IN CNAME server1 ; append or edit host ip here server1 IN A 192.168.1.1 ns2 IN A 192.168.1.2 client1 IN A 192.168.1.101 client2 IN A 192.168.1.102 client3 IN A 192.168.1.103</pre><p> สร้างรีเวิร์สไฟล์ชื่อ example.com.reverse เหมือนเดิม<br /> <code># vi example.com.reverse</code></p> <pre>$TTL 86400 @ IN SOA server1.example.com. root.server1.example.com. ( 51 ; serial (d. adams) 3H ; refresh after 3 hours 15M ; retry after 15 minutes 1W ; expire after 7 days 1D ) ; minimum TTL (Time To Live) of 1 days @ IN NS ns1.example.com. ; primary NS @ IN NS ns2.example.com. ; secondary NS ; append or edit host name here 1 IN PTR server1.example.com. 2 IN PTR ns2.example.com. 101 IN PTR client1.example.com. 102 IN PTR client2.example.com. 103 IN PTR client3.example.com.</pre><p> สร้างคอนฟิกไฟล์ชื่อ example.com.conf โดยกำหนดให้สามารถเปลี่ยนแปลงค่าไอพีได้ (allow-update)<br /> <code># vi example.com.conf</code></p> <pre>zone "example.com" IN { type master; file "/etc/bind/example.com/example.com.zone"; allow-update { key "server1.example.com."; }; }; zone "1.168.192.in-addr.arpa" IN { type master; file "/etc/bind/example.com/example.com.reverse"; allow-update { key "server1.example.com."; }; }; </pre><p> เพิ่มค่าคอนฟิกไฟล์ให้ระบบรับรู้ โดยเติมลงใน named.conf.local<br /> <code># vi ../named.conf.local</code></p> <pre>... include "/etc/bind/example.com/example.com.conf";</pre><p> แก้ไขให้กรุ๊ป bind เขียนลงโซนไฟล์ รีเวิร์สไฟล์ และในไดเรกทอรี่นี้ได้ ทั้งนี้เพื่อประโยชน์ตอนอัปเดตค่าไอพี<br /> <code># chmod g+w example.com.zone example.com.reverse<br /> # chmod g+w ../example.com</code></p> <p>เมื่อเสร็จเรียบร้อยแล้ว ก็สั่งเริ่ม bind9 ใหม่<br /> <code># /etc/init.d/bind9 restart</code></p> <p>ติดตั้ง ntpdate ซึ่งต้องใช้ตอนอัปเดตไอพี<br /> <code># aptitude install ntpdate</code></p> <p>จบการติดตั้งแค่นี้ครับ<br /> ต่อไปเป็นการทดสอบการอัปเดตค่าไอพี<br /> ก่อนอื่นต้องซิงก์เวลาก่อน ผมลองใช้เซิร์ฟเวอร์ที่ thaicert<br /> <code># ntpdate -s -b clock.thaicert.nectec.or.th</code></p> <p>อัปเดตโดยนำไฟล์ private key มาใช้<br /> <code># nsupdate -k Kserver1.example.com.+157+49285.private -d</code><br /> ทดลองเปลี่ยนค่า server1.example.com เป็น 192.168.1.4</p> <pre>server localhost zone example.com. update delete server1.example.com. update add server1.example.com. 60 IN A 192.168.1.4 send quit</pre><p>ตัวอย่างหน้าจอภาพเครื่องทดสอบ</p> <pre>Sending update to 127.0.0.1#53 Outgoing update query: ;; -&gt;&gt;HEADER&lt;&lt;- opcode: UPDATE, status: NOERROR, id: 11566 ;; flags: ; ZONE: 1, PREREQ: 0, UPDATE: 2, ADDITIONAL: 1 ;; ZONE SECTION: ;example.com. IN SOA ;; UPDATE SECTION: server1.example.com. 0 ANY ANY server1.example.com. 60 IN A 192.168.1.4 ;; TSIG PSEUDOSECTION: server1.example.com. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1165632027 300 16 yjgvsLCdFobUj/p7lex21g== 11566 NOERROR 0 Reply from update query: ;; -&gt;&gt;HEADER&lt;&lt;- opcode: UPDATE, status: NOERROR, id: 11566 ;; flags: qr ra ; ZONE: 0, PREREQ: 0, UPDATE: 0, ADDITIONAL: 1 ;; TSIG PSEUDOSECTION: server1.example.com. 0 ANY TSIG hmac-md5.sig-alg.reg.int. 1165632027 300 16 j9mG82rwthDTBJyCopHyUw== 11566 NOERROR 0</pre><p>ตรงฟิลด์ status ต้องเป็น NOERROR การทำงานจึงจะสมบูรณ์ครับ</p> <p>ทดลองค้นค่า server1.example.com<br /> <code># nslookup server1.example.com localhost</code></p> <pre>Server: localhost Address: 127.0.0.1#53 Name: server1.example.com Address: 192.168.1.4</pre><p>เรียบร้อยแล้วครับ</p> <p><strong>หมายเหตุ</strong></p> <ul> <li>ในระหว่างการทำงานอัปเตด โปรแกรมจะสร้างโซนไฟล์สำรองขึ้นมาในชื่อว่า example.com.zone.jnl</li> <li>เมื่อสั่งเริ่ม bind9 ใหม่ จะพบว่าเนื้อหาของโซนไฟล์ถูกเปลี่ยนแปลงไปตามการอัปเดต</li> <li>ส่วนการอัปเดตรีเวิร์สไฟล์ด้วย ยังทำไม่เป็นครับ :)</li> <li>ใจจริง อยากปรับเปลี่ยนเนื้อโซนไฟล์กับรีเวิร์สไฟล์ ให้เอาเรื่อง <a href="http://www.debianclub.com/node/47">ลูกเล่นของ BIND9 DNS Server!</a> มารวมเสียทีเดียว แต่กลัวตัวเองงง เลยปล่อยไว้อย่างเดิม :)</li> </ul> <p><strong>หมายเหตุ 2</strong><br /> ข้อเขียนนี้เป็นเพียงการทดลองเท่านั้น แต่ใจสู้เขียน ด้วยค้นหาวิธีการแบบง่าย ๆ ไม่พบ (step by step) เลยต้องทดลองเอง และต้องการบันทึกผลการทดลองที่สามารถใช้งานได้แล้ว ดังนั้นจึงยังไม่ทราบผลข้างเคียงเรื่องความปลอดภัย และความถูกต้องตามระเบียบแบบแผนที่ควรเป็น<br /> จึงต้องการขอคอมเมนต์และคำแนะนำเพื่อให้ได้รู้เรื่องกันในวงกว้างครับ<br /> (ก่อนหน้านี้ เวลาต้องการอัปเดตเลขไอพี ผมใช้สคริปต์ในการสร้างโซนไฟล์ และรีเวิร์สไฟล์ขึ้นมาใหม่ แลัวจึงสั่งเริ่ม bind9 ใหม่ จึงไม่มีปัญหาเรื่องความปลอดภัยมาเกี่ยว)</p> <p><strong>อ้างอิง</strong></p> <ul> <li><a href="http://dag.wieers.com/howto/bits/bind-ddns.php">DAG: Bind Dynamic DNS (DDNS) updates using nsupdate</a></li> <li><a href="http://caunter.ca/nsupdate.txt">NSUPDATE HOWTO by Stef Caunter</a></li> <li><a href="http://linux.yyz.us/nsupdate">nsupdate: Quick and Painless Dynamic DNS</a></li> </ul> </div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Topic:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/taxonomy/term/3">debian</a></div><div class="field-item odd"><a href="/taxonomy/term/144">dns</a></div><div class="field-item even"><a href="/taxonomy/term/145">bind9</a></div><div class="field-item odd"><a href="/taxonomy/term/146">allow-update</a></div></div></div> Fri, 08 Dec 2006 12:23:57 +0000 wd 133 at https://www.thaitux.info https://www.thaitux.info/node/133#comments debian: ลองติดตั้ง dns https://www.thaitux.info/node/132 <div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p>เอามาจาก <a href="http://www.thailinuxhosting.com/yabbse/index.php?board=8;action=display;threadid=8407;start=0"><br /> ThaiLinuxCafe - debian : ติดตั้ง dns อย่างง่าย</a></p> <p>เรื่องของ DNS (Domain Name Server) เป็นเรื่องหลักของการใช้งานอินเตอร์เน็ต เนื้อหาซับซ้อนและทำความเข้าใจยาก<br /> สำหรับในที่นี้ เราเอาแค่ติดตั้งพอใช้งานได้<br /> โดยเราจะติดตั้งเครื่องเซิร์ฟเวอร์เพื่อทำหน้าที่เป็น DNS สำหรับใช้งานเครือข่ายภายใน<br /> โครงร่างคือ</p> <ul> <li>เน็ตเวิร์กเราเป็น 192.168.1.0/24 มีโดเมนเป็น example.com</li> <li>เครื่องที่ทำหน้าที่ name server มีชื่อว่า server1.example.com ไอพีเป็น 192.168.1.1 โดยมีชื่อเสมือนคือ ns1.example.com</li> <li>มีเครื่องในวงเครื่องอื่น ๆ ดังนี้ <ul> <li>ns2 = 192.168.1.2</li> <li>client1 = 192.168.1.101</li> <li>client2 = 192.168.1.102</li> <li>client3 = 192.168.1.103</li> </ul> </li> </ul> <p>แพกเกจที่ทำหน้าที่ DNS ในเดเบียนชื่อ bind9 และแพกเกจที่เป็นโปรแกรมช่วยชื่อ dnsutils<br /> งานปรับตั้งคือการสร้างไฟล์สำหรับให้ bind9 เรียกใช้ ดังนี้</p> <ul> <li>โซนไฟล์ ไว้สำหรับค้นข้อมูลจากชื่อเป็นไอพี</li> <li>รีเวิร์สไฟล์ ไว้สำหรับค้นข้อมูลย้อนกลับ คือจากไอพีเป็นชื่อ</li> <li>คอนฟิกไฟล์ สำหรับบอก bind9 ว่าเราจะติดตั้ง DNS ในแบบไหน และประกอบด้วยไฟล์ข้อมูลอะไรบ้าง</li> </ul> <p><strong>เริ่มด้วย</strong><br /> ติดตั้ง DNS และโปรแกรมช่วย<br /> <code># aptitude install bind9 dnsutils</code></p> <p>ไปที่ไดเรกทอรี่ของการปรับตั้ง<br /> <code># cd /etc/bind</code></p> <p>เริ่มสร้างโซนไฟล์ ให้ชื่อว่า example.com.zone มีเนื้อไฟล์ดังนี้<br /> <code># vi example.com.zone</code></p> <pre>$TTL 86400 @ IN SOA server1.example.com. root.server1.example.com. ( 51 ; serial (d. adams) 3H ; refresh after 3 hours 15M ; retry after 15 minutes 1W ; expire after 7 days 1D ) ; minimum TTL (Time To Live) of 1 days @ IN NS ns1.example.com. ; primary NS @ IN NS ns2.example.com. ; secondary NS ns1 IN CNAME server1 ; append or edit host ip here server1 IN A 192.168.1.1 ns2 IN A 192.168.1.2 client1 IN A 192.168.1.101 client2 IN A 192.168.1.102 client3 IN A 192.168.1.103</pre><p> สร้างรีเวิร์สไฟล์ ให้ชื่อว่า example.com.reverse มีเนื้อไฟล์ดังนี้<br /> <code># vi example.com.reverse</code></p> <pre>$TTL 86400 @ IN SOA server1.example.com. root.server1.example.com. ( 51 ; serial (d. adams) 3H ; refresh after 3 hours 15M ; retry after 15 minutes 1W ; expire after 7 days 1D ) ; minimum TTL (Time To Live) of 1 days @ IN NS ns1.example.com. ; primary NS @ IN NS ns2.example.com. ; secondary NS ; append or edit host name here 1 IN PTR server1.example.com. 2 IN PTR ns2.example.com. 101 IN PTR client1.example.com. 102 IN PTR client2.example.com. 103 IN PTR client3.example.com.</pre><p> สร้างคอนฟิกไฟล์สำหรับโซน example.com ให้ชื่อว่า example.com.conf มีเนื้อไฟล์ดังนี้<br /> <code># vi example.com.conf</code></p> <pre>zone "example.com" IN { type master; file "/etc/bind/example.com.zone"; allow-update { none; }; }; zone "1.168.192.in-addr.arpa" IN { type master; file "/etc/bind/example.com.reverse"; allow-update { none; }; };</pre><p> เปลี่ยนสิทธ์ให้ bind เป็นเจ้าของไฟล์<br /> <code># chown bind:bind example.com.*</code></p> <p>บอกให้ bind9 เอาไฟล์ของเราไปใช้งาน โดยการเพิ่มลงในไฟล์ named.conf.local ดังนี้<br /> <code># vi named.conf.local</code></p> <pre>... include "/etc/bind/example.com.conf";</pre><p> เสร็จแล้วก็สั่งเริ่ม bind9 ใหม่<br /> <code># /etc/init.d/bind9 restart</code></p> <p>ถ้ามีข้อผิดพลาด ให้ดูที่ /etc/log/syslog</p> <p>ทดสอบโดย<br /> <code># nslookup server1.example.com</code><br /> จะแสดงผลเป็น 192.168.1.1<br /> <code>Server: 192.168.1.1<br /> Address: 192.168.1.1#53</code></p> <p><code>Name: server1.example.com<br /> Address: 192.168.1.1</code></p> <p>ทดสอบย้อนกลับ<br /> <code># nslookup 192.168.1.1</code><br /> จะแสดงผลเป็น server1.example.com<br /> <code>Server: 192.168.1.1<br /> Address: 192.168.1.1#53</code></p> <p><code>1.1.168.192.in-addr.arpa name = server1.example.com.</code></p> <p><strong>หมายเหตุ</strong></p> <ul> <li>เลขซีเรียลตามตัวอย่างเป็น 51 แต่ส่วนใหญ่นิยมใช้วันที่ เช่น 2006030401 เป็นต้น</li> <li>ในเนื้อไฟล์ของโซนไฟล์และริเวิร์สไฟล์ เวลาพิมพ์ระวังอยาลืมเครื่องหมายจุด ท้ายชื่อโฮสต์</li> <li>สำหรับเครื่อง DNS ที่ทำหน้าที่เกตเวย์ออกอินเตอร์เน็ต พบว่าเมื่อแก้ไขไฟล์ /etc/resolv.conf ให้ชี้ไปที่ DNS ของไอเอสพี เครื่องเราจะทำหน้าทีเป็น slave โดยอัตโนมัติ</li> <li>ถ้าจะเพิ่มโดเมน และเป็นเน็ตเวิร์กคนละวง ก็ใช้วิธีเดียวกันได้ โดยสร้างโซนไฟล์ รีเวิร์สไฟล์ และคอนฟิกไฟล์สำหรับโดเมนที่เพิ่ม</li> <li>ถ้าเพิ่มโดเมน และเป็นเน็ตเวิร์กวงเดียวกัน เช่น หนึ่งไอพี มีหลายโดเมน ให้สร้างเฉพาะโซนไฟล์ ไม่ต้องสร้างรีเวิร์สไฟล์ ซึ่งก็จะทำให้เรียกดูชื่อย้อนจากไอพีไม่ได้</li> <li>ถ้าจะเพิ่มเน็ตเวิร์กเป็นสองวง โดยเป็นโดเมนเดียวกัน ให้ดูตัวอย่างที่ <a href="http://www.debian-administration.org/articles/355">Debian Administration: Two-in-one DNS server with BIND9</a></li> </ul> <p>เนื้อหาไม่ค่อยถูกตามหลักการนะครับ เพราะมันยาก ถ้าจะให้รู้เรื่องจริง ๆ ต้องเข้าใจระบบอินเตอร์เน็ตพอสมควร<br /> ในที่นี้เอาแค่พอใช้งานได้ครับ</p> <p>อ้างอิงเพิ่มเติม</p> <ul> <li><a href="http://www.bind9.net/manual/bind/9.3.2/Bv9ARM.html">BIND 9 Administrator Reference Manual</a></li> <li><a href="http://aboutdebian.com/dns.htm">AboutDebian : How To Set Up Linux DNS Services</a></li> </ul> </div></div></div><div class="field field-name-taxonomy-vocabulary-1 field-type-taxonomy-term-reference field-label-above"><div class="field-label">Topic:&nbsp;</div><div class="field-items"><div class="field-item even"><a href="/taxonomy/term/3">debian</a></div><div class="field-item odd"><a href="/taxonomy/term/144">dns</a></div><div class="field-item even"><a href="/taxonomy/term/145">bind9</a></div></div></div> Thu, 07 Dec 2006 18:42:42 +0000 wd 132 at https://www.thaitux.info https://www.thaitux.info/node/132#comments