ÄúµÄλÖãºÊ×Ò³ > Îĵµ > bind >
 ÎÄÕ·ÖÀà 

¶¯Ì¬DNSÉèÖù¥ÂÔ


´´½¨£º2005-10-27 16:19:05
×÷ÕߣºUnlinux
À´×Ô: http://www.Unlinux.com

ÕâÊÇһƪÔŲ́ÍåÍøÕ¾×ªÌùµÄÎÄÕ£¬ÎÒ¾õµÃºÜÓвο¼ÐÔ£¬ÌرðÊÇÏñ×ö¶¯Ì¬DNSµÄ£¬ËùÓжԶ¯Ì¬DNSÓÐÐËȤµÄÅóÓѶ¼Ó¦¸Ã¿´µÄ¡£ÓÉÓÚʱ¼ä¹ØÏµ£¬ÎÒûÓÐ×ö¹ýÕûÀí¡£
name.conf :


// --------------- Ðû¸æ Key µÄ²¿·Ö---------------
// P.S: µ×Ï嵀 leo, mail key ÊDz»Õý´_µÄ
key "leo" {
algorithm hmac-md5;
secret "hB/XM2eFTyxA5r/scautOZ==";
};

key "mail" {
algorithm hmac-md5;
secret "ht5TkKKFP5l8u9ZTcDbStw==";
};


// --------------- Ðû¸æ ZONE µÄ²¿·Ö---------------
zone "sayya.org" {
type master;
file "named.sayya";

notify yes;

also-notify {
140.128.78.250;
211.23.99.147;
61.218.164.83;
};

allow-transfer {
140.128.78.250;
211.23.99.147;
61.218.164.83;
};

allow-query {
0.0.0.0/0;
};

update-policy {
// ʹÓà mail HOST µÄ key£¬ƒHÓЙàÏÞ׃¸ü mail.sayya.org Åc rsync.sayya.org µÄ A record
grant mail name mail.sayya.org. A;
grant mail name rsync.sayya.org. A;
// ʹÓà leo USER µÄ key£¬¿ÉÒÔÍêÈ«¿ØÖÆ sayya.org£¬±È·½ÐÂÔöÒ» subdomain£¬Ö¸¶¨ DNS
// »òÊÇÔö¼ÓÒ» A, CNAME,TXT.. record µÈµÈ
grant leo subdomain sayya.org. ANY;
};

};

´ó¸Å¾ÍÊÇß@‚€˜Ó×Ó£¬ÁíÍ⸽ÉÏ֮ǰ»Ø¸²µÄÄÇÆª..

--------

×÷Õß: leoliou (ů¶¬) ¿´°å: Linux
˜Ëî}: Re: „Ó‘B IP ¼ÜÕ¾ @_@
•rég: Sun Feb 10 14:49:30 2002

¡ù ÒýÊö¡¶skchen.bbs@bbs.nsysu.edu.tw (¨Ú„P)¡·Ö®ã‘ÑÔ£º
> СµÜÔÚ֮ǰ¾ÍÓÐÌáß^ÏàêPµÄ†–î}
> ´ó¼ÒÓõĄӑBIPŒ¦Ó³µÄϵ½y¶¼²»Ò»˜Ó
> ÎÒÊÇÓà DynDNS µÄϵ½y
> Ò²²»ÖªµÀžéʲüNÅÜÁËÒ»¶Î•rég¾Í•þ®aÉúÒ»´ó¶Ñš™ŒÆ³ÌÐò @_@
> ¸üÉñµÄÊÇÕÒ²»µ½³ÌÐòÔÚÄÄÑe(߀ÊÇÎÒ±ÈÝ^ßdÄ_????) @_@
> ß@ºÃÏñÊÇ DynDNS ½oµÄ ddClient ³ÌʽÓÐ BUG °É
> ÎÒÀûÓÃÁË perl ºÍ bash shell script Œ‘ÁËһЩС³Ìʽ
> ¿ÉÒÔÓÃ?í‚Éœy PPP ½éÃæÊÇ·ñ´æÔÚ
> Èç¹û²»´æÔÚ¾ÍßB¾€ ^o^

