Ä¿ÇǴнº, ½Ã½ºÅÛ ¿£Áö´Ï¾îÀÇ ½°ÅÍ
  DNS ÁúÀÇ TimeOutÀÇ Áø½ÇÀº.. (2¹ø°) ÀÛ¼ºÀÏ : 2010/11/04 21:54
 
  • ±Û¾´ÀÌ : ÁÁÀºÁøÈ£ ( http://coffeenix.net/ )
  • Á¶È¸¼ö : 21598
     
    Á¦  ¸ñ : DNS ÁúÀÇ TimeOutÀÇ Áø½ÇÀº.. (2¹ø°)
    ÀÛ¼ºÀÚ : ÁÁÀºÁøÈ£(truefeel, http://coffeenix.net/ )
    ÀÛ¼ºÀÏ : 2010.11.4(¸ñ)

    ¹ü³ÃÀÌ´ÔÀÌ dig°ú nslookupÅøÀ» »ç¿ëÇÏ¿©, resolv.conf¿¡¼­ ÁöÁ¤ÇÑ DNS ¼­¹ö°¡ Á×¾úÀ» °æ¿ì timeout½Ã°£Àº ¾î¶»°Ô µÇ´ÂÁö Å×½ºÆ®¸¦ Çϼ̴Ù. Å×½ºÆ®ÇÑ ±ÛÀº 'DNS ÁúÀÇ TimeOutÀÇ Áø½ÇÀº..'( http://coffeenix.net/board_view.php?bd_code=1714 )¿¡ Á¤¸®µÇ¾î ÀÖ´Ù.
    ±× ÈÄ, Á¦°¡ Ãß°¡ ÀÓ¹«(?)¸¦ ³Ñ°Ü¹Þ¾Ò´Ù. ^^. ÀÌ ±ÛÀ» Àбâ Àü¿¡ ¹Ýµå½Ã ¹ü³ÃÀÌ´ÔÀÇ ±ÛÀ» ÀоîºÁ¾ß ÇÑ´Ù.


    ¡Ø À̹ÌÁö Ãâó : ±¸±Û 'domain lookup' À̹ÌÁö °Ë»ö


    1. dig, nsloookup¿¡¼­´Â ¿Ö timeoutÀÌ 1ÃÊÀΰ¡?

    resolv.conf¿¡ 2´ëÀÇ DNS¼­¹ö¸¦ ÁöÁ¤À» Çß´Ù°í °¡Á¤ÇÏÀÚ. ±×¸®°í, ±× Áß Ã¹¹ø° ¼­¹ö°¡ ÀÀ´äÀÌ ¾ø´Ù°í ÇÏÀÚ.

     
    nameserver 10.10.10.251   <-- ¹®Á¦. µµ¸ÞÀÎ lookup½Ã ù¹ø°·Î ¿äûÇÏ´Â DNS. Primary¶ó°í ÁöĪÇغ¸ÀÚ.
    nameserver 10.10.10.252   <-- Á¤»ó. Secondary.
     


    /usr/include/resolv.h¿¡¼­ µðÆúÆ® timeoutÀº 5ÃÊÀÌ´Ù.

     
    [ /usr/include/resolv.h ]
    # define MAXNS           3    /* max # name servers we'll track */      <-- µÚ¿¡¼­ ¼³¸íÇÏ°Ú´Ù.

    # define RES_TIMEOUT     5    /* min. seconds between retries */        <-- default timeout
    # define RES_MAXRETRY    5    /* only for resolv.conf/RES_OPTIONS */    <-- ÃÖ´ë retry °¡´É ¼ö
    # define RES_DFLRETRY    2    /* Default #/tries. */                    <-- default retry
     


    ±×·±µ¥, ¿Ö digÀ̳ª nslookupÀº Å×½ºÆ® °á°ú 1ÃÊ·Î ³ª¿ÔÀ»±î? bind³»ÀÇ À¯Æ¿¸®Æ¼ÀÎ dig, nslookupÀº resolv.hÀÇ ¼³Á¤°ªÀ» »ç¿ëÇÏÁö ¾Ê´Â´Ù. dig¼Ò½ºÀÇ dig.h ¸¦ ´ÙÀ½°ú °°ÀÌ Á¤ÀǵǾî ÀÖ´Ù. ÀÌ ¼öÄ¡°¡ ¹Ù·Î timeout¼³Á¤ °ª. nslookupµµ °°Àº header¸¦ »ç¿ëÇÑ´Ù.

     
    [ bind9 ¼Ò½º³» dig.h ]

    #define SERVER_TIMEOUT 1
     


    Áï, resolv.conf¿¡ ¼øÂ÷ÀûÀ¸·Î ³ª¿­µÈ ³×ÀÓ¼­¹ö¿¡¼­ ù°°¡ ÀÀ´äÀÌ ¾ø´Ù¸é 1ÃÊ°£ ÀÀ´äÀ» ±â´Ù¸°´Ù. ±× ÈÄ ´ÙÀ½ ¼­¹ö·Î ³Ñ±ä´Ù.
    ¸¸¾à 3´ë¸¦ ³ª¿­ÇßÀ» ¶§, ¾ÕÀÇ 2´ë°¡ ¹®Á¦¶ó¸é, 1ÃÊ + 1ÃÊ = ÃÑ 2ÃÊ timeout ÈÄ 3¹ø° ¼­¹ö·Î ¿äûÀ» ³Ñ±æ °ÍÀÌ´Ù.
    resolv.conf¿¡ ³ª¿­ °¡´ÉÇÑ ¼­¹ö ´ë¼ö´Â resolv.h¿¡¼­ MAXNS·Î Á¤ÀǵǾî ÀÖ´Ù. 3´ë. ±× ÀÌ»óÀÇ ¼³Á¤Àº ¹«½ÃµÈ´Ù.


    2. ¸¸¾à resolv.conf¿¡ ÁöÁ¤ÇÑ ¸ðµç ¼­¹ö°¡ ÀÀ´äÀÌ ¾ø´Ù¸é?

    resolv.conf¿¡ ³ª¿­ÇÑ ¸ðµç ¼­¹ö°¡ ÀÀ´äÀÌ ¾ø´Ù¸é dig.h³»ÀÇ UDP_TIMEOUT °ª µ¿¾È ÀÀ´ä´ë±â¸¦ ÇÑ ÈÄ retry¸¦ ÇÑ´Ù.

     
    [ bind9 ¼Ò½º³» dig.h ]

    /* Default UDP Timeout */
    #define UDP_TIMEOUT 5
     


    Á¤¸®ÇÏ¸é ´ÙÀ½°ú °°´Ù.

    1) resolv.conf¿¡ ³ª¿­µÈ ¼­¹ö°£ ¿äû ´ë±â´Â 1ÃÊ(SERVER_TIMEOUT)
    2) ³ª¿­µÈ ¸ðµç ¼­¹ö ¿äû ÈÄ retry½Ã ´ë±â´Â 5ÃÊ(UDP_TIMEOUT)

    À̸¦ resolv.conf¿¡ 1´ëºÎÅÍ 3´ë±îÁö ÁöÁ¤µÇ¾î ÀÖ°í, ¸ðµÎ ÀÀ´äÀÌ ¾øÀ» ¶§¸¦ °¡Á¤ÇÏÀÚ.

    1) resolv.conf¿¡ ÁöÁ¤ÇÑ ¼­¹ö°¡ 1´ëÀÏ ¶§

     
    5ÃÊ     + 5ÃÊ       + 5ÃÊ       = ÃÑ 15ÃÊ ¼Ò¿ä
    --------  ---------   ---------
    try 1¹ø + try 2¹ø   + try 3¹ø
     


    2) 2´ëÀÏ ¶§

     
    1ÃÊ+5ÃÊ + 1ÃÊ+5ÃÊ   + 1ÃÊ+5ÃÊ   = ÃÑ 18ÃÊ ¼Ò¿ä
    --------  ---------   ---------
    try 1¹ø + try 2¹ø   + try 3¹ø
     


    3) 3´ëÀÏ ¶§

     
    1ÃÊ+1ÃÊ+5ÃÊ + 1ÃÊ+1ÃÊ+5ÃÊ   + 1ÃÊ+1ÃÊ+5ÃÊ   = ÃÑ 21ÃÊ ¼Ò¿ä
    -----------   -------------   -------------
    try 1¹ø     + try 2¹ø       + try 3¹ø
     





    3. resolv.confÀÇ options »ç¿ë

    DNS¼­¹öÀÇ ÀÀ´ä ½Ã°£(options timeout:n)°ú retryȽ¼ö(options attempts:n)¸¦ /etc/resolv.conf¿¡ ÁöÁ¤ÇÒ ¼ö ÀÖ´Ù. timeoutÀ» 5ÃÊ -> 1ÃÊ·Î, retry¸¦ 2¹ø -> 3¹øÀ¸·Î º¯°æÇÑ ¿¹ÀÌ´Ù.

     
    [ /etc/resolv.conf ]

    options timeout:1 attempts:3
     


    ±×·¯³ª digÀ̳ª nslookup¿¡¼­´Â resolv.confÀÇ options ¼³Á¤À» »ç¿ëÇÏÁö ¾ÊÀ¸¹Ç·Î Àǹ̰¡ ¾ø´Ù. Áï, ÇÁ·Î±×·¥¿¡ µû¶ó(Á÷Á¢ °³¹ßÇÑ °Íµµ Æ÷ÇÔ) resolv.confÀ» »ç¿ëÇÒ ¼öµµ ÀÖ°í, ±×·¸Áö ¾ÊÀ» ¼öµµ ÀÖÀ¸´Ï resolv.conf ¼³Á¤¸¸ ¹Ï¾î¼­´Â ¾ÈµÈ´Ù.


    4. gethostbyname() ÇÔ¼ö, ping ÇÁ·Î±×·¥ Å×½ºÆ®

    gethostbyname()ÇÔ¼ö¸¦ »ç¿ëÇÏ´Â CÇÁ·Î±×·¥À̶ó¸é Áö±Ý±îÁö ¼³¸íÇÑ resolv.h¿Í resolv.confÀ» µû¸£°Ô µÈ´Ù. ´ëÇ¥ÀûÀÎ °ÍÀÌ pingÀÏ °ÍÀÌ´Ù.

    °£´ÜÇÑ ¿¹¸¦ µé¾îº¸ÀÚ. resolv.conf´Â ´ÙÀ½°ú °°´Ù.

     
    [ /etc/resolv.conf ]

    search coffeenix.net
    nameserver 10.10.10.251
    nameserver 10.10.10.252
     


    - resolv.conf°¡ ¼³Á¤µÈ ¼­¹ö´Â 10.10.10.123 À̶ó°í ÇÏÀÚ.
    - gethostbyname()ÇÔ¼ö·Î google.comÀ» lookup ÇÑ °æ¿ì´Ù.

    resolv.conf¿¡ ÁöÁ¤ÇÑ DNS¼­¹ö¿¡¼­ ICMPÀÀ´äÀ» ¹ÞÀ» ¼ö ÀÖ´À³Ä ¾ø´À³Ä¿¡ µû¶ó¼­ ´ë±â½Ã°£(timeout½Ã°£)Àº ´Þ¶óÁö°Ô µÈ´Ù.

    1) ICMP udp port domain unreachable ÀÀ´äÀÌ ¿Ã ¶§

    ´ÙÀ½Àº resolv.conf¿¡ ÁöÁ¤ÇÑ 2´ë ¸ðµÎ°¡ DNSÀÀ´äÀ» ¸®ÅÏÇØÁÖÁö ¸øÇßÀ» ¶§ÀÇ ÆÐŶÀ» °£´ÜÈ÷ Ç¥ÇöÇÑ °ÍÀÌ´Ù.

     
    ---------  -------------   ------------------
    ½Ã°£       client            DNS  ¼­¹ö
    ---------  -------------   ------------------
    21:20:46   10.10.10.123  > 10.10.10.251.domain A? google.com.   <-- 1¹ø° ½Ãµµ : 1¹ø° ¼­¹ö·Î ¿äû
    21:20:46   10.10.10.123  < 10.10.10.251 ICMP 10.10.10.251 udp port domain unreachable <-- ICMPÀÀ´äÀ» ¹ÞÀ½
    21:20:46   10.10.10.123  > 10.10.10.252.domain A? google.com.   <-- 1¹ø° ½Ãµµ : 2¹ø° ¼­¹ö·Î ¿äû
    21:20:46   10.10.10.123  < 10.10.10.252 ICMP 10.10.10.252 udp port domain unreachable
    21:20:46   10.10.10.123  > 10.10.10.251.domain A? google.com.   <-- 2¹ø° ½Ãµµ : 1¹ø° ¼­¹ö·Î ¿äû
    21:20:46   10.10.10.123  < 10.10.10.251 ICMP 10.10.10.251 udp port domain unreachable
    21:20:46   10.10.10.123  > 10.10.10.252.domain A? google.com.   <-- 2¹ø° ½Ãµµ : 2¹ø° ¼­¹ö·Î ¿äû
    21:20:46   10.10.10.123  < 10.10.10.252 ICMP 10.10.10.252 udp port domain unreachable

    21:20:46   10.10.10.123  > 10.10.10.251.domain A? google.com.coffeenix.net.
    21:20:46   10.10.10.123  < 10.10.10.251 ICMP 10.10.10.251 udp port domain unreachable
    21:20:46   10.10.10.123  > 10.10.10.252.domain A? google.com.coffeenix.net.
    21:20:46   10.10.10.123  < 10.10.10.252 ICMP 10.10.10.252 udp port domain unreachable
    21:20:46   10.10.10.123  > 10.10.10.251.domain A? google.com.coffeenix.net.
    21:20:46   10.10.10.123  < 10.10.10.251 ICMP 10.10.10.251 udp port domain unreachable
    21:20:46   10.10.10.123  > 10.10.10.252.domain A? google.com.coffeenix.net.
    21:20:46   10.10.10.123  < 10.10.10.252 ICMP 10.10.10.252 udp port domain unreachable
     




    10.10.10.251·Î google.comÀ» ¿äûÇß´Ù. ±×·±µ¥, DNS ¼­¹ö´Â µ¿ÀÛÇÏ°í ÀÖÁö ¾Ê¾Ò´Ù. ´ë½Å DNS°¡ ¿î¿µÁßÀÌÁö ¾Ê´Ù´Â ¸íÈ®ÇÑ ICMPÀÀ´äÀ» ¹Þ¾Ò´Ù. µû¶ó¼­ ´ë±â½Ã°£(timeout)ÀÌ ÇÊ¿ä¾øÀÌ ¹Ù·Î ´ÙÀ½ ¼­¹öÀÎ 10.10.10.252¸¦ ¿äûÇß´Ù. ÀÌ·¸°Ô 2¹øÀÇ retry°úÁ¤À» °ÅÃÆ´Ù.
    ±× ÈÄ resolv.conf¿¡ search·Î ¼³Á¤µÈ µµ¸ÞÀÎÀ» µ¡ºÙ¿©¼­ google.com.coffeenix.net¸¦ ã´Â °úÁ¤À» µ¿ÀÏÇÏ°Ô ¹Ýº¹ÇÑ´Ù.

    ¿©±â¼­ ¾Ë ¼ö ÀÖ´Â °ÍÀº ´ÙÀ½°ú °°´Ù.
    ¨ç ICMPÀÀ´äÀÌ ¿Â´Ù¸é, timeout¾øÀÌ ¹Ù·Î ´ÙÀ½ ¼­¹ö·Î ¿äûÀ» ÇÑ´Ù.
    ¨è searchÀÇ µµ¸ÞÀÎÀ» Ãß°¡·Î µ¡ºÙ¿©¼­ ¿äûÀ» ÇÑ´Ù.
    ¨é resolv.h¿¡ ¼³Á¤µÈ retry¸¦ µû¸¥´Ù.


    2) ICMP ÀÀ´äÀÌ ¾øÀ» ¶§

     
    ---------  -------------   ------------------
    ½Ã°£       client            DNS  ¼­¹ö
    ---------  -------------   ------------------
    21:21:18   10.10.10.123  > 10.10.10.251.domain A? google.com.   <-- 1¹ø° ½Ãµµ : 1¹ø° ¼­¹ö·Î ¿äû
    21:21:23   10.10.10.123  > 10.10.10.252.domain A? google.com.   <-- 1¹ø° ½Ãµµ : 2¹ø° ¼­¹ö·Î ¿äû (À§¿Í 5ÃÊ°£°Ý)
    21:21:28   10.10.10.123  > 10.10.10.251.domain A? google.com.   <-- 2¹ø° ½Ãµµ : 1¹ø° ¼­¹ö·Î ¿äû (À§¿Í 5ÃÊ°£°Ý)
    21:21:33   10.10.10.123  > 10.10.10.252.domain A? google.com.   <-- 2¹ø° ½Ãµµ : 2¹ø° ¼­¹ö·Î ¿äû (À§¿Í 5ÃÊ°£°Ý)

    21:21:38   10.10.10.123  > 10.10.10.251.domain A? google.com.coffeenix.net.
    21:21:43   10.10.10.123  > 10.10.10.252.domain A? google.com.coffeenix.net.
    21:21:48   10.10.10.123  > 10.10.10.251.domain A? google.com.coffeenix.net.
    21:21:53   10.10.10.123  > 10.10.10.252.domain A? google.com.coffeenix.net.
     


    ICMPÀÀ´äÀÌ ¾øÀ¸´Ï timeoutµ¿¾È ´ë±âÇÏ´Ù°¡ ´ÙÀ½ ¼­¹ö·Î ¿äûÀ» Çß´Ù. ³ª¸ÓÁö´Â ¾Õ¿¡¼­ ¼³¸íÇÑ °Í°ú °°Àº °úÁ¤ÀÌ´Ù.



    5. °á·Ð : È¿°úÀûÀÎ resolv.conf ¼³Á¤

    resolv.conf¿¡ 2°³ IPÀÌ»óÀÇ nameserver¸¦ ÁöÁ¤ÇßÀ» °æ¿ì¸¦ °¡Á¤ÇÏ¿©, °á·ÐÀ» ³»º¸°Ú´Ù.

    ¸¸¾à resolv.conf¿¡ ÁöÁ¤ÇÑ Ã¹¹ø° ³×ÀÓ¼­¹ö(¶Ç´Â ³×ÀÓ¼­¹ö VIP) ÀÚü°¡ Á״´ٸé ICMP ÀÀ´äÀ» ¸ø¹ÞÀ» °ÍÀÌ´Ù. µû¶ó¼­ ÀÀ´ä½Ã°£À» ÁÙÀÌ°íÀÚ ÇÑ´Ù¸é resolv.conf¿¡¼­ timeout½Ã°£À» ÁÙ¿©ÁÖ´Â°Ô ´õ ³ªÀº ´ëºñÃ¥ÀÌ µÉ °ÍÀÌ´Ù.

     
    options timeout:1 attempts:2 ¶Ç´Â
    options timeout:1 attempts:1
     


    ÇÏÁö¸¸ resolv.conf ¼³Á¤À» »ç¿ëÇÏÁö ¾Ê´Â ÇÁ·Î±×·¥µµ ÀÖ´Ù. ¸ðµç°Ô, resolv.conf ¼³Á¤´ë·Î µÉ °ÍÀ̶ó´Â ¹ÏÀ½Àº Àý´ë ±Ý¹°.


    Ä¿ÇǴнº, ½Ã½ºÅÛ ¿£Áö´Ï¾îÀÇ ½°ÅÍ / URL : http://coffeenix.net/board_view.php?bd_code=1715