2.1.10.1 ʵÏÖ˼Ïë
IPSecµÄÍâ³ö´¦Àíº¯Êý¹ÒÔÚHOOKµã£ºNF_IP_FORWARD ¡¢NF_IP_LOCAL_OUTÉÏ¡£ÔÚÕâÀïÊ×ÏȽ«¸ù¾ÝIP°üµÄÏà¹ØÐÅÏ¢²éÕÒ°²È«²ßÂԿ⣨SPD£©£¬ÕÒµ½¸ÃIP°ü¶ÔÓ¦µÄÍâ³ö²ßÂÔ¡£²ßÂÔ½«¾ö¶¨¶Ô¸ÃIP°üµÄ¼¸ÖÖ´¦Àí£ºACCEPT; IPSEC SAList; DROP; TRAP; HOLD¡£ACCEPT±íʾ¶ÔIP°ü²»×öÈκÎIPSec´¦Àí£¬ÔÊÐíIP°üÖ±½Óͨ¹ý¡£IPSEC SAList±íʾ½«¸ù¾ÝSAListָʾµÄ°²È«¹ØÁª´®£¨SA´®£©¶ÔIP°ü½øÐÐIPSec´¦Àí¡£DROP±íʾ½«¶ªÆú²ßÂÔ²»ÔÊÐíÍâ³öµÄIP°ü£¬»òÕßÏÈǰÊÔͼµÈ´ýSAÐÉÌ£¬µ«SAÈ´²»ÄÜÐÉ̳ɹ¦µÄ°ü¡£TRAP±íʾҪÇó¸üÐÂÒ»¸ö°²È«¹ØÁª£¨SA£©£¬´Ëʱ½«ÉèÖÃSAΪHOLD£¬²¢Í¨¹ý·¢ËÍPF_KEYÏûÏ¢À´´¥·¢IKEÊØ»¤½ø³Ì½øÐа²È«¹ØÁª£¨SA£©µÄÐÉÌ¡£HOLD±íʾSA»¹Î´ÐÉ̳ɹ¦£¬ÒªÇó¶ªÆúIP°ü¡£
¶ÔÓÚ¿ÉÒÔ½øÐÐIPSecÍâ³ö´¦ÀíµÄ°ü£¬¸ù¾Ý²ßÂÔÌṩµÄÐÅÏ¢£¬²éÕÒ°²È«¹ØÁª¿â£¨SAD£©£¬ÕÒµ½¸ÃIP°üÓ¦¸ÃÓ¦Óõݲȫ¹ØÁª£¨SA»òSA´®£©¡£Èç¹ûûÓÐÕÒµ½SA£¬Ôò½«Í¨¹ý·¢ËÍPF_KEYÏûÏ¢À´´¥·¢IKEÊØ»¤½ø³Ì½øÐа²È«¹ØÁª£¨SA»òSA´®£©µÄÐÉÌ£¬´ËʱIP°ü±»ÔÝʱ±£³Ö£¬Ö±µ½sa´´½¨»ò³¬Ê±¡£Èç¹ûÕÒµ½ÁËSA£¨»òSA´®£©£¬Ôò¼ì²éSAµÄ״̬¡¢Éú´æÆÚ¡£È»ºó½øÐÐIPSecÐÒé´¦Àí£¬¸ù¾ÝSA£¨»òSA´®£©ËùÖ¸¶¨µÄÐÒ飨AH»òESP£©£¬Ñ»·¶ÔIP°ü½øÐÐÈÏÖ¤¡¢¼ÓÃܵȴ¦Àí¡£SA´®´¦ÀíÍê±Ïºó£¬½«ÖØÐ¹¹½¨IP°ü£¬²¢¶ÔеÄIP°üÖØÐ½øÐзÓÉ¡£×îºó·µ»ØNF_ACCEPT£¬±íʾ¸ÃIP°ü½«½øÈ뼤»îHOOKµãʱָ¶¨µÄ´¦Àíº¯Êý£ºip_queue_xmit2¡¢ip_send£¬½øÈë·¢ËÍ´¦ÀíÄ£¿é¡£
2.1.10.2 ʵÏÖϸ½Ú
1. ²éÕÒSPD£¨Íâ³ö²ßÂÔ£©¿â£¬ÕÒµ½Æ¥ÅäÏîµÄËù¶¨ÒåµÄÄ¿±ê¶¯×÷¡£
1) ACCEPT£º·µ»ØNF_ACCEPT£¬¼´°ü²»Óþ¹ýÈκμӹ¤´¦Àí£¬Ö±½Óͨ¹ý¡£
2) DROP£º·µ»ØNF_DROP£¬¶ªµô´Ë°ü²»ÔÙ´«Êä
3) TRAP£º·¢ËÍPF_key ÏûÏ¢ACCQUIRE¸øIKEÊØ»¤½ø³Ì£¬ÔÚSPDÖаÑËüÌæ»»³ÉHOLD£¬·µ»ØNF_STOLEN£¬²»¼ÌÐø´«Êä¸ÃÊý¾Ý±¨¡£
4) HOLD£º½ØÈ¡·ûºÏ´Ë²ßÂԵİü£¬¸üÐÂÒÔǰ½Ø»ñµÄ°ü£¬·µ»ØNF_STOLEN£¬²»¼ÌÐø´«Êä¸ÃÊý¾Ý±¨¡£
5) IPSEC Salist£º½øÐÐIPSec´¦Àí¡£ÒÔϱãÊÇÏêϸµÄ²½Öè˵Ã÷¡£
2. ¸ù¾Ý²ßÂÔÌṩµÄÐÅÏ¢£¬²éÕÒ°²È«¹ØÁª¿â£¨SAD£©£¬Ñ°ÕÒ¸ÃIP°üÓ¦¸ÃÓ¦Óõݲȫ¹ØÁª£¨SA»òSA´®£©¡£Èç¹ûûÓÐÕÒµ½SA£¬Ôò½«Í¨¹ý·¢ËÍPF_KEYÏûÏ¢À´´¥·¢IKEÊØ»¤½ø³Ì½øÐа²È«¹ØÁª£¨SA»òSA´®£©µÄÐÉÌ£¬´ËʱIP°ü±»ÔÝʱ±£³Ö£¬Ö±µ½sa´´½¨»ò³¬Ê±¡£
3. Èç¹ûÕÒµ½ÁËSA£¨SA´®£©£¬¼ì²éµ±Ç°SAµÄ״̬£¬¶ÔÓÚÒѾ¹ýʱµÄSA,ÒªÊÍ·ÅSAºÍÕâ¸öSA°ü¡£
4. ÉèÖÃÖØ²¥´°¿Ú¡£
5. ¼ì²éSAµÄÉúÃüÆÚ£¬°üÀ¨Ê¹ÓÃʱ¼ä£¬ÒÑ´¦ÀíµÄ×Ö½ÚÊý£¬´¦ÀíµÄIP°üÊýÄ¿¡£¶ÔÓÚÒѾ¹ýÉúÃüÆÚµÄSA,Ҫɾ³ý£¬·¢PF_keyÏûÏ¢¸øIKE¡££¨£ªIKEÓ¦¸Ã×Ô¼ºÎ¬»¤SA ,¸üÐÂɾ³ýÓ¦¸ÃÄÜ×Ô¶¯½øÐв»ÐèÄں˸ÉÉæ»òÌáÐÑ£¬µ«ÊÇҪʵÏÖ¶ÔÓÚ×Ö½ÚµÄÏÞÖÆÓ¦¸ÃÖ»ÄÜÓÉÄں˸æËßIKE½øÐиüУ©
6. ¸ù¾ÝSAÖеÄÐÒéÉèÖÃAH»òESPÍ·£¬È»ºóתµ½SAÁ´µÄÏÂÒ»¸öSA£¬Öظ´´Ó4¿ªÊ¼µÄ´¦Àí¡£
7. ÉèÖÃеÄMTU£¨Èç¹ûʵÏÖÁËPMTU»úÖÆ£¬Òª×öÏàÓ¦µÄ´¦Àí£©
8. ¸ù¾ÝSAÖ¸¶¨µÄÐÒ飨AH»òESP£©ÉèÖÃÍ·¿Õ¼äºÍβ¿Õ¼ä£¬²¢Ê¹ÓÃSA¹æ¶¨µÄÐÒéÖÐÓ¦¸ÃʹÓõļÓÃÜ»òÑéÖ¤Ëã·¨´¦ÀíIP°üÊý¾ÝÇøÄÚÈÝ¡£
9. ´¦Àí½áÊøºóµ÷ÕûIPÍ·ÖØÐÂÉèÖÃУÑéºÍ¡£
10. ¸üÐÂSAµÄÉúÃüÆÚ
11. ¶ÔÓÚSA´®½«Ñ»·´¦ÀíSA´®ÉϵÄÿһ¸öSA
12. ¶ÔеÄIP°üÖØÐ½øÐзÓÉ¡£
13. ·µ»ØNF_ACCEPT£¬½«IP°ü´«Ë͵½½øÈ뼤»îHOOKµãʱָ¶¨µÄ´¦Àíº¯Êý£ºip_queue_xmit2¡¢ip_send¡£½øÈë·¢ËÍ´¦ÀíÄ£¿é¡£
2.1.11 ·¢ËÍ´¦Àí
2.1.11.1 ʵÏÖ˼Ïë
Ê×ÏÈÒªÅжÏÊÇ·ñÐèÒª½øÐÐ·ÖÆ¬´¦Àí¡£×ª·¢µÄIP°ü£¬»òÕßÊDZ¾µØ²úÉúµÄ¾¹ýIPSec´¦Àí¹ýµÄIP°üµÄ³¤¶ÈÓпÉÄÜ´óÓÚ·¢ËͽӿڵÄMTU£¬´Ëʱ±ØÐë½øÐÐ·ÖÆ¬´¦Àí¡£·ÖƬ½áÊøºó½«IP°ü½»¸øÁ´Â·²ã´¦ÀíÄ£¿é£¬È»ºóÓÉÍø¿¨·¢Ë͸ÃÊý¾Ý°ü¡£
2.1.11.2 ʵÏÖϸ½Ú
1¡¢ÅжÏÊÇ·ñÐèÒª·ÖƬ£¬Èç¹ûÐèÒª£¬Ôòµ÷ÓÃ·ÖÆ¬º¯Êýip_fragment½øÐÐ·ÖÆ¬¡£
2¡¢½«IP°ü½»¸øÁ´Â·²ã´¦ÀíÄ£¿é£ºdev_queue_xmit¡£
2.2 ¹¦ÄÜÄ£¿éµÄʵÏÖ
2.2.1 ²ßÂԿ⣨SPD£©µÄʵÏÖ£º
2.2.1.1 ʵÏÖ˼Ï룺
ÎÒÃǽ«°²È«²ßÂÔ¿âµÄÅäÖÃÉèÖÃÔÚ°²È«Íø¹ØÉÏ£¬¸÷¸ö°²È«Íø¹Ø¶ÀÁ¢ÅäÖòßÂÔ¿â¡£µ«Òª±£Ö¤²ßÂÔµÄÒ»ÖÂÐÔ¡£
°²È«²ßÂԿ⣨SPD£©ËµÃ÷Á˶ÔIPÊý¾Ý±¨ÌṩºÎÖÖ±£»¤£¬²¢ÒÔºÎÖÖ·½Ê½ÊµÊ©±£»¤¡£SPDÖвßÂÔÏîµÄ½¨Á¢ºÍά»¤Ó¦Í¨¹ýÐÉÌ£»¶øÇÒ¶ÔÓÚ½øÈëºÍÍâ³ö´¦Àí¶¼Ó¦¸ÃÓÐ×Ô¼ºµÄ²ßÂÔ¿â¡£¶ÔÓÚ½øÈë»òÍâ³öµÄÿһ·ÝÊý¾Ý±¨£¬¶¼¿ÉÄÜÓÐÈýÖÖ´¦Àí£º¶ªÆú¡¢Èƹý»òÓ¦ÓÃIPSec¡£SPDÌṩÁ˱ãÓÚÓû§»òϵͳ¹ÜÀíÔ±½øÐÐά»¤µÄ¹ÜÀí½Ó¿Ú¡£¿ÉÔÊÐíÖ÷»úÖеÄÓ¦ÓóÌÐòÑ¡ÔñIPSec°²È«´¦Àí¡£SPDÖеIJßÂÔÏî¼Ç¼¶ÔSA(SAÊø)½øÐÐÁ˹涨£¬Æä×ֶΰüº¬ÁËIPsecÐÒ顢ģʽ¡¢Ëã·¨ºÍǶÌ×µÈÒªÇó¡£SPD»¹¿ØÖÆÃÜÔ¿¹ÜÀí(ÈçISAKMP)µÄÊý¾Ý°ü£¬¼´¶ÔISAKMPÊý¾Ý°üµÄ´¦ÀíÃ÷ȷ˵Ã÷¡£
SPDÊÇÀûÓÃradixÊ÷ÐͽṹÀ´¹¹Ô졣ÿһ¸ö½áµã¾ÍÊÇÒ»¸ö²ßÂÔÏî¡£²ßÂÔÏîÖаüº¬Ò»¸öSAIDÊý¾Ý½á¹¹£¬ËüÊÇSPDÓëSADÖ®¼äµÄ½Ó¿Ú¡£¿ÉÒÔÓÉËüÀ´²éÕÒSAD£¬´Ó¶øÖ¸¶¨Ïà¹ØµÄSA£¨»òSA´®£©¡£ÕâÑùʹµÃ²ßÂÔÏî¿ÉÒÔ¶ÔÓ¦Ïà¹ØµÄÒ»¸öSA»òÕß¶à¸öSA£¨SA´®£©¡£
SPDÖвßÂÔÏîµÄ²éÕÒÊÇͨ¹ýÑ¡Ôñ·ûÀ´½øÐеġ£SA»òSAÊøµÄÁ£¶È¾ö¶¨ÓÚÑ¡Ôñ·û¡£Í¨¹ýÑ¡Ôñ·û£¬¿ÉÒÔÕÒµ½Íâ³ö»ò½øÈëIP°üÓ¦¸ÃʵÐеIJßÂÔÏî¡£Á½¸ö²ßÂÔÏîµÄÑ¡Ôñ·û¿ÉÒÔÏàͬ¡£ÎÒÃÇÑ¡ÓõÚһƥÅäÏ²¢±£Ö¤SPDʼÖÕÒÔͬÑùµÄ˳Ðò½øÐвéÕÒ£¬ÕâÑù¾Í±£Ö¤Á˵ÚһƥÅä²ßÂÔÏîµÄÒ»ÖÂÐÔÑ¡Ôñ¡£
2.2.1.2 ʵÏÖϸ½Ú
1¡¢²ßÂÔ¿âµÄ¹¹½¨·½Ê½£º²ÉÓÃradixÊ÷Ðͽṹ¡£´æ·ÅÔÚÄÚºËÖС£
2¡¢Ñ¡Ôñ·ûµÄ¹¹³É¡£Ñ¡Ôñ·û°üº¬ÏÂÁвÎÊý£ºÄ¿µÄµØIPµØÖ·¡¢Ô´IPµØÖ·¡¢Ãû×Ö£¨Óû§ID¡¢ÏµÍ³Ãû×Ö£©¡¢Êý¾Ý±£Ãܵȼ¶¡¢Ô´¶Ë¿ÚºÍÄ¿µÄ¶Ë¿Ú
3¡¢²ßÂÔÏîµÄ¹¹³É¡£²ßÂÔÏî°üº¬ÏÂÁвÎÊý£ºradixÊ÷Ïà¹ØÊý¾Ý½á¹¹¡¢SAID½á¹¹¡¢µØÖ·¡¢ÑÚÂë¡£
4¡¢ÎªÓû§²ãÌṩµÄ½Ó¿Ú£¨PF_key£©£¬ÔÊÐíÓû§³ÌÐò¿Éͨ¹ý½Ó¿Ú¶Ô¿â½øÐвÙ×÷£ºÌí¼Ó¡¢É¾³ý¡¢ËÑË÷£¨Æ¥Å䣩¡£
5¡¢¶Ô²ßÂÔ¿âµÄ²Ù×÷ʱ»ú£ºÓû§Í¨¹ýÅäÖýçÃæ¶Ô²ßÂÔ¿â½øÐÐÏà¹Ø²Ù×÷£»IKEÐÉÌSAÍê±Ïºó£¬ÔÚ¸üÐÂSADµÄͬʱ£¬Ò²Òª½¨Á¢ÐµÄSADÓëSPDÖ®¼äµÄ¹ØÁª¡£
2.2.1.3 »ù±¾²Ù×÷
Óû§ÅäÖóÌÐòͨ¹ýPF_key½Ó¿Úµ÷ÓÃÄÚºËÏà¹Ø³ÌÐò³ÌÐò£¬ÊµÏÖ¶Ô°²È«²ßÂÔ¿âµÄ²Ù×÷¡£
1¡¢Ìí¼Ó²ßÂÔÏipsec_create_policy
¸ù¾ÝÓû§´«ÈëµÄÐÅÏ¢¹¹Ôì²ßÂÔÏî½á¹¹£¬È»ºó½«¸Ã½á¹¹¼ÓÈëµ½radixÊ÷ÖС£
2¡¢É¾³ý²ßÂÔÏipsec_delete_policy
¸ù¾ÝÓû§´«ÈëÐÅÏ¢£¬ÔÚradixÊ÷ÖÐÕÒµ½¸Ã²ßÂÔÏȻºóɾ³ý¸Ã½Úµã¡£
3¡¢²éÕÒ²ßÂÔÏipsec_find_policy
¸ù¾ÝÓû§´«ÈëÐÅÏ¢£¬ÔÚradixÊ÷ÖвéÕÒµ½¸Ã²ßÂÔÏî¡£
2.2.2 °²È«¹ØÁª¿â£¨SAD£©µÄʵÏÖ
2.2.2.1 ʵÏÖ˼Ïë
°²È«¹ØÁª£¨SA£©Êǹ¹³ÉIPSecµÄ»ù´¡¡£SAÊÇÁ½¸öͨÐÅʵÌå¾¹ýÐÉ̽¨Á¢ÆðÀ´µÄÒ»ÖÖж¨¡£ËûÃǾö¶¨ÁËÓÃÀ´±£»¤Êý¾Ý±£°²È«µÄIPSecÐÒ顢ģʽ¡¢Ëã·¨¼°ÃÜÔ¿¡¢Éú´æÆÚ¡¢¿¹Öز¥´°¿Ú¡¢¼ÆÊýÆ÷µÈµÈ¡£SAÊǵ¥ÏòµÄ£¬Òò´ËÍâ³öºÍ½øÈë´¦ÀíÐèÒª²»Í¬µÄSA¡£SA»¹ÓëÐÒéÏà¹Ø£¬Ã¿Ò»ÖÖÐÒé¶¼ÓÐÒ»¸öSA¡£
°²È«¹ØÁª¿â£¨SAD£©Î¬»¤ÁËIPSecÐÒéÓÃÀ´±£ÕÏÊý¾Ý±£°²È«µÄSA¼Ç¼¡£Ã¿¸öSA¶¼ÔÚSADÖÐÓÐÒ»Ìõ¼Ç¼Ïà¶ÔÓ¦¡£¶ÔÓÚÍâ³ö´¦Àí£¬Ó¦SPDÖвéÕÒÖ¸ÏòSADÖÐSAµÄÖ¸Õ룬ÈçSA佨Á¢£¬ÔòÓ¦¼¤»îIKE½¨Á¢SA£¬²¢Í¬SPDºÍSADµÄ¼Ç¼¹ØÁªÆðÀ´¡£¶ÔÓÚ½øÈë´¦Àí£¬SADµÄ¼Ç¼ÓÃÄ¿µÄIPµØÖ·¡¢IPSecÐÒéÀàÐͺÍSPI±êʶ¡£
SADÊÇÀûÓÃHASH±íÀ´¹¹ÔìµÄ¡£
SADµÄ²éÕÒÊÇͨ¹ýÒ»¸öÈýÔª×飨SAID£©£ºÐÒ顢ĿµÄµØÖ·¡¢SPIÀ´½øÐеģ¬ÈýÔª×é±êʶÁËΨһµÄSA¡£Í¨¹ý¶ÔSAIDµÄÉ¢ÁÐÕÒµ½SAÍ·£¬È»ºóÔÙ½øÐÐÏêϸƥÅäÕÒµ½ÏàÓ¦µÄSA¡£
SAµÄ¹ÜÀí¿ÉÒÔͨ¹ýÊÖ¹¤½øÐУ¬Ò²¿ÉÒÔͨ¹ýIKEÀ´½øÐж¯Ì¬ÐÉÌ¡£ÎªÁ˽øÐÐSAµÄ¹ÜÀí£¬ÎÒÃÇÀûÓÃPF_keyʵÏÖÁËÒ»¸öÓû§Ó¦ÓÃÓëÄÚºËͨѶµÄ½Ó¿Ú¡£
2.2.2.2 ʵÏÖϸ½Ú
1¡¢°²È«¹ØÁª¿â£¨SAD£©µÄ¹¹½¨·½Ê½£ºÍ¨¹ýhash±í£¨Èçͼ£©
2¡¢SAD¿âµÄ²éÕÒͨ¹ýÒ»¸öSAID£º<Ä¿µÄµØÖ·¡¢ÐÒé¡¢SPI>
3¡¢SA¼Ç¼µÄ¹¹³É¡£Ã¿Ò»¸öSAµÄ»ù±¾½á¹¹°üÀ¨£º
l ÐòºÅ¼ÆÊýÆ÷£º32±ÈÌØ¡£
l ÐòºÅ¼ÆÊýÆ÷Òç³ö±êÖ¾£º±êʶÐòºÅ¼ÆÊýÆ÷ÊÇ·ñÒç³ö¡£Èç¹ûÒç³ö£¬Ôò²úÉúÒ»¸öÉó¼ÆÊ¼þ£¬²¢½ûÖ¹ÓÃSA¼ÌÐø·¢ËÍÊý¾Ý°ü¡£
l ¿¹Öز¥´°¿Ú£º32±ÈÌØ¼ÆÊýÆ÷¼°Î»Í¼£¬ÓÃÓÚ¾ö¶¨½øÈëµÄAH»òESPÊý¾Ý°üÊÇ·ñÎªÖØ·¢µÄ¡£
l AHÑéÖ¤Ëã·¨¼°ÆäÃÜÔ¿µÈ¡£
l ESP¼ÓÃÜËã·¨¡¢ÃÜÔ¿¡¢IVģʽ¡¢IVµÈ¡£
l ESPÑéÖ¤Ëã·¨¡¢ÃÜÔ¿µÈ¡£ÈçδѡÔñÑéÖ¤·þÎñ£¬¸Ã×Ö¶ÎΪ¿Õ¡£
l °²È«¹ØÁªµÄÉú´æÆÚ£ºÒ»¸öʱ¼ä¼ä¸ô¡£
l IPsecÐÒéģʽ£ºËíµÀ¡¢´«Êä»òͨÅ䣺Ö÷»úʵʩӦ֧³ÖËùÓÐģʽ£»Íø¹ØÊµÊ©Ó¦Ö§³ÖËíµÀģʽ
l PMTU£ºËù¿¼²ìµÄ·¾¶µÄMTU¼°ÆäÊÙÃü±äÁ¿¡£
4¡¢SADºÍSPDÖ®¼äÊÇͨ¹ýSAID½øÐйØÁªµÄ¡£Í¨¹ý²é¿´SPDÖеÄSAIDÖµ£¬¿É¶ÔSAD½øÐвéÕÒ£¬ÕÒµ½¸Ã²ßÂÔÏîËùÓ¦¸ÃʵʩµÄSA¡£
5¡¢°²È«¹ØÁª¿âÓëÓû§³ÌÐò£¨IKE£©µÄ½Ó¿Ú£¬Í¨¹ýPF_keyÀ´ÊµÏÖ¡£ÎÞÂÛÊÇÊÖ¹¤´´½¨Ò»¸öSA£¬»¹ÊÇͨ¹ýÃÜÔ¿¹ÜÀíÐÒéIKE¶¯Ì¬´´½¨SA£¬¶¼Í¨¹ý¸Ã½Ó¿Ú¶ÔSADºÍSPD½øÐвÙ×÷¡£
2.2.2.3 »ù±¾²Ù×÷
1¡¢´´½¨Ò»¸öSA£ºipsec_create_sa
¸ù¾ÝÓû§ÌṩµÄSAÏà¹Ø²ÎÊý¹¹½¨SA½á¹¹£¬È»ºóÌáÈ¡SAIDÖµ£¬²¢¶ÔSAID½øÐÐÉ¢ÁС£½«SA½á¹¹·ÅÈëÉ¢ÁÐÁ´Í·¡£
2¡¢É¾³ýÒ»¸öSA£ºipsec_delete_sa
¸ù¾ÝÓû§²ÎÊý£¬ÌáÈ¡SAID¡£¸ù¾ÝSAID²éÕÒSAD£¬ÕÒµ½ºó½«SA½á¹¹´ÓÁ´ÖÐɾ³ý¡£
3¡¢²éÕÒÒ»¸öSA£ºipsec_find_sa
¸ù¾ÝÓû§²ÎÊý£¬ÌáÈ¡SAID¡£¶ÔSAIDÉ¢Áкó£¬ÔÚSADÉ¢ÁбíÖÐÖÐÕÒµ½SAÁ´Í·£¬ÔÙ½øÐÐÏêϸSAIDÆ¥ÅäÕÒµ½ÎªÒ»µÄSA¡£
2.2.3 AHÐÒé´¦ÀíÄ£¿éʵÏÖ
2.2.3.1
AH¸ñʽ£º
¸÷×ֶκ¬ÒåÈçÏ£º
1) ÏÂһͷ£¨8±ÈÌØ£©£º±êʶ½ô¸úÑé֤ͷµÄÏÂÒ»¸öÍ·µÄÀàÐÍ¡£
2) ÔØºÉ³¤¶È£¨8±ÈÌØ£©£ºÒÔ32-λ×ÖΪµ¥Î»µÄÑé֤ͷµÄ³¤¶È£¬ÔÙ¼õÈ¥2¡£ÀýÈ磬ȱʡµÄÑéÖ¤Êý¾Ý×ֶεij¤¶ÈÊÇ96±ÈÌØ£¨3¸ö32-λ×Ö£©£¬¼ÓÉÏ3¸ö×Ö³¤µÄ¹Ì¶¨Í·£¬Í·²¿¹²6¸ö×Ö³¤£¬Òò´Ë¸Ã×ֶεÄֵΪ4¡£
3) ±£Áô£¨16±ÈÌØ£©£º±£ÁôΪ½«À´Ê¹Óá£
4) °²È«²ÎÊýË÷Òý£¨32±ÈÌØ£©£ºÓÃÓÚ±êʶһ¸ö°²È«¹ØÁª¡£
5) ÐòºÅ£¨8±ÈÌØ£©£ºµ¥ÔöµÄ¼ÆÊýÆ÷Öµ¡£
6) ÑéÖ¤Êý¾Ý£¨¿É±ä£©£º¸Ã×ֶεij¤¶È¿É±ä£¨µ«Ó¦Îª32-λ×ÖµÄÕûÊý±¶£©£¬°üº¬µÄÊý¾ÝÓÐÊý¾Ý°üµÄICV£¨ÍêÕûÐÔУÑéÖµ£©»òMAC¡£
2.2.3.2 ʵÏÖ¹¦ÄÜ£º
AHÓÃÓÚΪIPÌṩÊý¾ÝÍêÕûÐÔ¡¢Êý¾ÝÔʼÉí·ÝÑéÖ¤ºÍһЩ¿ÉÑ¡µÄ¡¢ÓÐÏ޵Ŀ¹Öز¥·þÎñ¡£
2.2.3.3 ʵÏÖģʽ£º
ÔÚ°²È«Íø¹ØÉÏֻʵÏÖËíµÀģʽ£º
AH£º
|
| ||
|
ÏÂÒ»¸öÍ· |
ÔØºÉ³¤¶È |
±£Áô |
|
| ||
|
ÐòÁкŠ| ||
|
ÑéÖ¤Êý¾Ý | ||
|
| ||
|
TCPÍ· | ||
|
| ||
2.2.4 ESPÐÒé´¦ÀíÄ£¿éʵÏÖ
2.2.4.1
ESP¸ñʽ
¸÷×ֶκ¬ÒåÈçÏ£º
1) °²È«²ÎÊýË÷Òý£¨32±ÈÌØ£©£º±êʶһ¸ö°²È«¹ØÁª¡£
2) ÐòºÅ£¨32±ÈÌØ£©£ºµ¥ÔöµÄ¼ÆÊýÆ÷Öµ¡£
3) ÔØºÉÊý¾Ý£¨¿É±ä£©£º´«Êä²ãÊý¾Ý¶Î£¨´«Êäģʽ£©»òIP°ü£¨ËíµÀģʽ£©£¬Í¨¹ý¼ÓÃܵõ½±£»¤¡£
4) Ìî³ä£¨0-255×Ö½Ú£©£º¶îÍâµÄ×Ö½Ú¡£ÓеļÓÃÜËã·¨ÒªÇóÃ÷Îij¤¶ÈÊÇ8λ×éµÄij¸öÕû±¶Êý¡£
5) Ìî³ä³¤¶È£¨8±ÈÌØ£©£º±íʾÌî³äµÄ×Ö½ÚÊý¡£
6) ÏÂһͷ£¨8±ÈÌØ£©£ºÍ¨¹ý±êÊ¶ÔØºÉÖеĵÚÒ»¸öÍ·£¨ÈçIPv6ÖеÄÀ©Õ¹Í·£¬»òÖîÈçTCPÖ®ÀàµÄÉϲãÐÒéÍ·£©£¬È·¶¨ÔغÉÊý¾Ý×Ö¶ÎÖÐÊý¾ÝµÄÀàÐÍ¡£
ÑéÖ¤Êý¾Ý£¨¿É±ä£©£º³¤¶È¿É±äµÄ×ֶΣ¨Ó¦Îª32-λ×ÖµÄÕûÊý±¶£©£¬ÓÃÓÚÌîÈëICV¡£ICVµÄ¼ÆË㷶ΧΪESP°üÖгýÈ¥ÑéÖ¤Êý¾Ý×ֶεIJ¿·Ö¡£
2.2.4.2 ʵÏÖ¹¦ÄÜ£º
ESPÓÃÓÚΪIPÌṩ»úÃÜÐÔ¡¢Êý¾ÝÔ´ÑéÖ¤¡¢¿¹Öز¥ÒÔ¼°Êý¾ÝÍêÕûÐԵȰ²È«·þÎñ¡£
2.2.4.3 ʵÏÖģʽ
ÔÚ°²È«Íø¹ØÉÏֻʵÏÖËíµÀģʽ£º
ESP£º
|
| |||
|
°²È«²ÎÊýË÷Òý(SPI) | |||
|
| |||
|
| |||
|
| |||
|
Êý¾Ý | |||
|
|
Ìî³äÏî |
Ìî³äÏ¶È |
ÏÂÒ»¸öÍ· |
|
| |||
2.2.5 Ë㷨ʵÏÖ
2.2.5.1 ʵÏÖ˼Ïë
Ö§³Ö¶àÖÖÈÏÖ¤Ëã·¨ºÍ¼ÓÃÜËã·¨£¬²¢ÇÒ¿ÉÒÔ¶¯Ì¬Ìí¼Ó¡£ÆäÖÐÏÖÓÐÈÏÖ¤Ëã·¨Ö§³Ö£ºhmac-md5-96ºÍhmac-sha1-96£»¼ÓÃÜËã·¨Ö§³Ö£º3des-md5-96ºÍ3des-sha1-96¡£ÃÜÔ¿Éú³É·ÖΪÁ½ÖÖ£ºÒ»ÖÖÊÇÔ¤¹²ÏíÃÜÔ¿PSK£¬Ò»ÖÖÊǹ«Ë½Ô¿RSA¡£Èç¹ûÀûÓÃPSKÉú³ÉÃÜÔ¿£¬ÔòͨѶ˫·½µÄPSKÃÜÔ¿±ØÐëÏàͬ¡£
2.2.5.2 ʵÏÖϸ½Ú
2.2.6 ÈÕÖ¾¡¢Í³¼Æ¡¢ÅäÖÃÓëÉó¼ÆÊµÏÖ
2.2.6.1 ÈÕÖ¾ÓëÉó¼Æ
VPNÍø¹Ø½«¼Ç¼¶ÔÍø¹Ø½øÐеĸ÷ÖÖ²Ù×÷£¬°üÀ¨´íÎóÐÅÏ¢¡¢°²È«¹æÔòÎļþµÄÐ޸ĵȵȡ£²¢°´ÕÕ°²È«µÈ¼¶¡¢Ê¼þÃû³ÆºÍ·¢Éúʱ¼ä¡¢Ê¼þÄÚÈݼ°²Ù×÷ÕßÒÔͼ±íµÄ·½Ê½ÏÔʾÔÚVPNÅäÖ÷þÎñÆ÷ÉÏ¡£
ͨ¹ý°²È«Ê¼þµÄÈÕÖ¾¼Ç¼£¬¿ÉÒÔÌá¸ßVPNÍø¹Ø¹ÜÀíµÄ°²È«ÐÔ£¬²¢Í¨¹ýÉó²éÈÕÖ¾·¢ÏÖÎ¥·´°²È«¹æÔòµÄ²Ù×÷£¬²¢¼°Ê±²ÉÈ¡ÏàÓ¦µÄ´ëÊ©¡£
2.2.6.2 ͳ¼Æ
¶Ô¸÷ÖÖÁ÷Á¿ÐÅÏ¢½øÐÐͳ¼Æ£ºÍ¨¹ýµÄ×ÜIP°üÊý£¬¶ªÆúµÄ×ÜIP°üÊý¡¢¾¹ýIPSec´¦Àí¹ýµÄIP°üÊý¡¢Èƹý´¦ÀíµÄIP°üÊý£¬¸÷ÖÖÁ÷¹ýµÄÐÒ飬ʱ¼äͳ¼ÆµÈµÈ¡£
2.2.6.3 ÅäÖÃ
ΪÓû§ÌṩÓѺõÄÅäÖýçÃæ£¬¿ÉÒÔ¶ÔVPNÍø¹ØµÄµÄ¸÷ÖÖÐÅÏ¢½øÐÐÅäÖᣣ¨Èçͼ£©
2.2.7 Ó¦ÓóÌÐòÓëÄں˵ÄͨѶ½Ó¿ÚʵÏÖ
2.2.7.1 ʵÏÖ˼Ïë
Óû§µÄ¸÷ÖÖÅäÖÃÇëÇó£¬ÒÔ¼°ÃÜÔ¿¹ÜÀíÊØ»¤½ø³Ì£¨IKE£©¶¼½«Éæ¼°µ½¶ÔÄÚºËÏà¹ØÊý¾Ý½á¹¹£¨°²È«²ßÂÔ¿âSPD¡¢°²È«¹ØÁª¿âSAD£©µÄÐ޸ġ£Òò´ËÎÒÃÇÀûÓÃPF_KEYÐÒéÀ´ÊµÏÖÓû§Ó¦ÓóÌÐòÓëÄں˵ÄͨѶ¡££¨Èçͼ£©
Èçͼ£¬Óû§ÅäÖÃÐÅÏ¢ºÍIKEÊØ»¤½ø³Ì¿ÉÒÔͨ¹ýPF_KEYÐÒé½Ó¿Ú¶ÔÄں˿ռäµÄ°²È«²ßÂԿ⣨SAD£©½øÐвÙ×÷¡£Í¬Ñù£¬Äں˳ÌÐòÒ²¿ÉÒÔͨ¹ýPF_KEYÐÒé½Ó¿ÚÏòÓ¦ÓóÌÐò·¢³öÐÉÌSAµÄÇëÇó¡£
PF_KEYÐÒé´ØµÄsocketµÄ²Ù×÷ͬÆäËûÀàÐ͵Äsocket²Ù×÷ÎÞ²î±ð¡£
int s = socket(PF_KEY, SOCK_RAW, PF_KEY_V2);
Óû§½ø³Ìͨ¹ýʹÓÃÕâ¸ösocket½Ó¿ÚÀ´·¢ËͺͽÓÊÕÐÅÏ¢ÓëÄÚºËͨÐÅ¡£¶ÔÕâ¸ösocket µÄ²Ù×÷ͬÆäËüsocketÒ»Ñù£¬bind(), connect(), socketpair(), accept(), getpeername(), getsockname(), ioctl(), and listen().
ʵÏÖµÄÖ÷ÒªÏûÏ¢ÖÖÀࣺ
¡ô SADB_ADD ÏòÄں˵ÄSADBÔö¼ÓÒ»¸öSA
¡ô SADB_DELETE ´ÓÄں˵ÄSADBɾ³ýÒ»¸öSA
¡ô SADB_GET ´ÓÄں˵ÄSADB»ñȡһ¸öSA
¡ô SADB_REGISTER IKEÊØ»¤½ø³Ì×¢²á²ß×Ô¼ºÄÜÌṩ·þÎñµÄÐÒéÀàÐÍ£¬AH£¬ESP»òÆäËü
¡ô SADB_EXPIRE Äں˷¢Ë͸øIKEÊØ»¤½ø³Ìij¸öSA








