Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
×Ô½¨CDN·ÀÓùDDoS
 
×÷ÕߣºÕÅÀÚ ÉÛº£Ñî À´Ô´£ºInfoQ ·¢²¼ÓÚ£º2015-8-7
  4067  次浏览      29

×Ô½¨CDN·ÀÓùDDoS£¨1£©£ºÖª¼ºÖª±Ë£¬½¨Éè³Ö¾Ã·ÀÏß

ǰÑÔ

±¾ÒéÌâÊÇÎÒÃÇÔÚOWASPº¼ÖÝÇø2013ÄêËêÄ©Äê³õ°²È«É³ÁúÖнøÐзÖÏíµÄÄÚÈÝ£¬ÔÚ´ËÎÒÃǶÔÕâ¸öÒéÌâµÄÕûÌåÄÚÈݽøÐÐÁËÖØÐ¹éÄÉÊáÀí£¬ÐγÉÁËÎÄ×Ö°æ¡£

ÔÚ±¾ÎÄÖУ¬DDoSµÄ°¸ÀýÓëÓ¦¶Ô¾­Ñé¾ùÀ´×ÔÓÚijÊг¡Õ¼ÓÐÂʺܸߵĿͷþϵͳËùÓöµ½µÄʵ¼Ê³¡¾°£¬·Ö±ð´Ó³É±¾¡¢Ð§Âʺ;ßÌå¼Ü¹¹Éè¼Æ£¨Ñ¡ÐÍ¡¢ÅäÖá¢ÓÅ»¯µÈ£©½Ç¶ÈÀ´·ÖÎöͨ¹ý×Ô½¨CDNÀ´Ó¦¶Ô²»Í¬ÀàÐ͵ÄDDoS¹¥»÷¡£

±³¾°½éÉÜ

¿Í·þϵͳµÄÖ÷ÒªÒµÎñÊÇÌṩ»ùÓÚÍøÒ³µÄʵʱ¶¯Ì¬µÄÎÄ×ÖÁÄÌ죬Ö÷ÒªÓ¦ÓÃÔÚ¸÷ÀàÍøÂçÉÌÆ·ÏúÊÛ¡¢ÍøÕ¾ÔÚÏ߿ͷþµÈÁìÓò£¬×ÜÓû§Êý58Íò£¬Í¬Ê±ÔÚÏß»îÔ¾µÄÓû§Ô¼12Íò/Ìì¡£

ÕâЩӦÓÃÁìÓòͨ³£ÐÐÒµÖ®¼äµÄ¾ºÕù±È½Ï¼¤ÁÒ£¬ÆäÖаüÀ¨ÔÚÏßÏÂÎÞ·¨ÃûÕýÑÔ˳µÄ»ÒÉ«+±©Àû²úÒµ£¬µ¼Ö¾ºÕù¶ÔÊÖÖ®¼ä¾­³£·¢¶¯DDoS¶ñÒâ¹¥»÷¡£µ«ÓªÏúÍøÕ¾ÍùÍùÊǵ¥Ãæ¼ÓËÙ£¬¼ÓÉÏÍÆ¹ãʱЧÐÔºÜÇ¿£¬ºÜÄѱ»³¹µ×´ò»÷£¬ÓÚÊÇһЩ×Ô×÷´ÏÃ÷µÄºÚ¿Íͨ¹ý¹¥»÷ÍøÕ¾µÄÔÚÏ߿ͷþϵͳ£¬µ¼ÖÂÍøÕ¾ÎÞ·¨¸ú·Ã¿Í¹µÍ¨£¬²»Äܽ»Ò×£¬´Ó¶ø´ïµ½¶ñÒâ¹¥»÷µÄÄ¿µÄ¡£Òò´Ë¿Í·þϵͳÕâ¸öÔ­±¾ÓÐÖúÓÚÍøÕ¾ÓªÏúµÄ¹¤¾ß·´¶ø³ÉÁ˱»¹¥»÷µÄÖ÷Òª¶ÔÏó£¬ËäÈ»É˵ÃίÇü£¬µ«Ò²²»µÃ²»Ãæ¶ÔÌôÕ½¡£

ÎÒÃÇÔâÓöµÄDDoS¹¥»÷ÀàÐͰüÀ¨£ºÑÓ»ºÐÔµÄCC¹¥»÷ºÍÖÂÃüµÄ´óÁ÷Á¿¹¥»÷¡£ÏÂÃæ½«¶ÔÁ½ÖÖ¹¥»÷·½Ê½µÄ¹¥»÷ÌØµã¡¢·ÀÓù˼·ºÍÎÒÃÇÓùýµÄһЩ·ÀÓù·½°¸½øÐмòµ¥µÄ½éÉÜ¡£

ÑÓ»ºÐÔµÄCC¹¥»÷

¹¥»÷ÌØµã

¹¥»÷Õß½èÖúÍøÂçÉÏÌṩµÄ´óÁ¿´úÀí·þÎñÆ÷IP£¬ÀûÓù¥»÷Èí¼þ£¬Éú³ÉÖ¸ÏòÊܺ¦Ö÷»úµÄºÏ·¨ÇëÇó¡£

ÕâÀ๥»÷¶Ô¹¥»÷ÕßÀ´Ëµ³É±¾µÍ£¬¶øÇÒÍøÉÏÏֳɵÄÈí¼þ¶à£¬¹¥»÷µÄ·ç¸ñÏà¶Ô±È½Ï¡±ÎÂÈá½÷É÷¡±£¬ÆäÄ¿µÄÊÇͨ¹ýÖð½¥Ôö¶àµÄÀ¬»øÇëÇó£¬ÏûºÄ·þÎñÆ÷µÄÕý³£Ó¦ÓÿªÏúÈçCPU,ÄÚ´æ,Íø¿¨Ñ¹Á¦£¬ÉõÖÁÊÇÍøÂçÓµ¶Â£¬È»ºóÇëÇóÎÞÏìÓ¦£¬ÎÞ³ö¿ÚÁ÷Á¿£¬µ¼ÖÂÍøÕ¾±äÂý£¬´ïµ½ÍøÕ¾ÎÞ·¨·ÃÎʵÄÄ¿µÄ¡£

·ÀÓù˼·

¶ÔÓÚÕâÀ๥»÷£¬ÓÐÁ½¸ö©¶´Ìصã¿ÉÒÔ±»ÎÒÃÇÀûÓ㬴Ӷø×èÖ¹ÕâÀà¶ñÒâµÄCC¹¥»÷£¬¹Ø¼üÊÇÏìÓ¦Ò»¶¨Òª¿ì¡£

µÚÒ»¸öÌØÕ÷£¬ÓÉÓÚÊÇÈËΪÉú³ÉÁË´óÁ¿µÄ·Ç·¨ÇëÇó£¬Òý·¢ÍøÂçµÄincomingÁ÷Á¿»áÒì³£Ôö´ó£¨Õý³£Çé¿öÏ£¬incomingÁ÷Á¿Ð¡£¬outgoingÁ÷Á¿´ó£©£»µÚ¶þ¸öÌØÕ÷£¬¹¥»÷Á¦¶ÈÓÐÒ»¸ö½¥Ôö¹ý³Ì£¬ÎÒÃÇÒª³ä·ÖÀûÓÃÕâ¸ö±¦¹óµÄʱ¼ä£¬ÈûúÆ÷µÚһʱ¼äÖÇÄܵÄ×ö³ö·´Ó¦£¬µ÷ÓÃÈÕÖ¾·ÖÎö½Å±¾×ö¾ö²ß£¬¼ÓÒÔ·ÀÓù»òÕßÒýÁ÷¡£

¾ßÌåµÄ·½·¨ÓжàÖÖ£¬ÕâÀïÖ»ÁоÙÎÒÃÇËùʹÓõÄÁ½ÖÖ£º

1.ʹÓÃ¼à¿ØÈí¼þµÄÁ÷Á¿¼à¿ØÍ¼À´´¥·¢ÈÕÖ¾·ÖÎö½Å±¾£¬ÈçͼËùʾ£¨zabbixΪÀý£©£º

2.ÀûÓÃbash½Å±¾À´Í³¼ÆincomingÁ÷Á¿£¬·¢ÏÖÒ쳣ʱ£¬µ÷ÓÃÏàÓ¦ÈÕÖ¾·ÖÎö½Å±¾£¬ÊµÏÖ×è»÷¡£

#!/bin/bash                                                                                        
DEV=$1 # ¶¨Òå¼àÌýÍø¿¨
LIMIT=$2 # ¶¨Òå´¥·¢ãÚÖµ
WARN=$3 #¶¨Ò屨¾¯ãÚÖµ
TIME=$4 # ¶¨ÒåÍø¿¨Êý¾Ý²É¼¯ÆµÂÊ
mobile_num="13xxxxxxxxxx" # ¶¨Òå½ÓÊÕ±¨¾¯¶ÌÐÅÊÖ»úºÅÂë
LOCK="/tmp/.exchange_proxy.lock"

[ -z $DEV ] && echo "$0 ethx limit_band(kbps) warn_limit(kbps) seconds" && exit 0
[ -z $LIMIT ] && LIMIT=800000 # 800 kbps
[ -z $WARN ] && WARN=900000 # 900 kbps
[ -z $TIME ] && TIME=10 # 10s

send_fetion() {
#¶¨Òå·ÉÐű¨¾¯¶ÌÐŽӿÚ
}

while : ; do
net_flood=`ifconfig $DEV|sed -n "8"p`
rx_before=`echo $net_flood|awk '{print $2}'|cut -c7-`

sleep $TIME

