QOS - DNS ¼­ºñ½º QOS ÃøÁ¤
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®
ÇöÀçÀ§Ä¡ : ¹Ì´Ï»çÀÌÆ®>QOS>Service>DNS



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

È£½ºÆÃÀ» ¹Þ´Â ¼öÁØÀÌ ¾Æ´Ñ, ±â¾÷¼öÁØ¿¡¼­ÀÇ À¥¼­ºñ½º¶ó¸é º°µµÀÇ DNS ¼­¹ö¸¦ ÇÊ¿ä·Î ÇÒ °ÍÀÌ´Ù. DNS´Â Domain ÁÖ¼Ò¿¡ ´ëÇÑ IP Address¸¦ µÇµ¹·ÁÁÖ´Â ÀÏÀ» ÇϹǷÎ, ¸¸¾à DNS ¼­¹ö°¡ Á×¾î ¹ö¸°´Ù¸é ¼­ºñ½º°¡ Á¤Áö »óŰ¡ µÇ¾î ¹ö¸± °ÍÀÌ´Ù. ´Ü¼øÈ÷ Á×´Â °Í »Ó¸¸ ¾Æ´Ï¶ó ÀÀ´ä½Ã°£ÀÌ ´À·ÁÁö´Â °æ¿ìµµ ¹®Á¦°¡ µÉ °ÍÀÌ´Ù. DNS ¼­ºñ½º´Â DOS, DDOS °ø°Ý¿¡ ³ëÃâµÇ´Â °æ¿ì°¡ ¸¹À¸¹Ç·Î ƯÈ÷ ÁÖÀÇÇØ¼­ °ü¸®ÇؾßÇÒ Çʿ䰡 ÀÖ´Ù.

nslookup ÀÌ¿ë

nslookup(8)ÀÇ ÀÀ´ä¼Óµµ¸¦ °è»êÇÏ´Â ¹æ½ÄÀÌ´Ù.
# nslookup google.co.kr dns.server.name 
Server:         www.joinc.co.kr 
Address:        218.234.19.87#53 
 
Non-authoritative answer: 
Name:   google.co.kr 
Address: 72.14.207.104 
Name:   google.co.kr 
Address: 72.14.235.104 
Name:   google.co.kr 
Address: 72.14.203.104 
 

¸¸¾à ½ÇÆÐÇÑ´Ù¸é, ´ÙÀ½°ú °°Àº °á°ú°¡ ³ª¿Â´Ù. dns.server.name ¿¡ ¹®Á¦°¡ ÀÖÀ½À» ¾Ë ¼ö ÀÖ´Ù.
# nslookup google.co.kr dns.server.name 
;; connection timed out; no servers could be reached 
 

½Ã°£ÃøÁ¤Àº time(1)À» ÀÌ¿ëÇÒ °æ¿ì ½©½ºÅ©¸³Æ® ¸¸À¸·Îµµ ÃøÁ¤ °¡´ÉÇÒ °ÍÀÌ´Ù. C¸¦ ÀÌ¿ëÇÑ´Ù¸é, popen(3)À» ÅëÇØ¼­ ½ÇÇà½ÃŲ´ÙÀ½ gettimeofday(2)¸¦ ÀÌ¿ëÇØ¼­ Á¾·áµÉ¶§±îÁöÀÇ ½Ã°£À» ÃøÁ¤ÇÏ¸é µÈ´Ù. ÃøÁ¤µÈ µ¥ÀÌÅÍ´Â RRDµîÀ» ÅëÇØ¼­ Åë°èÀÚ·á·Î ¸¸µé¸é, ¸ð´ÏÅ͸µ °¡´ÉÇÑ Á¤º¸°¡ µÉ °ÍÀÌ´Ù.

RRD »ý¼º

´ÙÀ½°ú °°ÀÌ RRD Database¸¦ »ý¼ºÇß´Ù. ´ÜÁö Reply Time¸¸ ÀúÀåÇϵµ·Ï Çß´Ù.
NOW=`date +%s` 
echo $NOW 
rrdtool create dnsrtime.rrd --start $NOW --step 300 \ 
DS:rtime:GAUGE:600:U:U \ 
RRA:LAST:0.5:1:600 \ 
RRA:LAST:0.5:6:700 \ 
RRA:LAST:0.5:24:775 \ 
RRA:LAST:0.5:288:797 
 

RRD Update

°£´ÜÇÑ µ¥¸ó ÇÁ·Î±×·¥À» ¸¸µé¾ú´Ù. ÀÌ µ¥¸ó ÇÁ·Î±×·¥Àº 20ÃÊ °£°ÝÀ¸·Î nslookup(8)À» ½ÃµµÇؼ­, ÀÀ´ä½Ã°£À» Á¶»çÇϰí RRD µ¥ÀÌÅÍ º£À̽º¸¦ ¾÷µ¥ÀÌÆ® ÇÑ´Ù. ÄÄÆÄÀÏÀº µÇÁö¸¸ ¾ÆÁ÷ ¿Ï¼ºµÈ ÄÚµå´Â ¾Æ´Ï´Ù.
#include <sys/time.h> 
#include <stdio.h> 
#include <unistd.h> 
 
int main(int argc, char **argv) 
{ 
    FILE *fp; 
    char buf[256]; 
    struct timeval ftime, stime; 
    int rtime = 0; 
    int i = 1; 
    char rrd[80]; 
    char command[256]; 
    sprintf(rrd, "%s", argv[1]); 
    if (access(rrd,F_OK) != 0) 
    { 
        printf("rrd not found!!\n"); 
        return 1; 
    } 
 
    while(1) 
    { 
        gettimeofday(&ftime, NULL); 
        fp = popen("nslookup www.linux.com 218.234.19.87 -sil", "r"); 
        while(fgets(buf, 254, fp)) 
        { 
        } 
        fclose(fp); 
        gettimeofday(&stime, NULL); 
 
        rtime += (stime.tv_sec - ftime.tv_sec)*1000000+(stime.tv_usec - ftime.tv_usec); 
        printf("rtime %d\n", rtime); 
        if ((20*i)%300 == 0) 
        { 
            sprintf(command, "%s update /usr/local/rrddata/dnsrtime.rrd %d:%d", rrd, stime.tv_sec, rtime/15000); 
            printf("Command : %s\n", command); 
            rtime = 0; 
        } 
        sleep(20); 
        i++; 
    } 
} 
 

RRD ±×·¡ÇÁ

ÀÌ·¸°Ô RRD µ¥ÀÌÅͺ£À̽º¿¡ 5ºÐ°£°ÝÀ¸·Î DNS ÀÀ´ä½Ã°£ µ¥ÀÌÅͰ¡ ½×ÀÌ°Ô µÇ¾ú´Ù. ÀÌÁ¦ ÀÌ Á¤º¸¸¦ ±×·¡ÇÁ·Î º¸¿©ÁÖ¸é µÈ´Ù. ´ÙÀ½°ú °°Àº ½ºÅ©¸³Æ®¸¦ ÀÌ¿ëÇØ¼­ RRD ±×·¡ÇÁ¸¦ »ý¼ºÇϵµ·Ï Çß´Ù. ÀÌ ½ºÅ©¸³Æ®´Â crontab¿¡ µî·ÏµÇ¾î¼­ 5ºÐ´ÜÀ§·Î ½ÇÇàµÉ °ÍÀÌ´Ù.
 
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.