xinetd ÇÁ·Î±×·¡¹Ö
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



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

2002³â¿¡ ¸¸µé¾îÁø ¹®¼­ÀÔ´Ï´Ù. ´ç½Ã¿¡´Â inetd¸¦ »ç¿ëÇߴµ¥, ²Ï³ª ¿À·¡Àü¿¡ xinetd¹æ½ÄÀÌ »ç¿ëµÇ°í ÀÖ½À´Ï´Ù. Áö±Ý¿¡ ¸Â°Ô ¹®¼­¸¦ ¾÷µ¥ÀÌÆ® ÇÕ´Ï´Ù. -- 2011/06/23

xinetd ±â¹Ý ³×Æ®¿öÅ© ÇÁ·Î±×·¡¹Ö

xinetd ¿Í stand alone ¹æ½Ä

ÀϹÝÀûÀ¸·Î ³×Æ®¿öÅ© ÇÁ·Î±×·¥À» ¸¸µç´Ù°í Çϸé, µ¶¸³µÈ ¼ÒÄÏ ¼­¹ö ÇÁ·Î±×·¥À» »ý°¢ÇÒ °Ì´Ï´Ù. socket -> bind ->listen(:12) À¸·Î ¿¬°á ¼ÒÄÏ ´ë±â¿­À» ¸¸µé°í acceptÇÔ¼ö·Î ¿¬°á ¼ÒÄÏÀ» °¡Á®¿Â´ÙÀ½ ¸ÖƼ ½º·¹µå ȤÀº ¸ÖƼ ÇÁ·Î¼¼½º¹æ½ÄÀ¸·Î Ŭ¶óÀÌ¾ðÆ®¸¦ ó¸®ÇÕ´Ï´Ù.

½º½º·Î ¸ðµç °ÍÀ» ó¸®ÇÏ´Â ÀÌ·±·ùÀÇ ¼ÒÄÏ ÇÁ·Î±×·¥À» stand alone¹æ½Ä ÇÁ·Î±×·¥À̶ó°í Çϴµ¥¿ä. ÀÌ ¹æ½ÄÀÇ ÇÁ·Î±×·¥¸¸ ÀÖ´Â °ÍÀº ¾Æ´Õ´Ï´Ù. xinetd¸¦ ÀÌ¿ëÇÑ ÇÁ·Î±×·¡¹Ö ¹æ½Äµµ ÀÖ½À´Ï´Ù.

¼ÒÄÏ ÇÁ·Î±×·¥Àº Å©°Ô µÎ °³ ºÎºÐÀ¸·Î ³ª´¶´Ù´Â °ÍÀ» ¾Ë°í ÀÖÀ» °Ì´Ï´Ù.
  1. soket->bind->listen->accept ·Î À̾îÁö´Â ºÎºÐÀ¸·Î Ŭ¶óÀÌ¾ðÆ® ¿¬°áÀ» È®ÀÎÇÕ´Ï´Ù.
  2. read <-> write ·Î À̾îÁö´Â ºÎºÐÀ¸·Î Ŭ¶óÀÌ¾ðÆ®¿Í Åë½Å ÇÏ´Â ºÎºÐ

¸ÖƼ ½º·¹µå ȤÀº ¸ÖƼ ÇÁ·Î¼¼½º ¹æ½ÄÀÇ ÇÁ·Î±×·¥ÀÌ acceptÇÔ¼ö È£Ãâ ÈÄ¿¡ ºÐ±â¸¦ ÇÏÁÒ.

±×·¸´Ù¸é ÀÌ·± »ý°¢À» ÇØ º¼ ¼öµµ ÀÖÀ» °Ì´Ï´Ù. Ŭ¶óÀÌ¾ðÆ® ¿¬°á¸¸À» ó¸®ÇÏ´Â ÇÁ·Î¼¼½º¸¦ µû·Î µÎ´Â °ÅÁÒ. ÀÌ ÇÁ·Î±×·¥Àº ¿À·ÎÁö Ŭ¶óÀÌ¾ðÆ® ¿¬°á¸¸À» ó¸®ÇÕ´Ï´Ù. accept ÇÔ¼ö·Î Ŭ¶óÀÌ¾ðÆ® ¿¬°áÀ» °¡Á®¿À¸é, µ¥ÀÌÅ͸¦ ó¸®ÇÒ ÇÁ·Î±×·¥À» ½ÇÇà ÇÏ´Â °Ì´Ï´Ù.