net_flood=`ifconfig $DEV|sed -n "8"p`
rx_after=`echo $net_flood|awk '{print $2}'|cut -c7-`

rx_result=$[(rx_after-rx_before)/$TIME]

over_bw=$[(rx_result-LIMIT)]
if [ $over_bw -gt 0 ];then
BOOL=`echo "$rx_result>$WARN"|bc` #ÅжÏÊÇ·ñΪ¹¥»÷
if [ $BOOL -eq 1 ];then
# È·ÈÏΪ¹¥»÷£¬Ö´ÐвßÂÔ²¢·¢ËͶÌÐÅ
send_fetion $mobile_num "$STR"
else
# Á÷Á¿³¬±ê£¬·¢ËͶÌÐÅ£¬ÇëÁôÒâ
send_fetion $mobile_num "$STR"
fi
fi
sleep $TIME
done

¹ýÂ˽ű¾ÊµÏÖÔ­Àí¾ÍÊÇÔÚ·þÎñÆ÷ÉÏÆô¶¯ÈÕÖ¾·ÖÎö»úÖÆ£¬ÔÚµÚһʱ¼äÕÒ³öÒì³£µÄIP¡¢Agent£¬URL»òÕ߯äËüÌØÕ÷Â룬´ÓÄں˲ãÀûÓÃiptables¶Ô¶ñÒâIP½øÐйýÂË£¬ÔÚÓ¦ÓòãÉÏÀûÓÃnginxµÄhttp¹Ø¼ü´Ê½øÐйýÂË£¬Ö±½Ó·µ»Øbadcode 444½øÐÐÀ¹½Ø¡£

·½°¸È±µã

ÎÞÂÛÊÇ´ÓÄں˼¶±ð»¹ÊÇÓ¦Óü¶±ð£¬¶Ô·þÎñÆ÷±¾ÉíµÄCPUºÍÄÚ´æµÄÒÀÀµ¶È¸ß£¬ÈçiptablesµÄ¹ýÂ˱¾Éí¶Ô·þÎñÆ÷µÄCPUѹÁ¦ºÜ´ó£¬ÔÚ×èÖ¹IP³¬¹ý15K¸ö£¬·þÎñÆ÷»ù±¾²»¿ÉÓÃÁË£»NginxÔÚ×èÖ¹HTTPÇëÇóʱ£¬ÓÉÓÚnginx»á¸øÃ¿¸öhttpÇëÇó·ÖÅäÄÚ´æºÍ´¦ÀíÁ´¹æÔò£¬ÄÚ´æ×ÊÔ´ºÄ¾¡£»Ëæ×ÅÁ÷Á¿µÄ²»¶ÏÔö´óºÍ¹¥»÷ʱ¼äµÄ³ÖÐø£¬Íø¿¨Ñ¹Á¦Ò²´ó£¬×ÊÔ´×îÖÕ±»ºÄ¾¡¡£

ËùÒÔ£¬Õâ¸ö·½°¸Öα겻Öα¾¡£

ÖÂÃüµÄ´óÁ÷Á¿¹¥»÷

¹¥»÷ÌØµã

ÕâÖÖ¹¥»÷ͨ³£ÒÔtcp syn£¬icmpºÍUDP£¨ÓÈÆäÊÇUDP°ü£¬µ¥UDPµÄÊý¾Ý°ü¿ÉÒԺܴ󣩷½Ê½ÎªÖ÷¡£¿Í·þϵͳÔâÓöµ½µÄ×î´óµÄÒ»´ÎΪ16GµÄ¹¥»÷Á÷Á¿£¬Õû¸ö»ú·¿¶¼±»Ó°Ïìµ½¡£¹¥»÷Õßͨ³£¿ØÖÆ´óÁ¿È⼦»òÕßÖ±½Ó¹´½áIDCÀïµÄ·þÎñÆ÷ºÍ´ø¿í×ÊÔ´£¬¶ÔÄ¿±ê½øÐÐÁ÷Á¿´ò»÷¡£´ËʱÁ÷Á¿»á¿ìËÙÕ¼Âú·þÎñÆ÷µÄÍøÂç´ø¿í£¬µ¼ÖÂÎÞ·¨ÏìÓ¦ÈκÎÓû§ÇëÇó¡£

ÕâÀ๥»÷ÐèÒª¹ºÂò´óÁ¿´ø¿í×ÊÔ´£¬¶ÔÓÚ¹¥»÷·½À´Ëµ£¬³É±¾Í¦¸ß£¬µ«ÊÇÏÂÊÖ¡°¿ìºÝ×¼¡±£¬Ä¿µÄÊÇÈÃÍøÕ¾ÔÚ¶Ìʱ¼äÄÚ³¹µ×ÎÞÏìÓ¦¡£

ÓÉÓÚÕâÀ๥»÷»áÒýÆðÁ÷Á¿¶¸Ôö£¬IDCÀïµÄÁ÷Á¿¼à¿ØÉ豸Ҳ»áºÜÃ÷ÏԵIJì¾õµ½Õâ¸öÏÖÏó¡£IDCͨ³£²ÉÈ¡µÄ´ëʩһ°ãÊǶª³µ±£Ë§£¬Ö±½Ó½«Õâ¸ö±»¹¥»÷µÄIPÀ­ºÚÃûµ¥ÉõÖÁÖ±½Ó°ÎÏߣ¬Èù¥»÷¶ÔÏó×Ôɱ¡£Õâ¶Ô±¾Ó¦¸ÃÐèÒª°ïÖúµÄ¿Í»§ÎÞÒÉÊÇÂä¾®ÏÂʯ£¬Ñ©ÉϼÓ˪¡£

·ÀÓù˼·

Ó¦¸¶´ËÀàÁ÷Á¿¹¥»÷µÄ·ÀÓù·½Ê½ÓУº

1.¼ÜÉèÓ²·À»ðǽ

2.×âÓø߷À½Úµã

3.×âÓÃCDN·ÖɢĿ±êÁ÷Á¿

·½°¸È±µã

¼ÜÉèÓ²·À»ðǽ£ºÊÐÃæÉÏ2GÓ²·Àµ¥¼ÛÔÚ10W×óÓÒ£¬¼¯Èº·ÀÓù´ú¼Û¸ü´ó£¬ËäȻӲ¼þ¼¶µÄ·ÀÓùÐÔÄܽϸߣ¬µ«Ãæ¶ÔÁ÷Á¿ºéˮҲÊDZ­Ë®³µÐ½£¬ÇÒ¸±×÷ÓÃÒ²²»ÈÝСêï¡£

×âÓø߷À½Úµã£º¸ß·À½ÚµãÓзÀÓù´ø¿í£¬·ÀÓùÁ÷Á¿£¬¹²Ïí¶ÀÏíÇø·Ö£¬¸÷¸öÌײ͵Ä×éºÏ¼Û¸ñÏà²îºÜ´ó£¬·ÖÁ÷²ßÂÔÒ²²»Í¬£¬³¬¹ý¸ß·À³ÐŵµÄÁ÷Á¿ºó£¬·ÀÓùʧЧ»òÕßÔÙ¼ÓÇ®£¬µ«¶¼ÓÐÐÔÄÜËðºÄºÍ¸±×÷Óá£

×âÓÃCDN·ÖɢĿ±êÁ÷Á¿£ºÊÐÃæÉϵÄCDNÌṩÉ̶¼ÊÇÒÔÁ÷Á¿ÎªÊշѱê×¼£¬Õâ¶ÔÓÚ¾­³£ÔâÊÜÁ÷Á¿¹¥»÷µÄÍøÕ¾À´Ëµ£¬·´¶øÒªÎª¹¥»÷Á÷Á¿Âòµ¥£¬Õâ×ÅʵÈÃÈË¿ÞЦ²»µÃ¡£

ÎÞÂÛÊDzɹºµÄÓ²¼þ³É±¾ºÍ¸ß·À×ÊÔ´»¹ÊÇCDN¼ÓËÙ£¬¶¼³É±¾°º¹ó£¬ÏÐʱ×ÊÔ´ÀûÓÃÂʵͣ¬¹¥»÷¸ß·åÊ±Ãæ¶ÔÓÐ×éÖ¯ÓйæÄ£µÄÁ÷Á¿Ê±ÓÖ×½½ó¼ûÖ⣬»¹°éÓи±×÷Ó㨲μûÂÌÃ˺ڶ´·À»ðǽµÄÔ­Àí£©£¬²¢·Ç³¤¾ÃÖ®¼Æ¡£

´¦ÓÚÈõÊÆµÄ±»´ò»÷·½

×ÛÉÏËùÊö£¬ÎÒÃÇÎÞÂÛ×öÄĸö¾ñÔñ¶¼ºÜÍ´¿à¡£

ÎÒÃǸú·¢Æð¹¥»÷µÄÈËÓйý³¤´ï½üÒ»ÄêµÄ½»Á÷£¬Ä¿Ç°Á˽⵽ÕâÊÇÒ»¸ö·Ç³£ÍêÕûµÄ²úÒµÁ´£¨ÉÏÓÎÈËÔ±ÔçÒÑÉí¾Óº£Í⣬Զ³ÌÒ£¿ØÖ¸»ÓÐж¯£¬¸ù±¾ÎÞ·¨²é´¦£©£¬ËûÃÇÊÖÉÏ¿ØÖÆÁË´óÁ¿µÄ¹¥»÷×ÊÔ´£¬²¢ÇÒ¹¥»÷×ÊÔ´±¾Éí¾ÍÀ´×ÔÓÚIDC¡£¹¥»÷ÕßΪÁË¿ìËÙIJÀû£¬±¾ÉíҲϲ»¶ºÍÍÆ¼öÕâÖÖÖ±½ÓÁ˵±µÄ·½Ê½À´¶ÔÄ¿±ê½øÐдò»÷£¬ÔÚ·¢¶¯¹¥»÷ʱ£¬ËûÃÇÄܹ»µ÷¼¯µ½¶à¸öIDCµÄ´ø¿í×ÊÔ´À´¶ÔÄ¿±ê´ò»÷£¨ÕâÒ»ÏÖÏóÒ²ÕÛÉä³öÁ˵±Ç°¹úÄÚ²»¹æ·¶µÄIDC¹ÜÀí£©¡£

