¤³¤³¤Ë½ñ¤¤¤Æ¤¢¤ë¾ðÊó¤Ï¥¯¥½¸Å¤¤¤Ç¤¹¡£¡ÖÀΤΠNSD ¤Ï¤³¤¦¤À¤Ã¤¿¤ó¤À¡×¤È²û¤·¤à°Ê³°¤ÎÌò¤Ë¤ÏΩ¤Á¤Þ¤»¤ó¡£NSD ËܲȤò¸«¤Þ¤·¤ç¤¦¡£
maya.st ¤Î¾ðÊó¤ò´ÉÍý¤·¤Æ¤¤¤ë DNS ¤Ï BIND ¤ä djbdns ¤Ç¤Ê¤¯¡¢NSD ¤ÇÆ°¤¤¤Æ¤ª¤ê¤Þ¤¹¡£NSD ¤Ê¤ó¤Æ¤¼¤ó¤¼¤óÃΤé¤Ê¤¤¡¢¤¢¤ë¤¤¤ÏÃΤäƤ¤¤Æ¤â¤»¤¤¤¼¤¤Ì¾Á°¤À¤±¡¢¤È¤¤¤¦¿Í¤¬¸½¾õ¤Ç¤Ï¤Û¤È¤ó¤É¤À¤È»×¤ï¤ì¤ë¤Î¤Ç¡¢¤Á¤ç¤Ã¤È¤·¤¿¾Ò²ð¤Ê¤É¡£
DNS ¥³¥ó¥Æ¥ó¥Ä¥µ¡¼¥Ð¡£¤É¤³¤ÎÇϤιü¤È¤âÃΤé¤Ì²ø¤·¤²¤Ê¥×¥í¥À¥¯¥È¤Ç¤Ï¤Ê¤¯¡¢13¸Ä¤Î DNS ¥ë¡¼¥È¥µ¡¼¥Ð¤Î°ìÉô({h,k}.root-servers.net)¤òô¤Ã¤Æ¤¤¤ë¤È¤¤¤¦½½Ê¬¤Ê¼ÂÀÓ¤ò»ý¤Ã¤Æ¤¤¤ë¡£³«È¯¸µ¤Ï¥ª¥é¥ó¥À¤Î NLnetLabs ¤È¤¤¤¦¤È¤³¤í¡£
¥á¥ê¥Ã¥È¤Ï¡¢Â®¤¤¡¢·Ú¤¤¡¢´Êñ¡£UNIX ·Ï OS ¤Ç¤Ï BIND8 ¤¬¹â®¤À¤È¸À¤ï¤ì¤Æ¤¤¤ë¤¬¡¢¤½¤Î¿ôÇܤΥѥե©¡¼¥Þ¥ó¥¹¤¬½Ð¤ë¤é¤·¤¤¡£ÀßÄê¥Õ¥¡¥¤¥ë¤â¤È¤Æ¤â´Êñ¤Ç¡¢¤¢¤é¤«¤¸¤á DNS ¤Ë¤Ä¤¤¤Æ¤ÎÃ챤ò¤¢¤ëÄøÅÙ»ý¤Ã¤Æ¤¤¤ë¤Î¤Ê¤é¤Ð¡¢¿·¤¿¤ËÊÙ¶¯¤¬É¬Íפʤ³¤È¤Ï¤Û¤È¤ó¤É¥¼¥í¡£
µÕ¤Ë¡¢É¬Íפʵ¡Ç½¤Î¤ß¤Ë¥¿¡¼¥²¥Ã¥È¤ò¹Ê¤Ã¤¿ºî¤ê¤Ë¤Ê¤Ã¤Æ¤¤¤Æ¡¢¤¢¤Þ¤ê¶Å¤Ã¤¿¤³¤È¤Ï¤Ç¤¤Ê¤¤¤³¤È¤¬¥Ç¥á¥ê¥Ã¥È¤È¤¤¤¨¤è¤¦¡£¤Þ¤º¡¢BIND ¤ä djbdns ¤È¤Ï°Û¤Ê¤ê¡¢¥³¥ó¥Æ¥ó¥Ä¥µ¡¼¥ÐÀìÍѤǡ¢¥¥ã¥Ã¥·¥å¥µ¡¼¥Ð¤È¤·¤Æ¤Ï»È¤¨¤Ê¤¤¡£¤½¤Î¾¡¢¥é¥¦¥ó¥É¥í¥Ó¥ó¤¬¤Ç¤¤Ê¤¤¡Ê¾ï¤ËƱ¤¸½çÈ֤DZþÅú¤òÊÖ¤¹¡Ë¡¢IXFR ¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Ê¤¤¡¢AXFR °Ê³°¤Î¥¢¥¯¥»¥¹À©¸Â¤¬¤Ç¤¤Ê¤¤¡¢¥À¥¤¥Ê¥ß¥Ã¥¯ DNS µ¡Ç½¤¬¤Ê¤¤¡¢BIND ¤Î view ÁêÅö¤Îµ¡Ç½¤¬¤Ê¤¤¡¢¥¯¥¨¥ê¡¼¤Î¥í¥°¤ò¼è¤ì¤Ê¤¤¤Ê¤É¡¢¤Ç¤¤Ê¤¤¤³¤È¤Ï¤¿¤¯¤µ¤ó¤¢¤ë¡£¤·¤«¤·¡¢DNS ¤Î´ðËÜŪ¤Ê¥µ¡¼¥Ó¥¹¤Ë¤Ä¤¤¤Æ¤Ï½½Ê¬°Ê¾å¤ÎÀǽ¤Ç¼Â¸½¤Ç¤¤ë¤Î¤Ç¡¢¤½¤ó¤Ê¤ËÈá´Ñ¤·¤¿¤â¤Î¤Ç¤Ï¤Ê¤¤¡£
¤½¤Î¾¤ÎÆÃħ¤È¤·¤Æ¤Ï¡¢
¤Ê¤É¤¬µó¤²¤é¤ì¤ë¡£¤³¤Î¤¢¤¿¤ê¤Î¤³¤È¤Ï¥¢¡¼¥«¥¤¥Ö¤Ë´Þ¤Þ¤ì¤ë README ¤ä REQUIREMENT ¤Ë¾Ü¤·¤¯½ñ¤«¤ì¤Æ¤¤¤ë¡£
¤È¤¤¤Ã¤Æ¤â¡¢¥¤¥ó¥¹¥È¡¼¥ëºî¶È¤Ï¤Æ¤¤È¡¼¤Ê°ú¿ô¤È¤È¤â¤Ë configure; make; make install ¤¹¤ë¤À¤±¤Ê¤Î¤Ç¾ÜºÙ¤Ï³ä°¦¡£2.3.1 ¤Ç¤Ï°Ê²¼¤Î¤â¤Î¡Ê¤È man ¥Ú¡¼¥¸¡Ë¤¬¥¤¥ó¥¹¥È¡¼¥ë¤µ¤ì¤ë¡£
¤³¤Î¤¦¤Á¡¢nsd-xfer ¤È nsd-notify ¤Ï¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Î NSD ¤Ë¤Ï¸ºß¤·¤Æ¤¤¤Ê¤«¤Ã¤¿¡£°ÊÁ°¤Ï¥¾¡¼¥óžÁ÷¤Ï¼«ÎϤǤϤǤ¤º¡¢BIND8 ¤Î named-xfer ¤ò¼Ú¤ê¤Æ¤¤¤¿¤·¡¢NOTIFY ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡Ê¸½¹Ô¥Ð¡¼¥¸¥ç¥ó¤Ç¤â NOTIFY ¤ÏÄÌÃΤ¹¤ë¤À¤±¤Ç¡¢NOTIFY ¤ò¼õ¤±¼è¤Ã¤Æ AXFR/IXFR ¤òÈô¤Ð¤¹¡¢¤È¤¤¤¦¤³¤È¤Ï¤Ç¤¤Ê¤¤¡Ë¡£
À©¸æ¥×¥í¥°¥é¥à¤Ç¤¢¤ë nsdc ¤Ï¡¢Ãæ¿È¤Ï¤¿¤À¤Î¥·¥§¥ë¥¹¥¯¥ê¥×¥È¤Ç¤¢¤ë¡£nsd ¤ä zonec ¤ä¤é¤òɬÍפ˱þ¤¸¤Æ¸Æ¤Ó½Ð¤·¤Æ¤¤¤ë¤À¤±¤Ç¡¢nsdc ¤ò»È¤ï¤Ê¤¤¤ÈÉÔ²Äǽ¤ÊÁàºî¤¬¤¢¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£nsdc ¤Ç¤Ç¤¤Ê¤¤¤³¤È¤Ç¤â¡¢³Æ¥Ä¡¼¥ë¤òñÆȤǸƤӽФ·¤Æ¤ä¤ì¤Ð¼Â¸½¤Ç¤¤ë¤³¤È¤â¤¢¤ë¡£
ÀßÄê¥Õ¥¡¥¤¥ë¤Ï nsdc.conf ¤È nsd.zones ¤Î¤Õ¤¿¤Ä¡£Á°¼Ô¤Ï nsdc ¤¬»È¤¦¤â¤Î¤Ç¡¢¤µ¤Þ¤¶¤Þ¤Ê°ú¿ô¤òÍ¿¤¨¤Æ nsdc ¤òµ¯Æ°¤·¤¿¤È¤¤Î¥ª¥×¥·¥ç¥ó¤òµ½Ò¤¹¤ë¡£¸å¼Ô¤Ï¥µ¡¼¥Ó¥¹¤¹¤ë¥¾¡¼¥ó¤Ë´Ø¤¹¤ëÀßÄê¤Ç¡¢nsdc ¤È zonec ¤Ç¶¦ÍѤ¹¤ë¡£nsd ËÜÂΤÎÀßÄê¥Õ¥¡¥¤¥ë¤Ï¸ºß¤·¤Ê¤¤¡£ÀßÄê¥Õ¥¡¥¤¥ë¤Î½ñ¤Êý¤È¤«¤Ï³ä°¦¤¹¤ë¤¬¡¢BIND ¤Î¤è¤¦¤Ë¤¤¤¯¤Ä¤â¤Î¥ª¥×¥·¥ç¥ó¤¬¤¢¤Ã¤¿¤ê¤Ï¤·¤Ê¤¤¡£¶Ë¤á¤Æ´Êñ¤Ç¤¢¤ë¡£
¤³¤ì°Ê³°¤Ë¤â¤Á¤í¤ó¥¾¡¼¥ó¥Õ¥¡¥¤¥ë¤¬É¬Íפˤʤ롣´ðËÜŪ¤Ë BIND ¸ß´¹¡£¤È¤¤¤¦¤«¡¢¤¢¤ì¤Ï RFC1035 ¤Çµ¬³Ê²½¤µ¤ì¤Æ¤¤¤ë·Á¼°¤é¤·¤¤¡£¤Ê¤Î¤Ç¡¢BIND ¤«¤é°Ü¹Ô¤¹¤ë¤Ê¤é¤Ð¥¾¡¼¥ó¥Õ¥¡¥¤¥ë¤ò¥³¥Ô¡¼¤¹¤ë¤À¤±¤Ç¤¤¤¤¡£¤¿¤À¡¢BIND ¤Ï¤³¤Î·Á¼°¤Ë¤¤¤¯¤Ä¤«³ÈÄ¥¤ò²Ã¤¨¤Æ¤¤¤Æ¡¢¤½¤ÎÆȼ«³ÈÄ¥¤ò»È¤Ã¤Æ¤¤¤ë¥¾¡¼¥ó¥Õ¥¡¥¤¥ë¤Ï¤½¤Î¤Þ¤Þ»È¤¨¤Ê¤¤¡£¶ñÂÎŪ¤Ë¤ÏÏ¢ÈÖ¤òÀ¸À®¤¹¤ë¤Î¤Ë»È¤ï¤ì¤ë $GENERATE ¥Þ¥¯¥í¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¡£
¤Ê¤ª¡¢FreeBSD ¤Ç ports ¤«¤é¥¤¥ó¥¹¥È¡¼¥ë¤·¤¿¾ì¹ç¡¢µ¯Æ°¥¹¥¯¥ê¥×¥È¤È¤·¤Æ /usr/local/etc/rc.d/nsd.sh ¤¬ºîÀ®¤µ¤ì¤ë¤¬¡¢¤³¤ì¤Ï nsdc.conf ¤ò̵»ë¤¹¤ë¡£nsd.sh ¤òºï½ü¤·¤Æ nsdc ¤Ø¤Î¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ÇÃÖ¤Âؤ¨¤Æ¤·¤Þ¤Ã¤¿Êý¤¬¤¤¤¤¤À¤í¤¦¡£
nsdc ¤Î¥µ¥Ö¥³¥Þ¥ó¥É¤Ç¤â½ñ¤¤¤Æ¤ª¤¯¤«¤Í¡£
nsd ¤òµ¯Æ°/½ªÎ»/ºÆµ¯Æ°¤¹¤ë¡£µ¯Æ°¥ª¥×¥·¥ç¥ó¤Ï nsdc.conf ¤Ë flags="..." ¤È¤·¤Æ½ñ¤¯¡£nsd ¼«ÂΤÎÀßÄê¥Õ¥¡¥¤¥ë¤Ï¸ºß¤·¤Ê¤¤¡£¤¹¤Ê¤ï¤Á¡¢nsd ¤Ïµ¯Æ°»þ¤Î°ú¿ô¤À¤±¤ÇÆ°ºî¤¬¤¹¤Ù¤Æµ½Ò¤Ç¤¤ë¤Û¤Éñ½ã¤Ê¤Î¤À¡£
rebuild ¤Ï¥¾¡¼¥ó¥Õ¥¡¥¤¥ë¤ò¥Æ¥¥¹¥È¤«¤é¥Ð¥¤¥Ê¥ê¤ËÊÑ´¹¤¹¤ë¡£reload ¤Ï¥¾¡¼¥ó¥Õ¥¡¥¤¥ë¤òÆɤߤʤª¤·¤Æ NOTIFY ¤òÁ÷¤ë¡£¤É¤³¤«¤Î¥¾¡¼¥ó¤ò½¤Àµ¤·¤¿¾ì¹ç¤Ï nsdc rebuild && nsdc reload ¤È nsdc ¤ò2²ó¤ò¼Â¹Ô¤·¤ÆÊѹ¹¤òÈ¿±Ç¤µ¤»¤ë¡£notify ¤Ï nsd.zones ¤Ç NOTIFY ¤òÁ÷¤ë¤È¤Ê¤Ã¤Æ¤¤¤ë¥µ¡¼¥Ð¤¹¤Ù¤Æ¤ËÄÌÃΤ¹¤ë¡Êreload ¤·¤¿¤é¼«Æ°¤ÇÁ÷¤é¤ì¤ë¤Î¤ÇÄ̾ï¤ÏÉÔÍסˡ£rebuild ¤È reload ¤ò1²ó¤Î¥³¥Þ¥ó¥É¤ÇºÑ¤Þ¤¹¼êÃʤϤʤ¤¤·¡¢¹¹¿·¤¬¤¢¤Ã¤¿¥¾¡¼¥ó¤Î slave ¥µ¡¼¥Ð¤ËÂФ·¤Æ¤Î¤ß NOTIFY ¤òÁ÷¤ë¡¢¤È¤¤¤Ã¤¿¤³¤È¤Ï¤Ç¤¤Ê¤¤¤¬¡¢nsdc ¤Ï¤¿¤À¤Î¥·¥§¥ë¥¹¥¯¥ê¥×¥È¤Ê¤Î¤Ç¡¢¤³¤ì¤¬ÉÔÊؤ˻פ¦¤Ê¤é¤Ð¡¢¼«Ê¬¤Ç¤½¤ÎÉôʬ¤ò½ñ¤´¹¤¨¤ì¤Ð¤è¤¤¡£
¼«Ê¬¤¬ slave ¤È¤Ê¤Ã¤Æ¤¤¤ë¥¾¡¼¥ó¤Î master DNS ¤Î SOA ¤òÄ´¤Ù¤Æ¡¢¹¹¿·¤µ¤ì¤Æ¤¤¤ì¤Ð master ¤«¤é¥¾¡¼¥ó¤òžÁ÷¤·¡¢rebuid¡¢reload ¤¹¤ë¡£¤ª¤½¤é¤¯¤Ï cron ¤Ë»Å¹þ¤à¤³¤È¤Ë¤Ê¤ë¤À¤í¤¦¡£
BIND ¤È¤Ï°Û¤Ê¤ê¡¢SOA ¥ì¥³¡¼¥É¤Î¥Ñ¥é¥á¡¼¥¿¤ò¸«¤Æ»þ´Ö¤¬Í褿¤é¾¡¼ê¤Ë¥¾¡¼¥óžÁ÷¤·¤¿¤ê¤¹¤ë¤è¤¦¤Ë¤Ï¤Ê¤Ã¤Æ¤¤¤Ê¤¤¡£´°Á´¤Ë̵»ë¤¹¤ë¡£¤Þ¤¿¡¢NOTIFY ¤òÁ÷¤ë¤³¤È¤Ï¤Ç¤¤ë¤¬¡¢NOTIFY ¤¬ÆϤ¤¤¿¤«¤é¤È¤¤¤Ã¤Æ¼«Æ°¤Ç¥¾¡¼¥ó¤ò¼è¤ê¤Ë¤¤¤Ã¤¿¤ê¤â¤·¤Ê¤¤¡Êsyslog ¤Ë¤ÏºÜ¤ë¡Ë¡£±¿ÍѼԤ¬»ØÄꤷ¤¿¥¿¥¤¥ß¥ó¥°¤Ç¤Î¤ß¥¾¡¼¥óžÁ÷¤µ¤ì¤ë¡£SOA ¥ì¥³¡¼¥É¤Î refresh ´Ö³Ö¤òÃé¼Â¤Ë¼é¤ê¤¿¤¤¤Ê¤é¤Ð¡¢¤½¤Î¥¿¥¤¥ß¥ó¥°¤ª¤¤Ë½èÍý¤ò¤ª¤³¤Ê¤¦¤è¤¦¤Ê»ÅÁȤߤò¼«Ê¬¤Ç½ñ¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£NOTIFY ¤ò¼õ¤±¤¿¤é¼«Æ°¤Ç AXFR ¤·¤¿¤¤¤Ê¤é¤Ð¡¢¤½¤¦¤¤¤¦»ÅÁȤߤò¼«Ê¬¤Ç½ñ¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£
¤³¤Î IP ¥¢¥É¥ì¥¹¤«¤é¤Î query ¤ò̵»ë¤¹¤ë¤È¤«¡¢BIND ¤Î view ¤Î¤è¤¦¤ÊÌ䤤¹ç¤ï¤»¸µ¤Ë¤è¤Ã¤Æ±þÅú¤òÊѤ¨¤ë¤è¤¦¤Êµ¡Ç½¤Ï nsd ¤Ë¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£Í£°ì¡¢AXFR¡Ê¥¾¡¼¥óžÁ÷¡Ë¤ËÂФ¹¤ë¥¢¥¯¥»¥¹À©¸æ¤Ï²Äǽ¤À¤¬¡¢¤³¤ì¤â nsd ËÜÂΤǤϤʤ¯¡¢tcp_wrapper ¤Ç¼Â¸½¤·¤Æ¤¤¤ë¡£¤Ä¤Þ¤ê¡¢¥¾¡¼¥óžÁ÷¤òµö²Ä¤¹¤ë¥Û¥¹¥È¤Ï¤ª¤Ê¤¸¤ß /etc/hosts.allow ¤Ë½ñ¤¯¤³¤È¤Ë¤Ê¤ë¡£example.jp ¥¾¡¼¥ó¤ÎžÁ÷¤ò 192.0.2.100 ¤«¤éµö²Ä¡¢¤¹¤Ù¤Æ¤Î¥¾¡¼¥ó¤ò 192.0.2.200 ¤«¤éµö²Ä¤·¡¢¤½¤ì°Ê³°¤Ï¤¹¤Ù¤ÆµñÈݤ¹¤ë¡¢¤È¤¤¤¦¾ì¹ç¤Ï hosts.allow ¤Ë¼¡¤Î¤è¤¦¤Ë½ñ¤¯¡£
axfr : 192.0.2.200 : allow axfr-example.jp. : 192.0.2.100 : allow ALL : ALL : deny
hosts.allow ¤ò½¤Àµ¤·¤Æ¤âºÆµ¯Æ°¤Ê¤É¤ÏÉÔÍס£½ñ¤´¹¤¨¤¿½Ö´Ö¤«¤é͸ú¤Ë¤Ê¤ë¡£
¸½¾õ¤³¤Á¤é¤ÇɬÍפʵ¡Ç½¤Ë¤Ä¤¤¤Æ¤Ï´°Á´¤Ë¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤·¡¢¼è¤ê°·¤¤¤Î´Êñ¤µ¤ä·Ú¤µ¤Ê¤É¥á¥ê¥Ã¥È¤Ï¿¤¯ÉÔËþ¤Ï¤Þ¤Ã¤¿¤¯¤Ê¤¤¡£
¤¿¤À¡¢¸½¾õ¤Ç¤Ï¤Þ¤Ã¤¿¤¯ÉÔËþ¤Ï¤Ê¤¤¤±¤ì¤É¡¢º£¤ä¤Ã¤Æ¤Ê¤¤¤³¤È¤ò¾Íè¤ä¤í¤¦¤È¤·¤¿¤È¤¤Ëº¤¤ë¤³¤È¤¬¤¢¤ë¤«¤â¤·¤ì¤Ê¤¤¡£»×¤¤¤Ä¤¯¤Î¤Ï°Ê²¼¤Î2ÅÀ¡£
¥é¥¦¥ó¥É¥í¥Ó¥ó¤Ï¥³¥ó¥Æ¥ó¥Ä¥µ¡¼¥Ð¤ÇÂбþ¤·¤Æ¤¤¤Ê¤¯¤Æ¤â¡¢¥¥ã¥Ã¥·¥å¥µ¡¼¥Ð¤¬¥é¥¦¥ó¥É¥í¥Ó¥ó¤·¤Æ¤¯¤ì¤ë¤Î¤ÇËÜÍè¤ÏɬÍפϤʤ¤¡£¤¿¤À¤·¡¢¥é¥¦¥ó¥É¥í¥Ó¥ó¤·¤Ê¤¤¥¥ã¥Ã¥·¥å DNS¡ÊBIND ¤Ç rrset-order { order fixed; }; ¤ÈÀßÄꤷ¤¿¤È¤¤Ê¤É¡Ë¤â¤¢¤ë¤Î¤Ç¤¤¤Á¤ª¤¦Ãí°Õ¤ÏɬÍפǤ¢¤ë¡£¸å¼Ô¤Ï±¿ÍѤǥ«¥Ð¡¼¤Ç¤¤ë¡Ê³°Éô¥Ä¡¼¥ë¤òºîÀ®¤¹¤ë¤³¤È¤Ç¼Â¸½²Äǽ¤Ê¤Ï¤º¡Ë¤Î¤Ç¤½¤ì¤Û¤ÉÌäÂê¤Ê¤¤¤È»×¤¦¤¬¡¢µ¤¤Ë¤Ê¤ë¿Í¤Ï¤ä¤á¤Æ¤ª¤¤¤¿Êý¤¬¤¤¤¤¤«¤â¤·¤ì¤Ê¤¤¡£¤È¤Ï¤¤¤¨¡¢BIND8 ¤Ï¥»¥¥å¥ê¥Æ¥£¤¬¿´ÇÛ¡¢BIND9 ¤Ï¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤¬½Ð¤Ê¤¤¡¢djbdns ¤ÏÊÑÂÖŪ¤Ç¥¤¥ä¡¢¤È¤¤¤¦¤è¤¦¤Ê¿Í¤Ë¤È¤Ã¤Æ¤Ï¡¢NSD ¤ÏÈó¾ï¤Ë¤è¤¤ÁªÂò»è¤Ë¤Ê¤ë¤À¤í¤¦¡£
¤Û¤È¤ó¤É PDF¡£