Ŭ¶óÀÌ¾ðÆ®¿Í Åë½ÅÇÒ ÇÁ·Î±×·¥Àº fork ÈÄ exec ÇÔ¼ö·Î ÇÁ·Î±×·¥À» ½ÇÇàÇÒ °Çµ¥¿ä. fork Çϸ鼭 ¿¬°á ¼ÒÄÏÀ» ³Ñ°ÜÁÖ¸é µÇÁÒ. dup2 ÇÔ¼ö·Î ¸í½ÃÀûÀ¸·Î ¼ÒÄÏÀ» º¹»çÇÏ¸é µÇ°ÚÁÒ. Ç¥ÁØÀÔ·ÂÀ¸·Î º¹»çÇÏ´Â°Ô ¹«³­ÇϰÚÁÒ. ÀÌ¿¡ ´ëÇÑ ±¸ÇöÀº inet µ¥¸ó ¹æ½ÄÀÇ ÇÁ·Î±×·¥ °³¹ß¿¡ ³ª¿Í ÀÖÀ¸´Ï Âü°í ¹Ù¶ø´Ï´Ù.

xinetd

¸®´ª½º´Â ÀÌ·± ÅøÀ» Á¦°øÇÕ´Ï´Ù. ¸î °³ Æ÷Æ®¿¡ ´ë±âÇϰí ÀÖ´Ù°í, ¿¬°áÀÌ µé¾î¿À¸é ÇØ´ç Æ÷Æ®ÀÇ µ¥ÀÌÅ͸¦ ó¸®ÇÒ ¿ÜºÎ ÇÁ·Î±×·¥À» È£ÃâÇÏ´Â ¹æ½ÄÀÔ´Ï´Ù. ÀÌ µ¥¸ó ÇÁ·Î±×·¥À» xinetd ¶ó°í ÇÕ´Ï´Ù.

xinetd°¡ ÀÛµ¿ÇÏ·Á¸é µÎ °¡Áö ¼³Á¤ ¿ä¼Ò¸¦ °¡Á®¾ß µÊÀ» ¾Ë ¼ö ÀÖ½À´Ï´Ù. ±â´Ù¸± Æ÷Æ® ¹øÈ£¿Í °¢ Æ÷Æ® ¹øÈ£¿¡ ¿¬°áµÈ Ŭ¶óÀÌ¾ðÆ® ¿äûÀ» ó¸®ÇÒ ÇÁ·Î±×·¥ÀÇ À§Ä¡ÁÒ.