àÅ£¬¿´µ½ß@·âПÐÓXÊÇÕæµÄÓÐÓ‘Õ“µÄšâ·Õ£¬³¬Ï²šgß@·N¸ÐÓX~

Ó›µÃÒÔǰ߀Óà ADSL “ܽÓÖÆµÄ•rºò£¬ÊÇʹÓà rp-pppoe ßB¾€µÄ£¬•þÔڔྀáá×Ô„Ó
ÖØÐÂßB¾€£¬ß@‚€¿ÉÒÔ½â›Q”ྀµÄ†–î}¡£

ÔÙ?íÊÇÖØücÁË£¬Dynamic IP ÔõüNÞkÄØ£¿ÎÒĿǰµÄ­h¾³ÊÇëpÏò Cable£¬IP Ò²ÊÇÓÉ
DHCP Server È¡µÃ Dynamic IP µÄ¡£®”È»£¬Èç¹ûÄúÈ¥ÉêÕˆ dns2go î?ËÆµÄ³Ìʽ£¬
ÊÇ¿ÉÒÔ½â›QÄú„Ó‘B IP µÄ†–î}£¬µ«ÊÇȱücÊÇÄú²»¿ÉÒÔʹÓÃ×Ô¼ºµÄ¾WÖ·£¬Ò»¶¨ÒªÊÇ
ijһЩÒѽ›Âɶ¨ºÃµÄ¾WÖ·£¬»òÕßÊÇÓпÉÄÜÒªÇóÄú°Ñ Primary DNS Ö¸ÏòÔ“¹«Ë¾´ú
¹Ü£¬ÁíÍ⣬¾ÍÊÇÄú¿ÉÄÜ߀ҪÔÚ Server ÖЈÌÐÐÔ“¹«Ë¾ËùÌṩµÄ„Ó‘B IP ¸üгÌʽ..
ŸoÕ“ÈçºÎ£¬¾Í•þ׌ÎÒ“Ï뵽ϵ½y°²È«ÐԵĆ–î}.. Œ¦ÎÒ?íÕf£¬·Ç³£²»·½±ã¡£

ì¶ÊÇ£¬ÎÒÕÒÁËһ̨¹Ì¶¨ IP µÄ Server£¬¼ÜÉÏÁË Bind£¬ß@̨¾ÍÊÇÎÒ×Ô¼º¾WÓòµÄ
Primary DNS£¬Ò²¾ÍÊÇ Dynamic DNS£¬ÈçºÎÔO¶¨£¬ÍíücÌáµ½¡£¶øß@̨ DNS µÄ
¹Ì¶¨ IP ¼ÙÔOžé 61.22.33.20£¬Domain žé example.com£¬Ô]ƒÔÃû·Qžé
ns.example.com

ÔÙ?í£¬±È·½ÎÒµÄ mail server ¼ÜÔÚ¼ÒÑe£¬¾ÍÊÇÎÒ¬FÔÚëpÏò Cable µÄ¾€Â·ÉÏ£¬
ß@̨ mail server µÄ Domain name ¼ÙÔOžé£º mail.example.com
ÎÒÖ»Òª¶¨•rÏòÎÒµÄ Primary DNS ¸üÐÂÎÒµÄ mail server µÄ IP ¾Í¿ÉÒÔ‡Ó£¬

Primary DNS ÔõüNÅДàÔÊÔSÄÄЩëŠÄX×ö¸üÐÂÄØ£¿ÓЃɷN·½Ê½£¬µÚÒ»·N·½Ê½žé
ÔÚ Primary DNS ÖÐÔO¶¨ allow-update£¬ÔO¶¨Ä³Ð©¹Ì¶¨ IP ¿ÉÒÔÏò Primary
DNS ¸üÐÂÙYÁÏ£¬µ«ÊDZÈÝ^›]ÓÐ?—ÐÔ¡£ÁíÍâÒ»·N¾ÍÊÇ´ý•þÒª½é½BµÄ
update-policy¡£

allow-update ¿ÉÒÔÔÊÔSÌØ¶¨µÄ IP »ò key ?í×ö„Ó‘B¸üУ¬îAÔOÊDz»ÔÊÔSÈκÎ
IP ¸üС£