´ÓÕâÒ»½Ç¶ÈÀ´¿´£¬±»´ò»÷·½ÓÀÔ¶¶¼´¦ÓÚÈõÊÆµØÎ»£¬ÒÔÊÆµ¥Á¦±¡µÄ¼Ü¹¹ºÍ¼«ÆäÓÐÏÞµÄ×ÊÔ´£¬¸ù±¾ÎÞ·¨µÖ¿¹Ç¿´óµÄ¼¯Èº×ÊÔ´¹¥»÷¡£

ÎÒÃÇһֱ˼¿¼Ò»¸öÎÊÌ⣺Èç¹ûÎÒÃdzÖÐøÍ¶ÈëÕâЩ×ʽð£¬Î£»ú¹ýÈ¥»òÕßÈô¸ÉÄêºó£¬ÄܸøÎÒÃÇÁôÏÂЩʲô£¿Òò´Ë£¬ÎÒÃÇÌø³öÁ˵¥½Úµã·ÀÓùºÍ×âÓÃCDNµÄ˼·£¬×ÛºÏÉÏÊö·½°¸µÄÓŵ㣬ת¶ø×Ô½¨CDNµÄ·½°¸¡£

³¤¾ÃÖ®¼Æ£º×Ô½¨CDN

×Ô½¨CDNµÄºÃ´¦Óм¸¸ö·½Ã棺

1.ÅÔ·×öÁ÷Á¿ÇåÏ´£¨¶»¶»³¤ÔÚ±ðÈËÁ³ÉÏ×îºÃ£©

2.×ÊÔ´³ä·ÖÀûÓãºÎÞ¹¥»÷µÄʱºò£¬×ö·ÓɼÓËÙ£¬Óй¥»÷µÄʱºò£¬×ö½ÚµãÇл»£¨Ò»Îï¶àÓã©

3.Ëæ×ÅͶÈëµÄ×ʽðÔö¼Ó£¬·ÀÓùDDoS¹¥»÷µÄÄÜÁ¦ÔöÇ¿£¨³¤Ô¶¹æ»®£¬×Ê½ð»Ø±¨Âʸߣ©

ÓйØ×Ô½¨CDN¾ßÌ彨ÉèµÄ˼·ÈçºÎ£¬³É±¾¶àÉÙ£¬ÎÒÃÇ»áÔÚϵÁеÄÏÂһƪÎÄÕÂÖнøÐнéÉÜ¡£

×Ô½¨CDN·ÀÓùDDoS£¨2£©£º¼Ü¹¹Éè¼Æ¡¢³É±¾Ó벿Êðϸ½Ú

ÔÚ±¾ÏµÁеĵÚһƪÎÄÕÂÖУ¬ÎÒÃǽéÉÜÁËÎÒÃǿͷþϵͳÓöµ½DDoS¹¥»÷µÄÇé¿ö£¬ÒÔ¼°ÎÒÃÇΪʲô¾ö¶¨²ÉÓÃ×Ô½¨CDNµÄ·½Ê½À´½â¾öÕâ¸öÎÊÌâµÄÔ­Òò¡£

ÏÂÃæ£¬ÎÒÃǽ«½éÉÜ×Ô½¨CDNµÄ¾ßÌ彨Éè¹æ»®£¬Ö÷Òª´ÓÒÔϼ¸¸ö·½Ãæ½øÐп¼Á¿£ºÓ²¼þ³É±¾¡¢´ø¿í³É±¾¡¢¼Ü¹¹Éè¼Æ¡¢Êµ¼Ê²¿Êð¡£

Ó²¼þ³É±¾

ÔÚÓ²¼þÉÏ£¬ÎÒÃÇÑ¡Ð͵ÄÐèÇóÊÇÔÚ1UµÄ»ù´¡ÉϾßÓÐÇ¿¾¢µÄÐÔÄÜ£¬Í¬Ê±ÐÔ¼Û±ÈÒª¸ß¡£

ÎÒÃÇÑ¡ÔñÁË£¨Ç¿Ñõ£©Ë«×ÓÐÇ·þÎñÆ÷£¬ÆäÓ²¼þ¹æ¸ñΪ£º1U»úÉí+Ö§³Ö˫·ÖÁÇ¿CPU+×î´óÖ§³Ö48GÄÚ´æ+˫ǧÕ×Íø¿Úx2+H3C S1208°Ë¿ÚǧÕ×£¬ÌṩÈýÄêÖʱ£·þÎñ£¬×ܼÛÔ¼1.5Íò¡£

´ø¿í³É±¾

µ¥Ïß»ú·¿µÄ»ú·¿ºÍ´ø¿í×ÊÔ´£¬ÓÉÓÚ²»ÐèÒª¾­¹ýµÚÈý·½À­Ïß´éºÏ£¬Ö±½Ó´ÓÔËÓª´úÀíÉ̹ºÂò£¬Òò´ËÑ¡ÔñÓàµØ´ó£¬ÐԼ۱ȸߡ£ÒÔ×âÓõçÐÅ¡¢ÁªÍ¨µ¥Ïß×ÊԴΪÀý£¬Ã¿ÌõÏß¶ÀÏí100M´ø¿í£¬Ìṩ8¸öIP£¬ÓÐЩ»ú·¿×Ô´øÓ²·À£¬Äܹ»·ÀÓù5G-10GÁ÷Á¿¡£

ƽ¾ù·ÑÓã¬Ã¿¸ö½Úµã´ø¿í³É±¾»ù±¾ÔÚ1.6~2.5Íò/Äê¡£

¼Ü¹¹Éè¼Æ

CDN¼Ü¹¹ÉÏÒª³ä·ÖÌåÏÖ³ö¿¹¹¥»÷ÄÜÁ¦ºÍÁé»îÓ¦±äµÄÔ­Ôò¡£Òò´Ë£¬ÎÒÃǽ«CDN½Úµã·Ö½â³É·´Ïò´úÀí+»º´æ¼ÓËÙ+¹¥»÷·ÀÓùÕâÈý¸ö²»Í¬²ã´ÎµÄ¹¦Äܽṹ¡£

1.·´Ïò´úÀí¹¦ÄÜ£¨×÷ÓãºÂ·ÓɼÓËÙ£¬Òþ²ØÖ÷½Úµã£¬¸ºÔؾùºâ£©

2.»º´æ¼ÓËÙ¹¦ÄÜ£¨×÷Ó㺾²Ì¬ÍÆËÍ£¬½ÚÊ¡ºó¶ËÖ÷½Úµã´ø¿í£©

3.¹¥»÷·ÀÓù¹¦ÄÜ£¨×÷Ó㺿ìËÙ½âÎö£¬Æ¥Åä¹ýÂ˶ñÒâ¹¥»÷£©

¿ªÔ´ÊÀ½çÀïÄܹ»µ£µ±·´Ïò´úÀí¼°»º´æµÄÈí¼þ²»ÉÙ£¬¶øÇÒ¸÷ÓÐÓÅÁÓ¡£×÷Ϊ¼Ü¹¹Ê¦£¬Òª¿¼ÂÇÈçºÎÑ¡ÐÍ£¬ÎÒÃÇ´ÓÐÔÄÜ¡¢¹¦ÄÜ¡¢ÅäÖÃÉÏÀ´½øÐбȽÏɸѡ¡£

ÎÒÃǶÔÕâÈý²ã¹¦Äܽṹ·Ö±ð½øÐÐÁ˲âÊÔµ÷Óż°Éú²úÏßµÄʵ¼ù¼ìÑ飬´ÓÒÔÏ·½ÃæÆÀ¹À£º

1.HTTP·ÀÓùÐÔÄÜ£ºHAProxyÔÚÓ¦¶Ô´óÁ÷Á¿CC¹¥»÷ʱ£¬×öÕýÔòÆ¥Åä¼°Í·²¿¹ýÂËʱ£¬CPUÏûºÄÖ»Õ¼10%~20%¡£ÆäËüÈí¼þ¾ù¿ñÕ¼CPU×ÊÔ´Ô¼90%ÒÔÉÏ£¬ÈÝÒ׳ɯ¿¾±µ¼ÖÂÕû¸öϵͳÎÞÏìÓ¦¡£

2.·´Ïò´úÀíÐÔÄÜ£ºµ¥´¿×ª·¢Ð§ÂÊÒÔÄڴ滺´æÐ͵ÄVarnishÐÔÄÜ×îÇ¿£¬ATSºÍNginx´ÎÖ®£¬¿¼ÂÇ´óÈÝÁ¿»º´æÒòËØ£¬ATSÒ²ÊǸö²»´íµÄÑ¡Ôñ£¬µ«ÎĵµÈ±·¦£¬ÐèÒª³ÖÐø¹Ø×¢¡£NginxÊÇרÃÅÕë¶ÔC10KµÄ²úÎÐÔÄܲ»´í£¬ÅäºÏÖÚ¶à²å¼þ£¬¸ÄÔìÐÔºÜÇ¿¡£