xinetdÀÇ ¼³Á¤ÆÄÀÏÀº /etc/xinetd.dµð·ºÅ丮 ¹Ø¿¡ µÎ¸é µÈ´Ù. ÆÄÀÏÀÇ ³»¿ëÀº ´ë·« ´ÙÀ½°ú °°´Ù. ¼­ºñ½ºÀÇ À̸§ÀÌ myecho ¶ó¸é
# cat /etc/xinetd.d/myecho 
service myecho 
{ 
    type = UNLISTED 
    disable         = no 
    socket_type     = stream 
    protocol        = tcp 
    user            = root 
    wait            = no 
    server = /usr/local/bin/echo 
    port = 12345 
}                                                                                
 
  • type : ¼­ºñ½ºÀÇ Å¸ÀÔÀ¸·Î ¾Æ·¡ÀÇ Å¸ÀÔ Áß Çϳª¸¦ ¼±ÅÃÇÏ¸é µÈ´Ù.
    • RPC : RPC ¼­ºñ½ºÀÏ °æ¿ì
    • INTERNAL : xinetdÀÇ ¼­ºñ½º¸¦ ¹ÞÀ» °æ¿ì. INTERNAL·Î ÁöÁ¤µÇ¾î ÀÖÀ» °æ¿ì ¼­ºñ½º À̸§ÀÌ /etc/servies¿¡ µî·ÏµÅ ÀÖ¾î¾ß ÇÑ´Ù. myecho´Â µî·ÏµÈ ¼­ºñ½º°¡ ¾Æ´Ï±â ¶§¹®¿¡ UNLISTED¸¦ »ç¿ëÇß´Ù. /etc/servicesÀÇ Æ÷Æ®¸¦ »ç¿ëÇϹǷΠport¸¦ ¼³Á¤ÇÒ Çʿ䰡 ¾ø´Ù.
    • UNLISTED : Ç¥ÁØ ¼­ºñ½º°¡ ¾Æ´Ò °æ¿ì¿¡, Áï /etc/rpc ȤÀº /etc/services¿¡ µî·ÏµÅÁö ¾ÊÀº ¼­ºñ½ºÀÇ °æ¿ì¿¡ »ç¿ëÇÑ´Ù. Ç¥ÁØ ¼­ºñ½º°¡ ¾Æ´Ï¹Ç·Î port¸¦ ¼³Á¤ÇØ¾ß ÇÑ´Ù.
  • disable : ¼­ºñ½º¸¦ ÇÒ °ÇÁö
  • socket_type : stream À̸é stream ±â¹Ý, dgramÀÌ¸é µ¥ÀÌÅÍ ±×·¥ ±â¹Ý
  • protocol : »ç¿ëÇÒ ÇÁ·ÎÅäÄÝ·Î /etc/protocols¿¡ ÀÖ´Â °ÍµéÀ» Áö¿øÇÑ´Ù. ÀϹøÀûÀÎ ¼ÒÄÏ ³×Æ®¿öÅ© ÇÁ·Î±×·¥À̶ó¸é tcp¿Í udp°¡ µÉ °ÍÀÌ´Ù.
  • user : ÇÁ·Î±×·¥ÀÇ ½ÇÇà »ç¿ëÀÚ ±ÇÇÑ
  • server : Ŭ¶óÀÌ¾ðÆ®¸¦ ó¸®ÇÒ ÇÁ·Î±×·¥ÀÇ °æ·Î
  • wait : no¸é ¿©·¯ Ŭ¶óÀÌ¾ðÆ®¸¦ ó¸®ÇÒ ¼ö ÀÖ´Ù.

xined ±â¹Ý ÇÁ·Î±×·¥ °³¹ß

ÀÌÁ¦ ÇÁ·Î±×·¥À» °³¹ßÇØ¾ß °ÚÁÒ. ÇÁ·Î±×·¥ÀÇ À̸§Àº myecho°¡ µÇ°Ú³×¿ä.
#include <fcntl.h> 
#include <string.h> 
 
int main(int argc, char **argv) 
{ 
  char buf[1024]; 
  memset(buf, 0x00, 1024); 
  read(0, buf, 1024); 
  write(0, buf, strlen(buf)); 
} 
 
³Ê¹« °£´ÜÇÕ´Ï´Ù. ¼ÒÄÏÀ» ¸¸µé°í ±â´Ù¸®´Â °úÁ¤ÀÌ »ý·«µÆ±â ¶§¹®ÀÌÁÒ. ±×³É µ¥ÀÌÅ͸¸ ó¸®ÇÏ¸é µË´Ï´Ù.

½© ½ºÅ©¸³Æ®·Î Çѹø ¸¸µé¾î º¼±î¿ä ?
# cat myecho 
#!/bin/sh 
read input 
echo $input 
 
3ÁÙ·Î ³¡ÀÔ´Ï´Ù.!!!

xined ±â¹Ý ÇÁ·Î±×·¥ Å×½ºÆ®

echo ¼­ºñ½º¸¦ À§ÇÑ Äڵ带 ¸¸µé¾ú´Âµ¥¿ä. ³×Æ®¿öÅ© ÇÁ·Î±×·¥À̶ó°í »ý°¢Çϱ⿣ Äڵ尡 ³Ê¹« °£´ÜÇØ¼­ Á¤¸» ½ÇÇàµÉÁö ¹ÏÀ½ÀÌ °¡Áö ¾Ê´Â±º¿ä. Å×½ºÆ®¸¦ ÇØºÁ¾ß °Ú½À´Ï´Ù.