update-policy ÔÚ BIND 9 ²ÅÌṩ£¬²»ÓÃÖ¸¶¨Ä³Ìض¨µÄ IP ²Å¿ÉÒÔ×ö„Ó‘B¸üУ¬
¶øÊÇÒª‘{ key ?í›Q¶¨¸üЙàÏÞ¡£Primary DNS ÓÐß@‚€ key£¬
mail server ÍùááÖ»Òª‘{ß@‚€ key ¾Í¿ÉÒÔ„Ó‘B¸üРIP ÁË¡£
®”È»ÁË£¬mail server Åc Primary DNS µÄ key µÃÒ»˜Ó²ÅÐС£

key ¾ÍÊÇÓà dnssec-keygen ¹¤¾ß®aÉú³ö?íµÄºž×C£¬¬FÔÚì¶ Primary DNS
ÉÏ£¬®aÉú key£¬?K°l½o mail server¡£

Ê×ÏÈ£¬¸ÐÉú mail server ÓÃµÄ key£º

# dnssec-keygen -a HMAC-MD5 -b 128 -n HOST mail
Kmail.+157+44587
#

²é¿´Ò»Ï£¬½Y¹û•þ®aÉúÁË™nÃûî?ËÆ Kmail.+157+44587.key Åc
Kmail.+157+44587.private ƒÉ‚€™n°¸¡£

ÆäÖÐ Kmail.+157+44587.key ™n°¸ƒÈÈÝéLµÃî?ËÆß@˜Ó£º

# less Kmail.+157+44587.key
mail. IN KEY 512 3 157 BJ7y6dzxchy3u0B4hRLksQ==
#

™n°¸ƒÈÈÝ BJ7y6dzxchy3u0B4hRLksQ== ß@ÊÇ¾Ž´aß^µÄ£¬¾ÍÊÇËùÖ^µÄ key¡£

Ê×ÏÈ£¬ÄúµÃŒ¢ß@ƒÉ‚€ key Ñ}Ñuµ½ mail server ÉÏÃæ£¬½¨×hʹÓà sftp ‚÷Ý”£¬
±ÜÃâ±»¸`¡£

¬FÔÚ£¬é_ʼ Primary DNS ÉϵÄÔO¶¨ÁË¡£

----- /etc/named.conf ----------

key "mail" {
algorithm hmac-md5;
secret "BJ7y6dzxchy3u0B4hRLksQ==";
};

zone "example.com" {
type master;
file "named.example";

update-policy {
grant mail name mail.example.com. A;
// mail key ƒHÔÊÔS¸üРmail.example.com µÄ A record.
};
};

----- End of File ----------

Primary DNS ÉÏÃæµÄÔO¶¨Íê³ÉáᣬՈӛµÃÖØÅÜ bind¡£

½ÓÏÂ?í£¬ÔÚ mail server ·½Ã棬ҪÈçºÎ¸üÐÂÄØ£¿

®”È»£¬×îÖØÒªµÄ£¬Ê×ÏÈҪȡµÃ mail server µÄ key¡£„‚„‚Òѽ›ÓÐÌáµ½£¬
ÔÚ Primary DNS ®aÉúáᣬÓà ftp ‚÷Ý”µ½ mail server ?í¡£

ʹÓà nsupdate ¹¤¾ßÏò Primary DNS ×ö¸üЄÓ×÷£º

$ nsupdate -k Kmail.+157+44587.key
> server ns.example.com // Ö¸¶¨ Primary DNS
> update delete mail.example.com A // ÏÈ„h³ýÅfÙYÁÏ
> update add mail.example.com 0 A 210.64.233.10 // ÔÙÐÂÔöÙYÁÏ
> send // Ëͳöµ½ Primary DNS
$ // Ctrl-C or Ctrl-D ëxé_

òž×Cһϣ¬ÊDz»ÊǸüгɹ¦£º

$ host mail.example.com ns.example.com
mail.example.com has address 210.64.233.10
$

¹§Ï²Äú¸üгɹ¦ÁË£¬Èç¹ûÄú›]Óгɹ¦£¬Õˆµ½ Primary DNS ÉÏ¿´ messages ¼oä›™n¡£
×¢Ò⣬ key ™n°¸µÄ™àÏÞ£¬‘ªÔ“Ö»ÓÐ owner ¿ÉÒÔ×xŒ‘£¬‘ªžé -rw------- ՈעÒâ¡£
ˆÌÐÐ nsupdate µÄ user£¬‘ªžé key µÄ owner£¬·ñ„t•þ°lÉú Permission denied
µÄÇéÐΡ£

Èç¹ûÄúҪ׌ÄúµÄëŠÄX×Ô„Ó¸üУ¬ß@ÑeÓÐÎÒ×Ô¼ºŒ‘µÄ script ¹©…¢¿¼£º

½¨Á¢Ò»‚€ tmp.txt ƒÈÈÝÈçÏ£º

----- tmp.txt ----------
server ns.example.com
update delete mail.example.com A
update add mail.example.com 0 A SERVER_NEW_IP
send
----- End of File ----------

½¨Á¢¸üÐ嵀 script: newip.sh

----- newip.sh ----------
#!/bin/sh
#
# Written by LeoLiou.
#

# config the update dir.
exe_path=/root/nsupdate

new_IP=`/sbin/ifconfig eth0 | grep 'inet addr' | cut -d: -f 2
| cut -d' ' -f1`

/bin/cat $exe_path/tmp.txt | sed s/SERVER_NEW_IP/$new_IP/g
> $exe_path/update.txt

# update now IP to name server.
/usr/bin/nsupdate -k $exe_path/Kmail.+157+44587.key -v $exe_path/update.txt
----- End of File ----------

ÕˆŒ¢ÄúµÄ key, tmp.txt, newip.sh ·ÅÖÃì¶Í¬Ò»Ä¿ä›£¬?K½oÓè newip.sh ˆÌÐЙàÏÞ¡£
ÕˆˆÌÐÐÒ»´Î newip.sh ´_¶¨›]ÓІ–î}Ö®áᣬÔÙÀûÓà crontab ˆÌÐÐ newip.sh ¼´¿É¡£

0 * * * * /root/nsupdate/newip.sh

ß@˜Ó¾ÍÍê³ÉÕû‚€„Ó‘B IP ¸üЙCÖÆÁË¡£

êPì¶ update-policy£¬Õˆ¿´ BIND 9 Administrator Reference Manual£º

http://www.isc.org/products/BIND/bind9.html

dnssec-keygen Åc nsupdate µÄʹÓ÷½·¨£¬ÏàÐÅ man page Œ‘µÃÒѽ›ºÜÇå³þÁË¡£


--
Leo Liou (leo@i18n.linux.org.tw)

Join i18n project: http://i18n.linux.org.tw/


* ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~ * ~

---------------
Ña³ä by netman on October 30, 2002©s
---------------

ÎÒÂÔžéÐÞ¸ÄÁË LeoÐÖ µÄ script ©o?KÖÃì¶ /root/nsupdate Ä¿ä›ÏÂÃæ¡£
ÎÒß@ÑeŒ¢½çÃæ¸Äžé ppp0 ©oͬ•rÒ²œpÉÙ²»±ØÒªµÄ‚÷ËÍ„Ó×÷¡£
(Ô]©sÔ­±¾µÄ tmp.txt ÎÒÒ²¸ÄÃûžé nsupdate.scr ÁË©oÕˆÁôÒâ¡£)

ƒÈÈÝÈçÏ©s

#!/bin/bash
#
# Written by LeoLiou.
# Modified by netman on 2002/09/26
#

# set variables
if echo $0 | grep '^/' ; then
w_dir=${0%/*}
else
w_dir=$PWD/${0%/*}
fi
KEY_FILE=$w_dir/Kmail.+157+44587.key
UPDATE_SCR=$w_dir/nsupdate.scr
UPDATE_DATA=$w_dir/nsupdate.data
HOST_NAME=mail.example.com
NS_SERVER=ns.example.com
IF="ppp0"

# ensure key files
for file in $KEY_FILE ${KEY_FILE%key}private
do
if [ ! -r $file ]; then
echo "$(basename $0): ERROR: $file is not readable."
exit 1
fi
done

# prepare initial script
test -f $UPDATE_SCR || {
cat >| $UPDATE_SCR <<-ENDSCR
server NS_SERVER
update delete HOST_NAME A
update add HOST_NAME 0 A NEW_IP
send
ENDSCR # <----- ÕˆŒ¢ ENDSCR Ç°ÃæµÄ¿Õ°×“Q³É tab £¡
test "$?" = "0" || {
echo "$(basename $0): ERROR: could not create $UPDATE_SCR."
exit 2
}
}

# ensure the server is connectable
host $NS_SERVER $NS_SERVER | grep "$NS_SERVER" &>/dev/null || {
echo "$(basename $0): ERROR: could not contact nameserver $NS_SERVER."
exit 3
}

# get current ip
NEW_IP=$(ifconfig | grep "$IF " -A 1
| awk '/inet/ {print $2}' | sed -e 's/.*://')

# do a test then update
host $HOST_NAME $NS_SERVER | grep "$NEW_IP" &>/dev/null || {
/bin/cat $UPDATE_SCR | sed s/NEW_IP/$NEW_IP/
| sed s/NS_SERVER/$NS_SERVER/
| sed s/HOST_NAME/$HOST_NAME/
>| $UPDATE_DATA
/usr/bin/nsupdate -k $KEY_FILE -v $UPDATE_DATA || rm -rf $UPDATE_DATA
}

#-- end of script --#

ÉÏÃæµÄ script ¿Éì¶ß@ÑeÏÂÝd£º
http://study-area.ks.edu.tw/linux/src/newip.sh.tgz

Ŀǰß@‚€ script Ö»ÄÜÔÚ linux client ÉψÌÐЩo
µ«ÎÒÏë©o͸ß^º††ÎµÄ cgi ¹¦ÄÜ©oÄÇüNÈÎºÎµÄ windows client Ò²ÄÜÝpó µÄßMÐиüЩo
²»ß^©oß@²¿·Ý¾ÍÐèÒªÆäËûÅóÓÑŽÍæÔO¶¨ÁË¡£

×ªÔØ×Ô£ºhttp://www.unlinux.com/doc/bind/20051027/3632.html

¡¾ÆÀÂÛ¡¿ ¡¾¼ÓÈëÊղؼС¿ ¡¾´ó ÖРС¡¿ ¡¾´òÓ¡¡¿ ¡¾¹Ø±Õ¡¿
 *  Çë×ðÖØÎÒÃǵÄÀͶ¯£¬×ªÔØÇë×¢Ã÷³ö×ÔUnLinux.Com¼°×÷ÕßÃû * 

¡ù Ïà¹ØÁ´½Ó
 ¡¤ÉèÖö¯Ì¬dns  (2005-10-27 16:18:59)
 ¡¤ÊµÏÖ¶¯Ì¬IPµÄÓòÃû½âÎö  (2005-10-27 16:18:59)
 ¡¤´óÈÝÁ¿ÐéÄâÖ÷»úµÄ¶¯Ì¬ÅäÖà (2005-10-27 16:18:57)
 ¡¤¶¯Ì¬ÐéÄâÖ÷»úÅäÖ÷½·¨  (2005-10-27 16:18:57)
 ¡¤BIND ¸ß¼¶ÌØÐÔ£¨¶þ£©£­£­ ¶¯Ì¬¸üР (2005-10-27 16:18:52)
 ¡¤ÐéÄâ·þÎñÆ÷ʵÏÖ·½·¨(¶¯Ì¬¾ùºâ)  (2005-10-27 16:18:08)
 ¡¤apacheµÄ¾²Ì¬/¶¯Ì¬±àÒëÔÚapache+php+mysqlµÄÓ¦Óà (2005-10-27 16:18:05)
 ¡¤´´½¨ºÍʹÓÿ⣺¾²Ì¬¡¢¹²ÏíºÍ¶¯Ì¬  (2005-10-26 16:54:04)
 ¡¤LINUXϵͳÖж¯Ì¬Á´½Ó¿âµÄ´´½¨ÓëʹÓà (2005-10-26 16:54:00)
 ¡¤C/C++ ±àÒëÆ÷ºÍµ÷ÊÔÆ÷ÒÔ¼°¾²Ì¬¿â¡¢¶¯Ì¬¿âʹÓûã×Ü  (2005-10-26 16:53:56)

Copyright © 2005 UnLinux.Com All Rights Reserved