3.¹ýÂ˹æÔòµÄ¿ÉÅäÖÃÐÔ£ºHAProxy£¬ATS£¬Squid¾ùÖ§³Ö¹æÔòÎļþ¶ÁÈ¡¡¢ACL¶¨ÖƺÍÈȼÓÔØ¡¢ÈÈÆô¶¯¡£NginxÔò²»Ö§³ÖÍⲿÎļþÕýÔòÆ¥Å䣬ÂÔ²îÒ»µã£¬µ«¿ÉËÜÐÔÇ¿¡£

Òò´Ë£¬×ÛºÏÉÏÊö¿¼ÂÇ£¬×îÖÕÎÒÃDzÉÓõļܹ¹ÊÇHAProxy+Varnish/ATS/NginxµÄ×éºÏ£¬¼´·ÀÓùÐÍ·´Ïò´úÀí»º´æ·½°¸£¬¹¦ÄܽÇÉ«ÈçÏ£º

1.Ç°ÃæÓÉHAProxyÈ«Á¦¸ºÔ𶯾²×ÊÔ´·ÖÀ룬ʵÏֻỰճÖÍ£¬½Úµã¸ºÔؾùºâ£¬¹ÊÕÏ×ªÒÆ£¬Óöµ½Î£¼±Ê±³Ðµ£»ùÓÚHttpЭÒéµÄCCÀàÐ͹¥»÷·ÀÓù¡£

2.ºóÃæÎª¿É²å°ÎÌæ»»µÄ·´Ïò´úÀí»º´æÒýÇæ£º¸ù¾ÝÉú²úÏßÉϵÄʵ¼ÊÓ¦Óó¡¾°¼°»º´æ¶ÔÏóµÄÈÝÁ¿À´¾ö¶¨Ê¹ÓÃÄÚ´æÐ͵Ävarnish»òÕßÊÇ´ÅÅÌÐ͵Äats£¬Èç¹ûÐèÒª¶¨Öƹ¦ÄܺÜÇ¿£¨·ÀµÁÁ´£©µÄ·´Ïò´úÀíÈçNginx+plugins¡£

Õâ¸ö×éºÏ×î´óµÄÌØµãÊÇ£º

l.Ö§³ÖÍⲿ¹ýÂ˹æÔòµÄ¶ÁÈ¡£¬ÓÈÆäÊǹؼü×Ö·û´®ÎÞÐèתÒ壬¿ÉÖ±½Ó×·¼Óµ½ÎļþÖС£

2.Ö§³ÖÅäÖÃÎļþÈȼÓÔØÉúЧ£¬¶¼Ö§³Öreload£¬·þÎñƽ»¬ÉúЧ¡£

3.¿É²å°ÎʽµÄ»º´æ×é¼þÁé»îÓ¦¶Ô¸÷ÖÖÒµÎñÐèÇó¡£

4.²¿Êð¼òµ¥£¬½ÚµãʧЧ/ÉúЧÇл»·½±ã¡£

LVSȱϯ£ºÎªÊ²Ã´ÕâÀïûÓÐÌá¼°LVS£¬ÒòΪLVSÊǸöÖØÁ¿¼¶¡¢¸ßЧÎȶ¨µÄËIJãת·¢£¬²»ÄÜ×÷Æß²ãHTTPЭÒéµÄʶ±ð£¬µ«ÍêÈ«¿ÉÒÔ¼ÜÉèÔÚÆß²ã֮ǰ¡£ËùÒÔ£¬LVSµÄʹÓò¢²»»áÓ°ÏìÍøÂç½á¹¹£¬ºóÐøÈÔÈ»¿ÉÒÔÏëÉϾÍÉÏ£¬Ö»ÊÇǰÌáÒª¼æ¹Ëµ½LVSµÄµ¥µã¹ÊÕÏ¡£

ʵ¼Ê²¿Êð

×îÖÕÎÒÃÇÔÚÖ÷½ÚµãÖÜΧһ¹²²¿ÊðÁË8¸öCDN½Úµã£¨½ÚµãÊýÁ¿¸ù¾Ý×ÔÉí¹«Ë¾ÊµÁ¦¼°Êµ¼ÊÉú²ú»·¾³ÒªÇó¶øÁé»îµ÷Õû£¬´ËÊý×Ö½ö×÷²Î¿¼£©£¬ÕâЩ½ÚµãÓÖ°´ÕÕµØÓò»®·Ö³ÉÁËËĸö´óÇø£º±±·½£¨ÒÔɽ¶«£¬ºÓ±±ÎªÖ÷£©¡¢Î÷ÄÏ£¨ÒÔËÄ´¨ÎªÖ÷£©¡¢»ª¶«£¨ÒÔÄþ²¨£¬¼ÎÐËΪÖ÷£© »ªÄÏ£¨ÒÔ¸£½¨£¬ºþÄÏΪÖ÷ £©¼æ¹ËÈ«¹ú¸÷¸öÊ¡·Ý¡£

×ÜÌå³É±¾Çé¿ö

8¸öµ¥Ïß¼ÓËٽڵ㣬ÿ¸ö½Úµã100Mx8£¬8̨˫×ÓÐÇ·þÎñÆ÷£¬×ܹ²Í¶×ÊÔ¼30W£¨ºóÐø·ÑÓÃÖ»¿¼ÂÇ´ø¿íÖ§³ö£¬Ô¼15W/Ä꣩£¬ÎÒÃÇÓ¦¼±²¦¿îΪ10W£¬Ã¿¸öÔÂCDNÔ¤ËãΪ2W¡£

ÏîÄ¿½ø¶È°²ÅÅ£º

1¡«4¸öÔÂ×¥½ø¶È£ºÌصãÊÇ¿ìËÙ²¿µã¡£ÕâÀïÓиö¾÷ÇÏ£¬Ç°ÆÚ¿ÉÒÔÏȸúIDC°´Ô»òÕß¼¾¶ÈǩԼ£¬È»ºóͨ¹ý¼à¿Ø¿´Á¬ÐøµÄ½ÚµãÖÊÁ¿£¬Èç¹û½ÚµãÖÊÁ¿²»¼Ñ£¬¸ü»»ÌṩÉÌ£¬ÕâÑùËðʧ²»»áÌ«´ó£¬Èç¹û½ÚµãÖÊÁ¿ºÃ£¬¾Í°ëÄ긶»òÕßÄ긶£¬ÕâÑù¾Í¿ÉÒÔ±£Ö¤ÖÊÁ¿ºÍÐÔ¼Û±È×î¸ß£»

5¡«8¸öÔÂΪÍêÉÆÆÚ£º¸ù¾ÝÔ¤Ë㣬ÓнÚ×àµÄ¼Óµã£¬¼Ó´ø¿í£¬±£Ö¤´ø¿íµÄÈßÓà¶È£»

8¸öÔÂÒÔºóΪÎȶ¨ÆÚ£º¸ù¾Ýʵ¼ÊÇé¿ö±£Ö¤½ÚµãµÄ×î´ó¿ÉÓÃÐÔ£¬Í¬Ê±Ò²ÌáÉýÁËÕûÌå·ÀÓùÄÜÁ¦¡£

ÈçºÎ×ö·À»¤²ßÂÔ

¿ªÆôHAProxyµÄhttplog¹¦ÄÜ£¬¼Ç¼ÈÕÖ¾¡£

HAProxyµÄÅäÖòßÂÔ£º

global
nbproc 24
pidfile /var/run/haproxy.pid
daemon
quiet
user nobody
group nobody
chroot /opt/haproxy
spread-checks 2

defaults
log 127.0.0.1 local5
mode http
option forwardfor
option httplog
option dontlognull
option nolinger # reduce FIN_WAIT1
option redispatch
retries 3
option http-pretend-keepalive
option http-server-close
option accept-invalid-http-request
timeout client 15s
timeout connect 15s
timeout server 15s
timeout http-keep-alive 15s
timeout http-request 15s

stats enable
stats uri /stats
stats realm 53KF\ Proxy\ Status
stats refresh 60s
stats auth admin:adminxxx

listen Web_FB 0.0.0.0:80
option httpchk GET /alive.php HTTP/1.0

acl invalid_referer hdr_sub(referer) -i -f /opt/haproxy/etc/bad_ref.conf
acl invalid_url url_sub -i -f /opt/haproxy/etc/bad_url.conf
acl invalid_methods method -i -f /opt/haproxy/etc/bad_method.conf
block if invalid_referer || invalid_url || invalid_methods

acl dyn_host hdr(host) -i -f /opt/haproxy/etc/notcache_host.conf
acl static_req path_end -i -f /opt/haproxy/etc/allow_cache_file.conf
use_backend img_srv if static_req !dyn_host

# acl shaohy
acl geek hdr_dom(host) -i 17geek.com
use_backend geek if geek

# backend shaohy
backend geek
mode http
balance source
cookie SESSION_COOKIE insert indirect nocache
option tcpka
server geek_1 127.0.0.1:81 cookie geek_1 maxconn 10000 weight 8

backend img_srv
mode http
option tcpka
server img_srv 127.0.0.1:88 maxconn 30000 weight 8

VarnishµÄÅäÖòßÂÔ£º

backend h_17geek_com_1 {        
.host="127.0.0.1";
.port="81";
.connect_timeout=300s;
.first_byte_timeout=300s;
.between_bytes_timeout=300s;
}

director geek srv {
{ .backend=h_17geek_com_1; .weight=3;}
}

sub vcl_recv {
if (req.http.host~"^(www).?17geek.com$"){
set req.backend=geek_srv;
if (req.request != "GET" && req.request != "HEAD") {
return (pipe);
}
if(req.url ~ "\.(php|jsp)($|\?)") {
return (pass);
}
else {
return (lookup);
}
}
}