À§¿¡¼­ ¸¸µç myecho ¼³Á¤ÆÄÀÏÀ» /etc/xinetd.d/ ¿¡ º¹»ç¸¦ Çϰí. xinetd µ¥¸óÀ» Àç ½ÃÀÛÇÕ´Ï´Ù.
# /etc/init.d/xinetd restart 
 * Stopping internet superserver xinetd                                       [ OK ]  
 

³×.. ÀÌÁ¦ netstat·Î ¼­ºñ½º Æ÷Æ®°¡ ¶° ÀÖ´ÂÁö È®ÀÎÇØ º¸ÁÒ.
# netstat -nap | grep xine 
tcp     0      0 0.0.0.0:8888     0.0.0.0:*       LISTEN      16947/xinetd     
 
8888¹ø Æ÷Æ®·Î ¶°ÀÖ´Â°Ô º¸ÀÌ¸é ¼º°øÇѰ̴ϴÙ. ÀÌÁ¦ myecho ¼­ºñ½º¸¦ ÀÌ¿ëÇØ º¸°Ú½À´Ï´Ù. Ŭ¶óÀÌ¾ðÆ® ÇÁ·Î±×·¥ °³¹ßÀº ±ÍÂúÀ¸´Ï ±×³É telnetÀ¸·Î Å×½ºÆ® Çϱâ·Î Çß½À´Ï´Ù.
# telnet 127.0.0.1 8888 
Trying 127.0.0.1... 
Connected to 127.0.0.1. 
Escape character is '^]'. 
hello world 
hello world 
Connection closed by foreign host. 
#  
 
¾Æ ÀߵǴ ±º¿ä.




2.1.2Àý. Å×½ºÆ® Çϱâ


ÀÌÁ¦ Ŭ¶óÀÌ¾ðÆ®¸¦ ÀÌ¿ëÇØ¼­ Å×½ºÆ® Çϱ⸸ ÇÏ¸é µÈ´Ù. Ŭ¶óÀÌ¾ðÆ®´Â ¼ÀÇ÷Π¾Ë¾Æº¸´Â ¼ÒÄÏÇÁ·Î±×·¡¹Ö¿¡ ÀÖ´Â zipcode_cli.c ¸¦ ±×´ë·Î »ç¿ëÇÏ¸é µÈ´Ù.

2.2Àý. inetd ¹æ½Ä°ú stand alone ¹æ½ÄÁß ¾î´À°É ¼±ÅÃÇØ¾ß Çϳª

°á·Ð ºÎÅÍ ¸»ÇÏÀÚ¸é ¼­ºñ½ºÇÒ ¼­¹öÀÇ È¯°æ¿¡ µû¶ó¼­ Àû´çÇÑ ¹æ½ÄÀ» äÅÃÇÏ¸é µÈ´Ù.(³Ê¹« »·ÇÑ ´äº¯ÀÎ°Í °°Áö¸¸ --;)

2.2.1Àý. inetd

°¢°¢ Àû´çÇÑ ¿ëµµ°¡ ÀÖ´Ù. ÀÏ´Ü inetd ¹æ½ÄÀÇ °æ¿ì À§¿¡¼­ º¸¾Ò°ÚÁö¸¸ ÄÚµù·®ÀÌ ¸¹ÀÌ ÁÙ¾îµç´Ù. ¶ÇÇÑ ¿¡·¯¹ß»ýÈ®·üµµ ÁÙ¾îµç´Ù. inetd µ¥¸ó ÀÚü°¡ °ËÁõµÈ ÇÁ·Î±×·¥À̱⠶§¹®ÀÌ´Ù. ¶ÇÇÑ ´ÙÁßÀÇ Å¬¶óÀÌ¾ðÆ®¸¦ ¹Þ¾ÆµéÀ̱â À§Çؼ­ »ç¿ëÇÏ´Â fork, select, poll µî¿¡ ´ëÇØ¼­ ½Å°æ¾µÇʿ䰡 ¾ø´Ù. º¸Åë À̵é fork, select, poll Àº ²Ï ±î´Ù·Î¿î ÇÁ·Î±×·¡¹Ö ÀÛ¾÷À» ¿ä±¸Çϸç, ÀÌ´Â ¸¹Àº ¿À·ù¸¦ ¹ß»ý½Ã۱⵵ ÇÑ´Ù.

