À´Ô´: 51cto
´Ó¸÷·½ÃæÀ´¿´£¬»¥ÁªÍøÏò IPv6 µÄ¹ý¶ÉÊǼþºÜ»ºÂýµÄÊÂÇé¡£²»¹ýÔÚ×î½ü¼¸Ä꣬¿ÉÄÜÊÇÓÉÓÚ IPv4 µØÖ·×ÊÔ´µÄ¿Ý½ß£¬IPv6 µÄʹÓô¦ÓÚÉÏÉýÌ¬ÊÆ¡£ÏàÓ¦µÄ£¬¿ª·¢ÕßÒ²ÓÐÐËȤȷ±£Èí¼þÄÜÔÚ IPv4 ºÍ IPv6 Ϲ¤×÷¡£µ«ÊÇ£¬ÕýÈç½üÆÚ OpenBSD ÓʼþÁбíÖеÄÌÖÂÛËù¹Ø×¢µÄ£¬Ò»¸öʹµÃÏò IPv6 ת»»¸ü¼ÓÇáËɵĻúÖÆÉè¼ÆÍ¬Ê±Ò²¿ÉÄܵ¼ÖÂÍøÂç¸ü²»°²È«----²¢ÇÒ Linux ·¢ÐаæÃǵÄĬÈÏÅäÖÿÉÄܲ¢²»°²È«¡£
µØÖ·Ó³Éä
IPv6 ÔÚºÜ¶à·½Ãæ¿´ÆðÀ´¿ÉÄܺÜÏñ IPv4£¬µ«ËüÊÇÒ»¸ö²»Í¬µØÖ·¿Õ¼äµÄ²»Í¬µÄÐÒé¡£·þÎñÆ÷³ÌÐòÏëÒª½ÓÊÜʹÓöþÕßÖ®ÖÐÈÎÒâÒ»¸öÐÒéµÄÁ¬½Ó£¬±ØÐë¸øÁ½¸ö²»Í¬µÄµØÖ·×å·Ö±ð´ò¿ªÒ»¸öÌ×½Ó×Ö----IPv4 µÄ AF_INET ºÍ IPv6 µÄAF_INET6¡£ÌرðÊÇÒ»¸ö³ÌÐòÏ£ÍûÔÚÖ÷»úÉϵÄʹÓÃÁ½ÖÖµØÖ·ÐÒéµÄÈÎÒâ½Ó¿Ú¶¼½ÓÊÜÁ¬½ÓµÄ»°£¬ÐèÒª´´½¨Ò»¸ö°ó¶¨µ½È«ÁãͨÅä·ûµØÖ·(0.0.0.0)µÄ AF_INET Ì×½Ó×ÖºÍÒ»¸ö°ó¶¨µ½ IPv6 µÈЧµØÖ·(д×÷ ::)µÄ AF_INET6Ì×½Ó×Ö¡£Ëü±ØÐëÔÚÁ½¸öÌ×½Ó×ÖÉ϶¼¼àÌýÁ¬½Ó----»òÕßÓÐÈË»áÕâôÈÏΪ¡£
¶àÄêǰ£¬ÔÚ RFC 3493£¬IETF Ö¸¶¨ÁËÒ»¸ö»úÖÆ£¬³ÌÐò¿ÉÒÔʹÓÃÒ»¸öµ¥¶ÀµÄ IPv6 Ì×½Ó×Ö¹¤×÷ÔÚÁ½¸öÐÒéÖ®ÉÏ¡£ÓÐÁËÒ»¸öÆôÓÃÕâ¸öÐÐΪµÄÌ×½Ó×Ö£¬³ÌÐòÖ»ÐèÒª°ó¶¨µ½ :: µØÖ·´Ó¶øÔÚËùÓнӿÚÉϽÓÊÜʹÓÃÕâÁ½¸öÐÒéµÄÁ¬½Ó¡£µ±´´½¨ÁËÒ»¸ö IPv4 Á¬½Óµ½¸Ã°ó¶¨¶Ë¿Ú£¬Ô´µØÖ·»áÏñ RFC 2373 ÖÐÃèÊöµÄÄÇÑùÓ³Éäµ½ IPv6¡£ËùÒÔ£¬¾Ù¸öÀý×Ó£¬Ò»¸öʹÓÃÁËÕâ¸öģʽµÄ³ÌÐò»á½«Ò»¸ö 192.168.1.1 µÄ´«ÈëÁ¬½Ó¿´×÷À´×Ô ::ffff:192.168.1.1(Õâ¸ö»ìºÏµÄд·¨¾ÍÊÇÕâÖÖµØÖ·µÄͨ³£Ð´·¨)¡£³ÌÐòÒ²ÄÜͨ¹ýÏàͬµÄÓ³Éä·½·¨´ò¿ªÒ»¸öµ½ IPv4 µØÖ·µÄÁ¬½Ó¡£
RFC ÒªÇóĬÈÏʵÏÖÕâ¸öÐÐΪ£¬ËùÒÔ´ó¶àÊýϵͳÕâô×öÁË¡£²»¹ýÒ²ÓÐЩÀýÍ⣬OpenBSD ¾ÍÊÇÆäÖÐÖ®Ò»;ÔÚÄÇÀϣÍûÔÚÁ½ÖÖÐÒéϹ¤×÷µÄ³ÌÐòÄÜ×öµÄÖ»ÄÜÊÇ´´½¨Á½¸ö¶ÀÁ¢µÄÌ×½Ó×Ö¡£µ«Ò»¸öÔÚ Linux Öдò¿ªÁ½¸öÌ×½Ó×ֵijÌÐò»áÓöµ½Âé·³£ºIPv4 ºÍ IPv6 Ì×½Ó×Ö¶¼»á³¢Ê԰󶨵½ IPv4 µØÖ·£¬ËùÒÔ²»ÂÛÊÇÄĸö£¬ºóÕß¶¼»áʧ°Ü¡£»»¾ä»°Ëµ£¬Ò»¸ö°ó¶¨µ½ :: Ö¸¶¨¶Ë¿ÚµÄÌ×½Ó×ֵijÌÐò»áͬʱ°ó¶¨µ½ÄǸö¶Ë¿ÚÉ쵀 IPv6 µÄ :: ºÍ IPv4 µÄ 0.0.0.0 µØÖ·¡£Èç¹û³ÌÐòÖ®ºó³¢ÊÔ°ó¶¨Ò»¸ö IPv4 Ì×½Ó×Öµ½ 0.0.0.0 µÄÏàͬ¶Ë¿ÚÉÏʱ£¬Õâ¸ö²Ù×÷»áʧ°Ü£¬ÒòΪÕâ¸ö¶Ë¿ÚÒѾ±»°ó¶¨ÁË¡£
µ±È»Óиö°ì·¨¿ÉÒÔ½â¾öÕâ¸öÎÊÌâ;³ÌÐò¿ÉÒÔµ÷Óà setsockopt() À´´ò¿ª IPV6_V6ONLY Ñ¡Ïî¡£Ò»¸ö´ò¿ªÁ½¸öÌ×½Ó×Ö²¢ÇÒÉèÖÃÁË IPV6_V6ONLY µÄ³ÌÐòÓ¦¸Ã¿ÉÒÔÔÚËùÓеÄϵͳ¼äÒÆÖ²¡£
¶ÁÕßÃÇ¿ÉÄܶԲ»ÊÇÿ¸ö³ÌÐò¶¼ÄÜÕýÈ·´¦ÀíÕâÒ»ÎÊÌâûÄÇôÕ𾪡£ÊÂʵ֤Ã÷£¬ÕâЩ³ÌÐòµÄÆäÖÐÖ®Ò»ÊÇÍøÂçʱ¼äÐÒéNetwork Time ProtocolµÄ OpenNTPD ʵÏÖ¡£Brent Cook ×î½ü¸øÉÏÓÎ OpenNTPD Ô´ÂëÌá½»ÁËÒ»¸öС²¹¶¡£¬Ìí¼ÓÁ˱ØÒªµÄ setsockopt() µ÷Óã¬ËüÒ²±»Ìá½»µ½ÁË OpenBSD ÖÐÁË¡£²»¹ýÄǸö²¹¶¡¿´ÆðÀ´²»´ó¿ÉÄܱ»½ÓÊÜ£¬×î¿ÉÄܵÄÔÒòÊÇÒòΪ OpenBSD ʽµÄÀíÓÉ(LCTT Òë×¢£ºÈçǰÎÄÌáµ½µÄ£¬OpenBSD ²¢²»ÊÜÕâ¸öÎÊÌâµÄÓ°Ïì)¡£
°²È«µ£ÓÇ
ÕýÈçÉÏÎÄËùÌáµ½£¬OpenBSD ¸ù±¾²»Ö§³Ö IPv4 Ó³ÉäµÄ IPv6 Ì×½Ó×Ö¡£¼´Ê¹Ò»¸ö³ÌÐòÊÔ×Åͨ¹ý½« IPV6_V6ONLY Ñ¡ÏîÉèÖÃΪ 0 À´ÏÔʽµØÆôÓõØÖ·Ó³É䣬ËüµÄ×÷ÕßÒ²»á¸Ðµ½¾ÚÉ¥£¬ÒòΪÕâ¸öÉèÖÃÔÚ OpenBSD ϵͳÖÐÎÞЧ¡£Õâ¸ö¾ö¶¨±³ºóµÄÔÒòÊÇÕâ¸öÓ³Éä´øÀ´ÁËһЩ°²È«ÒþÓÇ¡£¹¥»÷´ò¿ªµÄ½Ó¿ÚµÄ¹¥»÷ÀàÐÍÓкܶàÖÖ£¬µ«ËüÃÇ×îºó¶¼»á»Øµ½¹æ¶¨µÄÁ½¸ö;¾¶µ½´ïÏàͬµÄ¶Ë¿Ú£¬Ã¿¸ö¶Ë¿Ú¶¼ÓÐËü×Ô¼ºµÄ¿ØÖƹæÔò¡£
Èκθø¶¨µÄ·þÎñÆ÷ϵͳ¿ÉÄܶ¼ÉèÖÃÁË·À»ðǽ¹æÔò£¬ÃèÊö¶Ë¿ÚµÄÔÊÐí·ÃÎÊȨÏÞ¡£Ò²Ðí»¹»áÓÐÊʵ±µÄ»úÖÆ£¬±ÈÈç TCP wrappers »òÒ»¸ö»ùÓÚ BPF µÄ¹ýÂËÆ÷£¬»òÒ»¸öÍøÂçÉϵÄ·ÓÉÆ÷¿ÉÒÔ×öÁ¬½Ó״̬ÐÒé¹ýÂË¡£½á¹û¿ÉÄÜÊǵ¼Ö·À»ðǽ±£»¤ºÍDZÔÚµÄËùÓÐÀàÐ͵ĻìÂÒÁ¬½ÓÖ®¼äµÄȱ¿ÚÔì³Éͬһ IPv4 µØÖ·¿ÉÒÔͨ¹ýÁ½¸ö²»Í¬µÄÐÒéµ½´ï¡£Èç¹ûµØÖ·Ó³ÉäÊÇÔÚÍøÂç±ß½çÍê³ÉµÄ£¬Çé¿öÉõÖÁ»á±äµÃ¸ü¼Ó¸´ÔÓ;²Î¿´Õâ¸ö 2003 ÄêµÄ RFC ²Ý°¸£¬ËüÃèÊöÁËÈç¹ûÓ³É䵨ַÔÚÖ÷»úÖ®¼ä´«²¥£¬Ò»Ð©ËæÖ®¶øÀ´µÄÆäËü¹¥»÷³¡¾°¡£
¸Ä±äϵͳºÍÈí¼þÕýÈ·µØ´¦Àí IPv4 Ó³ÉäµÄ IPv6 µØÖ·µ±È»¿ÉÒÔʵÏÖ¡£µ«ÄÇÔö¼ÓÁËϵͳµÄÕûÌ帴ÔÓ¶È£¬²¢ÇÒ¿ÉÒÔÈ·¶¨Õâ¸ö¸Ä¶¯Ã»ÓÐʵ¼ÊµØÍêÕûʵÏÖµ½ËüÓ¦¸ÃʵÏֵķ¶Î§ÄÚ¡£Èçͬ Theo de Raadt ˵µÄ£º
ÓÐʱºòÈËÃǽ«Ò»¸öÔã¸âµÄÏë·¨·Å½øÁË RFC¡£Ö®ºóËûÃÇ·¢ÏÖÕâ¸öÏë·¨ÊDz»¿ÉÄܵľͽ«Ëü¶ª»ØÀ¬»øÏäÁË¡£½á¹û¾ÍÊǸÅÄî±äµÃÈç´Ë¸´ÔÓ£¬Ã¿¸öÈ˶¼µÃÔÚ¹ÜÀíºÍ±àÂë·½ÃæÊǸöȫְר¼Ò¡£ÎÒÃÇÒ²¸ù±¾²»Çå³þÕâЩȫְר¼ÒÓжàÉÙÔÚʵ¼ÊÅäÖÃʹÓà IPv4 Ó³ÉäµÄ IPv6 µØÖ·µÄϵͳºÍÍøÂç¡£
ÓÐÈË¿ÉÄÜ»á˵£¬¾¡¹Ü IPv4 Ó³ÉäµÄ IPv6 µØÖ·Ôì³ÉÁ˰²È«Î£ÏÕ£¬¸ü¸ÄһϳÌÐòÈÃËüÔÚʵÏÖÁ˵ØÖ·Ó³ÉäµÄϵͳÉϹرյØÖ·Ó³ÉäÓ¦¸ÃûʲôΣº¦¡£µ« Theo ÈÏΪ²»Ó¦¸ÃÕâô×ö£¬ÓÐÁ½¸öÀíÓÉ¡£µÚÒ»¸öÊÇÓÐÐí¶àÆÆ¾ÉµÄ³ÌÐò£¬ËüÃÇÓÀÔ¶²»»á±»ÐÞ¸´¡£¶øÊµ¼ÊµÄÔÒòÊǸø·¢ÐаæÃÇÊ©¼ÓÁËѹÁ¦È¥Ä¬ÈϹرյØÖ·Ó³Éä¡£ÕýÈçËû˵µÄ£º¡°×îÖÕÓÐÈË»áÀí½âÕâ¸öΣº¦ÊÇϵͳÐԵ쬲¢¸ü¸ÄϵͳĬÈÏÐÐΪʹ֮¡®secure by default¡¯¡£¡±
Linux ÉϵĵØÖ·Ó³Éä
ÔÚ Linux ϵͳ£¬µØÖ·Ó³ÉäÓÉÒ»¸ö½Ð×ö net.ipv6.bindv6only µÄ sysctl ¿ª¹Ø¿ØÖÆ;ËüĬÈÏÉèÖÃΪ 0(ÆôÓõØÖ·Ó³Éä)¡£¹ÜÀíÔ±(»ò·¢ÐаæÃÇ)¿ÉÒÔͨ¹ý½«ËüÉèÖÃΪ 1 À´¹Ø±ÕµØÖ·Ó³É䣬µ«ÔÚ²¿ÊðÕâÑùÒ»¸öϵͳµ½Éú²ú»·¾³Ö®Ç°×îºÃÈ·ÈÏÈí¼þ¶¼ÄÜÕý³£¹¤×÷¡£Ò»¸ö¿ìËÙµ÷²éÏÔʾûÓÐÄĸöÖ÷Òª·¢Ðаæ¸Ä±äÕâ¸öĬÈÏÖµ;Debian ÔÚ 2009 ÄêµÄ ¡°squeeze¡± ÖиıäÁËÕâ¸öĬÈÏÖµ£¬µ«Õâ¸ö¸Ä¶¯ÆÆ»µÁ˺ܶàµÄÈí¼þ°ü(±ÈÈçÈκΰüº¬ Java µÄ³ÌÐò)£¬ÔÚ¾¹ýÁ˼¸´ÎµÄ Debian ʽµÄÌÖÂÛÖ®ºó£¬Ëü»Ö¸´µ½ÁËÔÀ´µÄÉèÖ᣿´ÉÏÈ¥²»ÉÙ³ÌÐòÒÀÀµÓÚĬÈÏÆôÓõØÖ·Ó³Éä¡£
OpenBSD ÓÐÒÔ¡°secure by default¡±µÄÃûÒå´òÆÆÆäºËÐÄϵͳ֮ÍâµÄ¶«Î÷µÄ´«Í³;¶ø Linux ·¢ÐаæÃÇÔò¸üÇãÏòÓÚÄÑÒÔ×÷³öÕâÑùµÄ¸Ä±ä¡£ËùÒÔÄÇЩһ°ã²»Ô¸ÒâÊÕµ½ËûÃÇÓû§µÄ²»ÂúµÄ·¢ÐаæÃÇ£¬²»Ì«¿ÉÄܺܿì¶Ô bindv6only µÄĬÈÏÉèÖÃ×÷³ö¸Ä±ä¡£ºÃÏûÏ¢ÊÇÕâ¸ö¹¦ÄÜ×÷ΪĬÈÏÒѾºÜ¶àÄêÁË£¬µ«ºÜÄÑÕÒµ½±»ÀûÓõÄÀý×Ó¡£µ«ÊÇ£¬ÕýÈçÎÒÃǶ¼ÖªµÀµÄ£¬Ë¶¼ÎÞ·¨±£Ö¤ÕâÑùµÄÀûÓò»¿ÉÄÜ·¢Éú¡£