¶ÔÓÚCCÀàÐ͵ÄDDoS¹¥»÷£¬Í¨¹ýµÚһƪµ±ÖнéÉÜµÄ¼à¿ØÒì³£Á÷Á¿µÄ·½·¨ÒÀÈ»ÊÊÓ㬶øÇÒÓÅÊÆ¸üÃ÷ÏÔ£¬ÒòΪ£º

1.½Úµã¸÷×Գе£ÏàÓ¦µÄÈÕÖ¾¼Ç¼£¬·ÖÎöÈÕÖ¾µÄϵͳ¿ªÏú£¬·¢ÏÖÒì³£ÇëÇóºóÖ±½ÓÔÚhaproxyǰ¶Ë×öACL¹æÔò ¹ýÂË£¬Òò´Ë£¬¹¥»÷ѹÁ¦²»»á´«µÝ¸øºó¶Ë·þÎñÆ÷£¬±£Ö¤ºó¶Ë°²È«¡£

2.½ÚµãÊܵ½µÄ¹¥»÷Á÷Á¿¹ý´ó£¬»ú·¿¿ÉÒÔÀ­ºÚIP»òÕßÒýÁ÷£¬ºó¶ËÖÇÄÜDNS»á×Ô¶¯°ÑÕâ¸ö½ÚµãÌÞ³ý£¬ºóÐøÇëÇó²»ÒªÍ¨¹ý´Ë½Úµã¡£

ÔÚ±¾ÏµÁеÄÏÂһƪÎÄÕÂÖУ¬ÎÒÃÇ»á½éÉÜÕâ¸öCDN¼Ü¹¹µÄһЩºóÐø¸Ä½ø¹¤×÷£¬°üÀ¨ÖÇÄÜDNS¡¢´ó¹æÄ£ÈÕÖ¾·ÖÎö¡¢ÀûÓÃOpenCDN¸ÄÉÆºǫ́¹ÜÀíµÈ¡£

×Ô½¨CDN·ÀÓùDDoS£¨3£©£º¼Ü¹¹µÄºóÐø¸Ä½ø

ÔÚ±¾ÏµÁеĵÚһƪÎÄÕÂÖУ¬ÎÒÃǽéÉÜÁËÎÒÃǿͷþϵͳÓöµ½DDoS¹¥»÷µÄÇé¿ö£¬ÒÔ¼°ÎÒÃÇΪʲô¾ö¶¨²ÉÓÃ×Ô½¨CDNµÄ·½Ê½À´½â¾öÕâ¸öÎÊÌâµÄÔ­Òò¡£

Ö®ºó£¬ÎÒÃǽéÉÜÁË×Ô½¨CDNµÄ¾ßÌ彨Éè¹æ»®£¬Ö÷Òª´ÓÒÔϼ¸¸ö·½Ãæ½øÐп¼Á¿£ºÓ²¼þ³É±¾¡¢´ø¿í³É±¾¡¢¼Ü¹¹Éè¼Æ¡¢Êµ¼Ê²¿Êð¡£

±¾ÎÄÊÇ¡¶×Ô½¨CDN·ÀÓùDDoS¡·ÏµÁеĵÚÈýƪ£¬½éÉÜCDN¼Ü¹¹µÄºóÐø¸Ä½ø¡£ºóÐø¸Ä½øÖ÷Òª°üÀ¨Èý¸ö·½Ã棺DNSÖÇÄܽâÎö+ÂÖѯ+´æ»î¼à²â£¬¼¯ÖÐʽÈÕÖ¾·ÖÎö+¹¥»÷·ÀÓù£¬ÒÔ¼°¶à½ÚµãCDNµÄ¿ìËÙ²¿Êð+ͼÐλ¯¹ÜÀí¡£

1¡¢DNSÖÇÄܽâÎö+ÂÖѯ+´æ»î¼à²â

A. ²¿ÊðÖÇÄÜDNS¾Í½üÆ¥ÅäCDN½Úµã

ÎÒÃÇ×Ô½¨CDNµÄÁíÍâÒ»¸öÄ¿µÄÊÇ×ö·ÃÎÊ·¾¶ÓÅ»¯£¬ÒòΪÕâЩ¼ÓËÙ½ÚµãÊÇÎÒÃǾ«ÐÄÌôѡ֮ºó²¿ÊðµÄ£¬ÎÞÂÛÊÇ´ø¿íÖÊÁ¿¡¢»ú·¿»·¾³¡¢°²È«·çÏÕµÈÖ¸±ê¾ùÄÜÂú×ã¿É¿¿¿É¿ØµÄÐèÇó¡£

Òò´Ëµ±²¿ÊðÍê¶à¸öCDN½Úµãºó£¬ÎªÊ¹ÕâЩ½ÚµãЭͬÔË×÷£¬Í¬Ê±ÓÅ»¯Óû§µÄ·ÃÎÊ·¾¶£¬ÎÒÃÇ¿ÉÒÔͨ¹ýÅäÖÃBindµÄViewÊÓͼ°Ñ·Ã¿ÍIPÖ¸¶¨µ½ÏàÓ¦µÄCDN½Úµã£¬Ê¹µÃ·Ã¿ÍÄܹ»¸ù¾Ý×Ô¼ºËùÔÚµÄÇøÓòºÍÏß·ÀàÐÍ£¬¾Í½ü´ÓCDN½ÚµãÉÏ»ñÈ¡Ò³ÃæÄÚÈÝ£¬´Ó¶øÓÅ»¯·Ã¿ÍµÄ·ÓÉ¡£

B. DNS×Ô¶¯ÂÖѯ+¹ÊÕϼà²â

ÎÒÃÇ¿ÉÒÔÀûÓÃDNSÂÖѯÀ´ÎªÍøÕ¾½øÐзÖÁ÷¸ºÔØ¡£Èç¹ûÌõ¼þ³äÔ££¬¿ÉÒÔÔÚ¸÷¸ö´óÇøÄÚ²¿ÊðÈßÓàµÄCDN½Úµã£¬ÕâÑù¼ÈÄÜ»º½âij¸öÇøÓòÄÚµ¥Ò»½ÚµãµÄ¸ºÔØ£¬Í¬Ê±ÄÜΪÕâ¸ö½Úµã×÷»¥±¸£¬µ±Õâ¸öÇøÄÚµÄCDN½ÚµãÒò¹ÊÕÏʧЧ֮ºó£¬µ÷¶È»úÖÆÄÜÔÚ×î¿ìʱ¼äÄÚ½«¹ÊÕϽڵãµÄÁ÷Á¿Ç£ÒýÖÁµ±Ç°¿ÉÓýڵ㣬ʵÏÖ¶¯Ì¬µÄÌÞ³ý¸Ã½Úµã£¬´Ó¶ø²»Ó°Ïì·Ã¿ÍµÄÕý³£ÇëÇó¡£

ʵÏÖDNSÂÖѯֻÐèÒªÔÚBindÖÐΪͬһÓòÃûÌí¼Ó¶à¸öA¼Ç¼¼´¿É¡£Bind ViewÊÓͼ¹¦ÄÜºÍ½Úµã´æ»î¼ì²éµÄÏà¹Ø¼¼ÊõÒѾ­Ï൱³ÉÊ죬ÏàÓ¦µÄ¼¼ÊõÎĵµÒ²±È½Ï¶àÁË£¬¿ÉÒԲο¼¡¶Ê¹ÓÃBind¹¹½¨¸ß¿ÉÓÃÖÇÄÜDNS·þÎñÆ÷¡·£¬ÕâÀïÎÒÃǾͲ»ÔÙÀÛÊö¡£

C. Bind View IP·Ö¼ð½Å±¾

ÎÒÃÇĿǰ±àдµÄ½Å±¾¿ÉÒÔ°ïæ¿ìËÙ·Ö¼ð³öµçÐÅ¡¢ÁªÍ¨µÄÏß·»¹°üÀ¨»ª¶«¡¢»ªÄÏ¡¢»ª±±ºÍÎ÷²¿ËĸöµØÇøµÄIP·¶Î§£¬ÓÐÐËȤµÄͬѧ¿ÉÒÔÊÔÓÃһϡ£

#  Õâ¸ö½Å±¾ÊÇ´ÓApnicÏÂÔØÊôÓÚÖйúµÄIPÁÐ±í£¬È»ºó°ÑÊôÓÚÁªÍ¨£¬µçÐż°ÆäËüµÄIP½øÐйéÀà  
get_apnic(){
FILE=$PWD/ip_apnic
CNC_FILE=$PWD/CNC
CTC_FILE=$PWD/CTC
TMP=/dev/shm/ip.tmp
rm -f $FILE
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE

grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt
do
echo $ip:$cnt
mask=$(cat << EOF | bc | tail -1

pow=32;
define log2(x) {
if (x<=1) return (pow);
pow--;
return(log2(x/2));
}

log2($cnt)
EOF
)

whois $ip@whois.apnic.net > $TMP.tmp
sed -n '/^inetnum/,/source/p' $TMP.tmp | awk '(/mnt-/ || /netname/)' > $TMP
NETNAME=`grep ^netname $TMP | sed -e 's/.*: \(.*\)/\1/g' | sed -e 's/-.*//g'|sed 's: ::g'`

egrep -qi "(CNC|UNICOM|WASU|NBIP|CERNET|CHINAGBN|CHINACOMM|FibrLINK|BGCTVNET|DXTNET|CRTC)" $TMP
if [ $? = 0 ];then
echo $ip/$mask >> $CNC_FILE
else
egrep -qi "(CHINATELECOM|CHINANET)" $TMP
if [ $? = 0 ];then
echo $ip/$mask >> $CTC_FILE
else
sed -n '/^route/,/source/p' $TMP.tmp | awk '(/mnt-/ || /netname/)' > $TMP
egrep -qi "(CNC|UNICOM|WASU|NBIP|CERNET|CHINAGBN|CHINACOMM|FibrLINK|BGCTVNET|DXTNET|CRTC)" $TMP
if [ $? = 0 ];then
echo $ip/$mask >> $CNC_FILE
else
egrep -qi "(CHINATELECOM|CHINANET)" $TMP
if [ $? = 0 ];then
echo $ip/$mask >> $CTC_FILE
else
echo "$ip/$mask $NETNAME" >> $PWD/OTHER
fi
fi
fi
fi
done
rm -rf $TMP $TMP.tmp
}