inetd ¹æ½ÄÀº telnet, ftp, pop ¼­ºñ½º¿Í °°Àº ºó¹øÇÑ ¿ä±¸°¡ ¹ß»ýÇÏÁö ¾Ê°Å³ª, ÀÏ´Ü ¿äûÀ» ¹Þ¾ÆµéÀÌ¸é ²Ï ¿À·£½Ã°£ ÀÛ¾÷À» ¼öÇàÇÏ´Â ¼­ºñ½º¿¡ Àû´çÇÏ´Ù. ¹Ý¸é http ¼­ºñ½º¿Í °°ÀÌ Ãʱ⠹ÝÀÀ¼Óµµ°¡ Áß¿ä½ÃÇϰųª ¸Å¿ì ºó¹øÇÑ ¿äûÀÌ ÀϾ´Â ¼­ºñ½º¿¡´Â Àû´çÇÑ ¹æ¹ýÀÌ ¾Æ´Ï´Ù.

±×¸®°í ¿¡·¯¸¦ Ç¥ÁØÃâ·Â½Ãų¼ö ¾øÀ¸¹Ç·Î ¾à°£ µð¹ö±ëÀÌ ±î´Ù·Î¿Í Áú¼ö ÀÖ´Ù´Â ´ÜÁ¡À» °¡Áö°í ÀÖ´Ù. µð¹ö±ëÀ» ¿øÇÑ´Ù¸é ¿¡·¯·Î±×¸¦ ÆÄÀÏ·Î ÀúÀåÇÏ´Â ¹æ¹ýÀ» »ç¿ëÇØ¾ß ÇÒ°ÍÀÌ´Ù.

2.2.2Àý. inetd

stand alone ¹æ½ÄÀº http¿Í °°Àº ¹ÝÀÀ¼Óµµ°¡ Áß¿äÇϰųª, ¸Å¿ì ºó¹øÇÑ ¿äûÀÌ ÀϾ´Â ¼­ºñ½º¿¡ Àû´çÇÏ´Ù.

¿¹¸¦µé¾î ¼­¹ö°¡ oracle ¿¡ ¿¬°áÇØ¼­ µ¥ÀÌŸ¸¦ °¡Á®¿À´Â ÀÏÀ»ÇÑ´Ù°í ÇßÀ»¶§ inetd ¹æ½ÄÀ» »ç¿ëÇϸé Ŭ¶óÀ̾ðÆ®ÀÇ ¿¬°áÀÌ µé¾î¿Ã¶§ ¸¶´Ù oracle DB·ÎÀÇ ¿¬°áÀ» ¼öÇàÇØ¾ß ÇÒ°ÍÀÌ´Ù. ÀÌ´Â ¾öû³­ ÀÚ¿øÀÇ ºñÈ¿À²¼ºÀ» Áõ°¡ ½Ãų¼ö ÀÖ´Ù. ±×·¯³ª stand alone ¹æ½ÄÀ¸·Î ÇßÀ»¶§´Â ÃÖÃÊ¿¡ Çѹø¸¸ oracle DB·Î ¿¬°áÇϰí, »õ·Î¿î Ŭ¶óÀÌ¾ðÆ®°¡ ¿¬°áµÇ´õ¶óµµ ÀÌ¹Ì ¿¬°áµÈ oracle DB·Î ÀÛ¾÷À» ÇÒ¼ö ÀÖÀ»°ÍÀÌ´Ù.

±×·¯³ª Äڵ差ÀÌ ¸¹¾ÆÁö°í, ½Å°æ½á¾ßÇÒ ºÎºÐµéÀÌ ¸Å¿ì ¸¹¾ÆÁø´Ù´Â ´ÜÁ¡À» °¡Áö°í ÀÖ´Ù.
EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.