# ´ÓwhoisÐÅÏ¢ÖÐÌáÈ¡addressµÇ¼ÇÈ˵ØÖ·ÐÅÏ¢£¬´Ó¶øÅжÏÔÚÄĸöÊ¡·Ý
gen_zone(){
FILE=$2
[ ! -s $FILE ] && echo "$FILE file not found." && exit 0

rm -rf $FILE.zone
while read LINE;do
LINE=`echo "$LINE"|awk '{print $1}'`
echo "$LINE @ "
echo -n "$LINE @ " >> $FILE.zone
whois $LINE|egrep "address"|xargs echo >> $FILE.zone
sleep $TIME
done < $FILE
}

# ·Ö±ðÌôÑ¡³ö»ª¶«£¬»ªÄÏ£¬»ª±±£¬Î÷²¿ËÄ´óÇøµÄIPµØÖ·Áбí
gen_area(){
FILE=$2
[ ! -s $FILE.zone ] && echo "$FILE.zone file not found." && exit 0

STRING="none"
echo $FILE|egrep -i -q "cnc"
[ $? = 0 ] && STRING="cnc"
echo $FILE|egrep -i -q "ctc"
[ $? = 0 ] && STRING="ctc"
echo $FILE|egrep -i -q "other"
[ $? = 0 ] && STRING="other"

[ $STRING = "none" ] && echo "Not cnc or ctc file" && exit 0

cp -a $FILE.zone $FILE.tmp

egrep -i "$HD_STR" $FILE.tmp > $HD_FILE.$STRING
egrep -i -v "$HD_STR" $FILE.tmp > aaa
mv aaa $FILE.tmp

egrep -i "$HN_STR" $FILE.tmp > $HN_FILE.$STRING
egrep -i -v "$HN_STR" $FILE.tmp > aaa
mv aaa $FILE.tmp

egrep -i "$XI_STR" $FILE.tmp > $XI_FILE.$STRING
egrep -i -v "$XI_STR" $FILE.tmp > aaa
mv aaa $FILE.tmp

egrep -i "$HB_STR" $FILE.tmp > $HB_FILE.$STRING
egrep -i -v "$HB_STR" $FILE.tmp > aaa
mv aaa $FILE.tmp

grep ^[0-9] $FILE.tmp |awk '{print $1}' >> $HD_FILE.$STRING
sed -r -i 's#@.*##g' *.$STRING

rm -rf $FILE.tmp
}

2¡¢¼¯ÖÐʽÈÕÖ¾·ÖÎö+¹¥»÷·ÀÓù

CDN×÷ÎªÍøÕ¾µÄǰÖýڵ㣬ʵʱ¼Ç¼×ÅËùÓзÿ͵ķÃÎÊÐÐΪ¡£¿ÉÒÔ˵£¬ÈÕÖ¾µ±ÖÐÔ̲ØÁ˷ḻµÄ°ÂÃØ¡£¾ÝÁ˽⣬´ó²¿·ÖÍøÕ¾²¢Ã»ÓÐ¶ÔÆä·ÃÎÊÈÕÖ¾½øÐкܺõÄÀûÓ㬽ö½öÊÇ¶ÔÆä×öÁ˹鵵±¸·Ý¡£ÈçÄÜÀûÓúÃÕâЩ·ÃÎÊÈÕÖ¾£¬²¢¶ÔÆä½øÐÐÉî¶ÈµÄ·ÖÎöºÍÍÚ¾ò£¬¶ÔÓÚÁ˽âÍøÕ¾µÄÔËÐÐ×´¿ö¡¢¸ÐÖªÒµÎñ²ãÃæµÄһЩÒì³£»î¶¯£¬Äܹ»´øÀ´¼«´óµÄ°ïÖú¡£ÓÈÆäÊǵ±ÃæÁÙDDoS¹¥»÷ʱ£¬Äܹ»Ìṩ³ö×ã¹»µÄÒÀ¾ÝÀ´Çø·Ö¶ñÒâµÄIP¡£

Çø·Ö¶ñÒâ¹¥»÷µÄÖ÷ÒªÒÀ¾ÝÀàÐÍÓУº

1.ij¸öIP·¢Æð´óÁ¿µÄ²¢·¢ÇëÇó

2.´óÁ¿Á¬ÐøµÄIP¶Î·¢ÆðÇëÇó

3.´óÁ¿ÎÞ¹æÔòµÄIP·¢ÆðÇëÇó

ĿǰÎÒÃǶÔHAProxyµÄÈÕÖ¾·ÖÎö½ö×÷ÓÃÓÚµ¥½Úµã£¬ÎÒÃÇÔÚʵ¼ÊÓ¦Óó¡¾°ÖУ¬ÊÇ»ùÓÚµ¥Î»Ê±¼ä¶ÎµÄÈÕÖ¾½Ø¶Ï£¬°ÑÈÕ־дÈëµ½/dev/shmÄÚ´æÖУ¬Ê¹ÓÃÁËͨÓõÄshell£¬awk£¬sedÓïÑÔÀ´×öÐÐΪ·ÖÎö£¬ÕâÑù×öµÄºÃ´¦ÊDZÜÃâÁË´ÅÅÌIO¿ªÏúµÄ¶Ì°å¡£È±µãÊÇ£¬ÈÕÖ¾·ÖÎöÐÐΪ±È½Ï´Ö²Ú£¬·ÖÎöЧÂÊÓдýÓÚÌá¸ß¡£

A. ¶à½ÚµãCDN¼¯ÖÐʽÈÕÖ¾·ÖÎö+¹¥»÷×è¶Ï¼Ü¹¹

ÓÉÓÚ×÷ÓÃÓÚµ¥½ÚµãµÄÈÕÖ¾·ÖÎö¼Ü¹¹´æÔڽϴóµÄ¾ÖÏÞÐÔ£¬Ö÷ÒªÌåÏÖΪ£º

1.ÈÕ־ɢÂäÔÚ¸÷¸ö½Úµã£¬·ÖÎöʱºöÂÔÁËÆäËû½ÚµãµÄÊý¾Ý£¬ÎÞ·¨»ñϤȫ¾ÖµÄÇé¿ö

2.µ±·ÀÓù¹æÔòÆôÓú󣬽ö×÷ÓÃÓÚµ¥½Úµã£¬ÆäËû½ÚµãÒÀ¾ÉÃæÁÙ¸ÃÌØÐԵĹ¥»÷

3.µ¥½ÚµãµÄʵʱ·ÖÎöµ±ÃæÁÙ¹¥»÷ʱ£¬»áÕ¼Óýϴóϵͳ×ÊÔ´

Òò´ËÔÚ¶à½ÚµãCDN¼Ü¹¹Ï£¬ÈçÒª¼°Ê±¸ÐÖªµ½DDoS¹¥»÷²¢¶ÔÆä½øÐÐ×è¶Ï£¬¶øÇÒ»¹Òª¿¼ÂǾ¡¿ÉÄÜÉٵĿªÏúÓýڵãϵͳ×ÊÔ´£¬ÐèÒªÕ¾ÔÚÈ«¾Ö²ãÃæÀ´¼¯ÖзÖÎö¹¥»÷ÐÐΪ£¬²¢ÇÒÕë¶Ô·ÖÎöºóµÄ½á¹ûÕ¹¿ª¶à½ÚµãЭͬ´¦Àí·ÀÓù/×è¶Ï¹æÔò£¬À´Ó¦¶ÔDDoS¹¥»÷¡£

¶ÔÄÑµã½øÐÐÊáÀíºó£¬ÎÒÃÇ·¢ÏÖҪʵÏÖÕâÑùµÄÐèÇóÖ÷Òª½â¾öÈý¸öÎÊÌ⣺

»ã¼¯¶à¸öCDN½ÚµãµÄº£Á¿ÈÕÖ¾´æ´¢

Õë¶Ôº£Á¿ÈÕÖ¾µÄ¼¯ÖÐʽ·çÏÕ·ÖÎö

ЭͬÔË×÷µÄ¹¥»÷×è¶Ï»úÖÆ

¾ßÌå¼Ü¹¹£º

Nginx/HAProxy×÷Ϊ·ÀÓù¹¥»÷ϵͳµÄÖÕ¶Ë

½Úµã²úÉúµÄ·ÃÎÊÈÕ־ͨ¹ýsyslog´«Ë͵½×¨ÓõÄLogServer½øÐл㼯

רÓõÄLogServer×÷ΪÈÕÖ¾µÄ´æ´¢ºÍ·çÏÕ·ÖÎö¡¢×è¶Ï¹æÔòÍÆËÍ

a. HAProxy/Nginx×÷Ϊ·ÀÓù¹¥»÷ϵͳµÄÔØÌå

ÎÒÃÇÔÚÉÏһƪÎÄÕÂÖÐÒѾ­Ìáµ½¹ý£¬ÔÚCDN½Úµã¶Ë£¬ÎÒÃǽ¨ÒéÓÃHAProxy»òNginx×÷Ϊ·ÀÓùÐԵķ´Ïò´úÀí£¬Äܹ»Áé»îµÄÖÆ¶¨·ÀÓù¹¥»÷µÄACL¹ýÂ˹æÔò£¬²¢Äܹ»ÒÔÈȼÓÔØµÄ·½Ê½ÊµÊ±ÉúЧ¡£

b. ÈÕÖ¾´æ´¢½â¾ö˼·

Õâ¸ö»·½ÚÖ÷Òª°üº¬Á½¸ö²¿·Ö£¬Ò»ÊÇÓɽڵ㵽LogServerµÄÈÕÖ¾´«Ê䣬ÁíÒ»¸öÊÇLogServerÕâÒ»¶ËµÄÈÕÖ¾¼¯Öд洢¡£ÓÉCDN½Úµã²úÉúµÄÈÕÖ¾¿ÉÒÔͨ¹ý±¾µØÐ´ÈëPIPE + Rsyslog UDP´«ÊäµÄ·½Ê½½«ÈÕÖ¾»ã×ܵ½×¨ÓõÄLogServer£¬LogServerÊÕµ½ÈÕÖ¾Ö®ºó£¬°´ÕÕÓòÃû·ÖÀàµÄ·½Ê½½«ÈÕÖ¾´æ´¢ÔÚÒ»Æð¡£

¶ÔÓÚº£Á¿ÈÕÖ¾µÄ´æ´¢¿ÉÒÔÓÃHadoop×÷ÎªÔØÌ壬ÀûÓÃMap/ReduceËã·¨·Ö½âÈÕÖ¾£¬ÌáÉýɸѡЧÂÊ¡£¶Ô´ËÓÐÐËȤÉîÈëÁ˽âµÄͬѧ¿ÉÒԲο¼¿ªÔ´ÈÕ־ϵͳ±È½Ï¡£

c. ЭͬÔË×÷µÄ¹¥»÷×è¶Ï»úÖÆ

ÕâÀïÔòÊÇ×îΪ¹Ø¼üµÄÒ»¸ö»·½Ú£ºÎÒÃÇÕû¸ö¼Ü¹¹µÄÖØµãÔÚÓÚ¡°¿¹¹¥»÷¡±£¬¶øÎÒÃǾ­¹ýÇ°ÃæµÄ·ÖÎö£¬Õë¶Ô¶à½ÚµãCDNµÄ¹¥»÷·ÀÓù£¬×îΪ¸ßЧµÄ×ö·¨ÊÇ£ºÓÉרÓõÄLogServer½øÐм¯ÖÐʽ·ÖÎöÔËË㣬²¢½«ÔËËã½á¹ûÉú³É°²È«·À»¤²ßÂÔ£¬ÊµÊ±¶Ô½Óµ½¸÷¸öCDN½Úµã£¬Ð­Í¬´¦Àí·ÀÓù/×è¶Ï¹æÔò£¬ÒÔ´ËÀ´Ó¦¶ÔDDoS¹¥»÷¡£

ÄÇôÕâÀォ»á²úÉúÒÔϼ¸¸öÖ÷ÒªÎÊÌ⣺

²ÉÓÃʲôÑùµÄ½Å±¾ºÍ¹æÔòÀ´·ÖÎöÈÕÖ¾

·ÖÎöºóµÄ½á¹ûÈçºÎÐγÉHAProxy/IptablesµÄACL²ßÂÔ

Éú³ÉµÄACL²ßÂÔÈçºÎ×÷Óõ½È«¾ÖµÄCDN½Úµã£¬²¢ÐγÉÁª¶¯

¶Ô´ËÎÒÃǵÄÉè¼ÆË¼Â·ÈçÏ£º

µ±ÈÕÖ¾ÍêÕûµÄ´æ´¢ÔÚLogServerÖ®ºó£¬Ê¹Ó÷ÖÎö½Å±¾¶ÔÆä½øÐÐÌØÕ÷Æ¥Å䣬ÌáÈ¡³ö¶ñÒâ¹¥»÷µÄÀ´Ô´IPµØÖ·£¬½«ÕâЩIPµØÖ·Éú³ÉÏàÓ¦µÄHAProxy/IptablesµÄ×è¶Ï¹æÔò£¬²¢Ï·¢µ½È«¾ÖµÄCDN½Úµã¡£ÕâÀï¿ÉÒÔͨ¹ýÁ½ÖÖ·½Ê½À´½øÐУº

1.ͨ¹ý¿ª·¢×¨ÓõĽӿÚÓëIptables¡¢Nginx/HAProxy½øÐÐÁª¶¯

2.ͨ¹ýͳһÅäÖùÜÀí¹¤¾ßPuppetÍÆËÍÀ´ÊµÏÖ£¬LogServer×÷ΪÏûÏ¢µÄÍÆËͶËÓëÃüÁîÏ·¢Ö÷¿Ø¶Ë£¬¸÷¸öCDN½Úµã×÷Ϊ²ßÂԵĽÓÊÕ¶ËÓëÉúЧÃüÁîÖ´Ðжˣ¬ÔÚ½ÓÊÕÍê·À»¤²ßÂÔºó£¬×Ô¶¯¼ÓÈëACLÁÐ±í£¬Ö´ÐÐÈȼÓÔØµÄÃüÁî

B. ¸Ã¼Ü¹¹µÄÓÅÊÆ

ÕâÌ׼ܹ¹µÃÒÔʵÏÖÖ®ºó£¬ÏµÍ³µÄºáÏòÀ©Õ¹½«±äµÃ·Ç³£ÈÝÒ×£¬Äܸù¾Ý½ÚµãµÄÁ÷Á¿/×ÊÔ´¸ºÔØÇé¿ö£¬¶¯Ì¬µÄÌíÖûòÏÂÏßCDN½Úµã£¬ÎÞÐè¶ÔÔ´Õ¾µã½øÐÐÈκθ͝¡£

Äܹ»´ÓÈݵÄÓ¦¶ÔDDoS¹¥»÷£¬ÔÚ·ÖÉ¢¹¥»÷Á÷Á¿µÄͬʱ£¬Äܹ»×Ô¶¯×è¶Ï¹¥»÷À´Ô´¡£

²¢ÇÒ¶ÔÓÚÐµĹ¥»÷£¬Ö»ÒªÔÚijһվµã·¢ÏÖÒì³££¬¼´¿É¿ìËÙ±àÖÆÐ·À»¤¹æÔò£¬½«ÆÁ±Î´ëʩӦÓõ½ËùÓмÓÈëCDNµÄÕ¾µã£¬ÊµÏÖÈ«¾ÖµÄ°²È«·À»¤¡£

½«¸÷¸öCDN½ÚµãÉϵÄÈÕÖ¾½øÐлã×ÜÊÕ¼¯/·ÖÎö£¬Äܹ»»ñÈ¡µ½ËùÓÐÓû§ÏêϸµÄ·ÃÎÊÐÐΪ£¬Í¬Ê±¶ÔËùÓеķǷ¨·ÃÎÊÐÐΪ½øÐоù¼Ç¼ÔÚ°¸£¬Í¨¹ý±àÖÆÒµÎñ°²È«¹æÔò£¬¿ÉÌṩÊÂǰԤ¾¯¡¢Êºó×·×Ù¡£

3¡¢¶à½ÚµãCDNµÄ¿ìËÙ²¿ÊðÓëͼÐλ¯¹ÜÀí

¹ÜÀíºÍÔËάһÌ×CDNϵͳ¶ÔÓÚÈκÎ×éÖ¯À´½²¶¼ÊǸöºÜ´óµÄÌôÕ½£¬ÓÈÆäÊDz¿ÊðÁ˶àÇøÓò¶àÏß·µÄCDN¡£ÐèÒªËæÊ±ÕÆ¿ØCDN¼ÓËٵĽڵãÁÐ±í¡¢ÐèÒª¶¨ÒåÄÄÐ©ÍøÒ³ÔªËØ¿ÉÒÔ×÷Ϊ»º´æ¡¢ÐèÒª×öʲôÑùµÄACL²ßÂԵȵȣ¬ÕâЩ¶¼ÐèҪרҵµÄϵͳÔËάÈËÔ±À´ÅäÖÃʵÏÖ¡£

ͨ³£½ÏΪ³ÉÊìµÄ×ö·¨ÊÇͨ¹ýÖ÷¿Ø»ú£¬Ô¤ÏÈÅäÖúÃCDN¹æÔò £¬Í¨¹ýRsync°ÑÅäÖÃÎļþÍÆË͵½¸÷¸öCDN½ÚµãÖÐÈ¥¡£ºÜÏÔÈ»£¬ÕâÖÖ·½°¸ËäȻЧÂʸߣ¬µ«ÊǶÔCDN²¿ÊðÕß¾ßÓÐÒ»¶¨µÄÃż÷£¬¼ÓÉÏ·þÎñÆ÷µÄȨÏÞ¿ØÖÆÒªÇó·Ç³£Ñϸñ£¬Ò²²»ÀûÓÚÃæÏòÆäËü¹¤³Ìʦ×öÍÆ¹ã¡£

żȻµÄ»ú»á£¬ÎÒÃÇÓÐÐÒÔÚºÚ¿ÍÂíÀ­ËÉ´óÈü³õʶÁËOpenCDNÕâ¸ö»ñ½±×÷Æ·£¬Í¨¹ý»¥²¹ÕûºÏ£¬¸üÊÇÃÖ²¹ÁËÎÒÃÇÕâÌ×CDNÉϵÄǰ¶Ë¹ÜÀíµÄ²»×ã¡£Òò´Ë£¬¿ÉÒÔ¸úOpenCDNÕâ¸öÏîÄ¿×öºÜºÃµÄÉî¶ÈÕûºÏ£¬½µµÍÔËάºÍ¹ÜÀíÃż÷£¬Ô츣ÓÚ¸ü¶àµÄITÔËάµÄÓû§¡£

A. OpenCDNÖ÷Òª½â¾öʲôÎÊÌ⣿

OpenCDNÊÇÒ»Ì׿ìËÙ²¿ÊðCDN¼ÓËٵŤ¾ß£¬Õë¶ÔרÃÅÌṩCDN¼ÓËÙ·þÎñµÄÆóÒµ»ò¶Ô¶à½ÚµãCDN¼ÓËÙÓÐÐèÇóµÄÆóÒµÌṩһÌ×±ã½ÝµÄ¹ÜÀíÆ½Ì¨£¬¿É¶Ôÿһ¸ö½ÚµãµÄ״̬¡¢ÏµÍ³¸ºÔؽøÐÐʵʱ¼à²âÓëͳһ¹ÜÀí¡£OpenCDNÔ¤ÖÆÁ˶àÌ׳£Óûº´æ¹æÔò£¬Ö§³Ö¶àÖÖ¸´ÔÓµÄCDN»º´æ³¡¾°¡£ÕýÈçÆäÃû£¬OpenCDNÊÇÃâ·Ñ¿ªÔ´µÄ¡£

B. OpenCDNµ±Ç°ÊÇÔõô×öµÄ£¿

OpenCDNµÄÖ÷Ìå¼Ü¹¹¿É·ÖΪCDN¹ÜÀíÖÐÐĺÍCDN¼ÓËٽڵ㡣CDN¼ÓËÙ½Úµã¿ÉÒÔÓкܶà¸ö£¬ÔÚÊýÁ¿ÉÏûÓÐÈκÎÏÞÖÆ¡£Óû§¿ÉÒÔͨ¹ýOpenCDN¿ìËٵIJ¿Êð¶à¸öCDN¼ÓËٽڵ㣬²¢Í¨¹ýÒ»¸ö¹ÜÀíÖÐÐĽøÐм¯ÖÐʽµÄ¹ÜÀí¡£

Òò´ËOpenCDNÔÚÕâÀïÖ÷Òª×öÁËÁ½²¿·Ö¹¤×÷£¬Ò»Êǽ«CDN½ÚµãµÄ²¿Êð¹ý³ÌÒ»¼ü»¯£¬¶þÊÇͨ¹ýWebConsole¹¤¾ß½«ÕâЩCDN¼ÓËÙ½ÚµãͳһµÄ¹ÜÀíÆðÀ´¡£

C. OpenCDNδÀ´Òª×ö³öʲôÑù£¿´ïµ½ÔõôÑùµÄЧ¹û£¿

OpenCDN½«ÖÂÁ¦ÓÚΪ¶à½ÚµãCDN¼ÓËÙÓÐÐèÇóµÄÍøÕ¾£¬ÌṩһÌ×±ã½ÝµÄCDN¼ÓËÙ¹ÜÀíÆ½Ì¨£¬Äܹ»°´Ðè×Ô½¨CDN½Úµã£¬Áé»î¿ØÖƳɱ¾£¬Ìá¸ßÍøÕ¾ÏìÓ¦ËÙ¶È£¬ÇáËÉÓ¦¶ÔÍ»·¢Á÷Á¿¡£

ºóÐøÎÒÃǽ«ÔÚ´Ë»ù´¡ÉÏÕûºÏ¼ÓÈëÉÏÊöCDN·ÀÓù´óÁ÷Á¿DDoS¹¥»÷µÄ×éºÏ·½°¸¡£ÎÒÃǶÔÕâÌׯ½Ì¨×öÁË¿ªÔ´£¬Ï£ÍûÓиü¶àÓÐÐèÒªµÄÈËÄܹ»ÒÔ×îµÍµÄ³É±¾»ñÈ¡Ëü£¬Í¬Ê±Ò²Ï£Íûͨ¹ý¸ü¶àµÄ¿ª·¢Õß¼ÓÈë½øÀ´Ò»ÆðÍêÉÆËü¡£ËùνÈËÈËΪÎÒ£¬ÎÒΪÈËÈË¡£

D. OpenCDN½øÐÐ×Ô½¨CDNµÄÓÅÊÆ

Ê×ÏÈÊǽµµÍÁË»ñÈ¡CDNµÄ³É±¾£¬Í¬Ê±×îΪ¹Ø¼üµÄÊÇÌáÉýÁËCDN½ÚµãµÄÐÔÄÜ¡£¶Ô±È×âÓÃÉÌÒµCDN£¬ÎÒÃÇÎÞÐèÔÙΪ¹ºÂòÁ÷Á¿¶ø¼ÆËã³É±¾£¬Ðγɹ̶¨¿ªÏúµÄ×âÓÃģʽ¡£

²»¾ÖÏÞÓÚ½ÚµãµÄ½éÖÊ£¬ÎïÀí·þÎñÆ÷»òÕßVPS¾ù¿ÉÒÔÊÊÓ㬿ÉÀûÓò»Í¬·þÎñÉ̵ÄVPS¹¹½¨ÆðÒ»ÕŸ²¸ÇÈ«¹úÈ«ÍøµÄµÍ³É±¾CDN¼ÓËÙ¼¯Èº¡£

ÉÌÒµCDNµÄ½ÚµãÒª¹²Ïí¸ø¶à¸öÕ¾µãͬʱʹÓ㬶øÕâÒâζ׎ڵãµÄÓÐÏÞ×ÊÔ´£¨²¢·¢Êý£©½«ÔÚͬһʱ¼äÄÚ·ÖÏíʹÓ㬶ÔÓÚ´ø¿í/Á÷Á¿ÒªÇó½Ï¸ßµÄÓû§£¬±È½ÏÊʺÏ×Ô½¨µÄ¼Ü¹¹¡£

OpenCDNÊÊÓÃÓÚÄÄЩÓû§£¿

OpenCDNĿǰÀ´¿´£¬±È½ÏÊÊÓÃÓÚÐÐÒµ¾ºÕù±È½Ï´óµÄÍøÕ¾£ºÓÎÏ·Õ¾¡¢´¹Ö±µçÉÌ¡¢ÉçÇøÂÛ̳¡¢ÔÚÏßÊÓÆµ¡¢ÁÄÌì¡£

ÕâÐ©ÍøÕ¾µÄ¹²ÐÔÌØµã£ºÁ÷Á¿ÖÐÐ͹æÄ££¬¾ºÕù¼¤ÁÒ£¬¾­³£±»¹¥»÷£¬ÐÐÒµÀûÈó¸ß£¬Ô¸Ò⻨Ǯ¡£

×ܽá

ÖÁ´Ë£¬¡¶×Ô½¨CDN·ÀÓùDDoS¡·ÏµÁÐ±ã¸æÒ»¶ÎÂä¡£Èç¹ûÓÐÈκÎÒÉÎÊ£¬»¶Ó­¸úÎÒÃǽ»Á÷¡¢Ì½ÌÖ¡£

   
4067 ´Îä¯ÀÀ       29
 
Ïà¹ØÎÄÕÂ

iOSÓ¦Óð²È«¿ª·¢£¬Äã²»ÖªµÀµÄÄÇЩÊÂÊõ
Web°²È«Ö®SQL×¢Èë¹¥»÷
ÒÆ¶¯APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
´ÓGoogle±¸·Ý»¥ÁªÍø¿´¡°Êý¾Ý°²È«¡±
 
Ïà¹ØÎĵµ

web°²È«Éè¼ÆÓë·À»¤
»¥ÁªÍøº£Á¿ÄÚÈݰ²È«´¦Àí¼¼Êõ
ºÚ¿Í¹¥»÷Óë·À·¶¼¼Êõ
WEBºÚºÐ°²È«¼ì²â
 
Ïà¹Ø¿Î³Ì

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]

iOSÓ¦Óð²È«¿ª·¢
Web°²È«Ö®SQL×¢Èë¹¥»÷
APP°²È«ÔÚÉøÍ¸²âÊÔÖеÄÓ¦ÓÃ
³õ̽PHPµÄSQL×¢Èë¹¥»÷µÄ¼¼Êõ
´ÓGoogle±¸·Ý¿´¡°Êý¾Ý°²È«¡±

WEBÍøÕ¾ÓëÓ¦Óð²È«Ô­ÀíÓëʵ¼ù
webÓ¦Óð²È«¼Ü¹¹Éè¼Æ
´´½¨°²È«µÄJ2EE WebÓ¦ÓôúÂë
×¢²áÐÅÏ¢°²È«×¨ÒµÈËÔ±(CISP)
ÐÅÏ¢°²È«¹ÜÀí
ÐÅÏ¢°²È«ÎÊÌâÓë·À·¶

ÖйúÒøÐÐ ÐÅÏ¢°²È«¼¼Êõ¼°Éî¶È·ÀÓù
WebÓ¦Óð²È«¼Ü¹¹¡¢ÈëÇÖ¼ì²âÓë·À»¤
ij²ÆË°ÁìÓòÖªÃûIT·þÎñÉÌ Web°²È«²âÊÔ
ÆÕÈð¿Ë˹ web°²È«Éè¼Æ¡¢²âÊÔÓëÓÅ»¯
±±¾©ºÍÀûʱ ÐÔÄܺͰ²È«ÐÔ²âÊÔ
SUNÖйú¹¤³ÌÑо¿Ôº JSF¿ò¼Ü¡¢°²È«