¡¡¡¡2003 Äê 7 Ô£¬ OpenBSD µÄ·À»ðǽ£¬ Ò²¾ÍÊdz£ËµµÄ PF ±»³É¹¦µØÒÆÖ²µ½ÁË FreeBSD ÉÏ£¬ ²¢¿ÉÒÔͨ¹ý FreeBSD Ports Collection À´°²×°ÁË£» µÚÒ»¸ö½« PF ¼¯³Éµ½»ù±¾ÏµÍ³Öеİ汾ÊÇ 2004 Äê 11 Ô·¢ÐÐµÄ FreeBSD 5.3¡£ PF ÊÇÒ»¸öÍêÕûµÄÌṩÁË´óÁ¿¹¦ÄܵķÀ»ðǽÈí¼þ£¬ ²¢ÌṩÁË¿ÉÑ¡µÄ ALTQ (½»´í¶ÓÁУ¬ Alternate Queuing) ¹¦ÄÜ¡£ ALTQ ÌṩÁË·þÎñÆ·ÖÊ (QoS) ´ø¿íÕûÐι¦ÄÜ¡£
¡¡¡¡OpenBSD ÏîÄ¿·Ç³£½Ü³öµÄά»¤×ÅÒ»·Ý PF FAQ¡£ ¾ÍÆä±¾Éí¶øÑÔ£¬ÕâÒ»½Ú×¢ÖØÓÚ FreeBSD µÄ PF ºÍÌṩһЩ¹ØÓÚʹÓ÷½ÃæµÄÒ»°ã³£Ê¶¡£¸üÏêϸµÄʹÓÃÐÅÏ¢Çë²ÎÔÄ PF FAQ¡£
¡¡¡¡¸ü¶àµÄÏêϸÐÅÏ¢£¬ ¿ÉÒÔÔÚ FreeBSD °æ±¾µÄ PF ÍøÕ¾ÉÏÕÒµ½£º http://pf4freebsd.love2party.net/¡£
¡¡¡¡Òª¼ÓÔØ PF ÄÚºËÄ£¿é£¬ ¿ÉÒÔÔÚ /etc/rc.conf ÖмÓÈëÏÂÃæµÄÉèÖãº
pf_enable="YES"
¡¡¡¡È»ºóʹÓÃÆô¶¯½Å±¾À´¼ÓÔØÄ£¿é£º
# /etc/rc.d/pf start
¡¡¡¡ÐèҪ˵Ã÷µÄÊÇ£¬ Èç¹ûϵͳÖÐûÓйæÔò¼¯ÅäÖÃÎļþ£¬ ÔòÉÏÊö²Ù×÷²»»á¼ÓÔØ PF Ä£¿é¡£ ÅäÖÃÎļþµÄĬÈÏλÖÃÊÇ /etc/pf.conf¡£ Èç¹û PF ¹æÔò¼¯ÔÚÆäËûλÖ㬠¿ÉÒÔÓÃÏÂÃæµÄ /etc/rc.conf ÅäÖÃÀ´¸æËß PF£º
pf_rules="/path/to/pf.conf"
¡¡¡¡pf.conf µÄÀý×Ó¿ÉÒÔÔÚ /usr/share/examples/pf/ ÕÒµ½¡£
¡¡¡¡PF Ä£¿éÒ²¿ÉÒÔÊÖ¹¤´ÓÃüÁîÐмÓÔØ£º
# kldload pf.ko
¡¡¡¡PF µÄÈÕÖ¾¼Ç¼¹¦ÄÜÊÇÓÉ pflog.ko ÌṩµÄ£¬ ͨ¹ýÔÚ /etc/rc.conf ÖмÓÈëÏÂÃæµÄÉèÖãº
pflog_enable="YES"
¡¡¡¡È»ºóʹÓÃÆô¶¯½Å±¾À´¼ÓÔØÄ£¿é£º
# /etc/rc.d/pflog start
¡¡¡¡Èç¹ûÄúÐèÒªÆäËû PF ÌØÐÔ£¬ ÔòÐèÒª½« PF Ö§³ÖÁª±à½øÄںˡ£
¡¡¡¡ËäÈ»Äã²»±ØÇ××Ô°Ñ¶Ô PF µÄÖ§³Ö±àÒë½ø FreeBSD Äںˣ¬µ«ÊÇÓÐʱÄãÈÔÈ»ÐèÒªÕâô×öÀ´Ê¹Óõ½ PF µÄijЩûÓб»ÊÕ¼½ø¿É¼ÓÔØÄ£¿éµÄ¸ß¼¶ÌØÐÔ£¬±ÈÈç pfsync(4) αÉ豸ÓÃÀ´·¢ËÍijЩ¸Ä±äµ½PF ״̬±í¡£ ËüÄÜÅäºÏ carp(4) ʹÓà PF ½¨Á¢Ö§³Ö¹ÊÕÏ×ªÒÆµÄ·À»ðǽ¡£ ¸ü¶àÓÐ¹Ø CARP µÄÏêϸÐÅÏ¢¿ÉÒÔ²ÎÔı¾ÊÖ²áµÄ µÚ 31.13 ½Ú¡£
¡¡¡¡The PF kernel options can be found in /usr/src/sys/conf/NOTES and are reproduced below:
¡¡¡¡ÓÐ¹Ø PF µÄÄÚºËÑ¡Ïî¿ÉÒÔÔÚ /usr/src/sys/conf/NOTES ÖÐÕÒµ½£¬ ÒÔÏÂÒ²ÂÔÓвûÊö£º
device pf device pflog device pfsync
¡¡¡¡device pf Ñ¡ÏîÓÃÓÚÆôÓà ¡°Packet Filter¡± ·À»ðǽµÄÖ§³Ö £¨pf(4)£©¡£
¡¡¡¡device pflog ÆôÓÿÉÑ¡µÄ pflog(4) Î±ÍøÂçÉ豸£¬ ÓÃÒÔͨ¹ý bpf(4) ÃèÊö·ûÀ´¼Ç¼Á÷Á¿¡£ pflogd(8) ·þÎñ¿ÉÒÔÓÃÀ´´æ´¢ÐÅÏ¢£¬ ²¢°ÑËüÃÇÒÔÈÕÖ¾ÐÎʽ¼Ç¼µ½´ÅÅÌÉÏ¡£
¡¡¡¡device pfsync Ñ¡ÏîÆôÓÿÉÑ¡µÄ pfsync(4) Ö§³Ö£¬ÕâÊÇÓÃÓÚ¼àÊÓ ¡°×´Ì¬±ä¸ü¡± µÄÎ±ÍøÂçÉ豸¡£
¡¡¡¡The following rc.conf(5) statements configure PF and pflog(4) at boot:
¡¡¡¡ÒÔÏ rc.conf(5) ÖеÄÓï¾äÓÃÓÚÆô¶¯Ê±ÅäÖà PF ºÍ pflog(4)
pf_enable="YES" # ÆôÓà PF (Èç¹ûÐèÒªµÄ»°£¬ ×Ô¶¯¼ÓÔØÄÚºËÄ£¿é) pf_rules="/etc/pf.conf" # pf ʹÓõĹæÔò¶¨ÒåÎļþ pf_flags="" # Æô¶¯Ê±´«µÝ¸ø pfctl µÄÆäËûÑ¡Ïî pflog_enable="YES" # Æô¶¯ pflogd(8) pflog_logfile="/var/log/pflog" # pflogd ÓÃÓڼǼÈÕÖ¾µÄÎļþÃû pflog_flags="" # Æô¶¯Ê±´«µÝ¸ø pflogd µÄÆäËûÑ¡Ïî
¡¡¡¡Èç¹ûÄúµÄ·À»ðǽºóÃæÓÐÒ»¸ö LAN£¬ ¶øÇÒÐèҪͨ¹ýËüÀ´×ª·¢ LAN Éϵİü£¬ »ò½øÐÐ NAT£¬ »¹ÐèҪͬʱÆôÓÃÏÂÊöÑ¡Ï
gateway_enable="YES" # ÆôÓÃΪ LAN Íø¹Ø
¡¡¡¡PF »á´Ó pf.conf(5) (ĬÈÏΪ /etc/pf.conf) ÎļþÖжÁÈ¡ÅäÖùæÔò£¬ ²¢¸ù¾ÝÄÇÀïµÄ¹æÔòÐ޸ġ¢¶ªÆú»òÈÃÊý¾Ý°üͨ¹ý¡£ ĬÈϰ²×°µÄ FreeBSD ÒѾÌṩÁËһЩ¼òµ¥µÄÀý×Ó·ÅÔÚ /usr/share/examples/pf/ Ŀ¼Ï¡£ Çë²ÎÔÄ PF FAQ »ñÈ¡ÍêÕûµÄ PF ¹æÔòÐÅÏ¢¡£
¾¯¸æ: ÔÚä¯ÀÀ PF FAQ ʱ£¬ Çëʱ¿Ì×¢Òⲻͬ°æ±¾µÄ FreeBSD ¿ÉÄÜ»áʹÓò»Í¬°æ±¾µÄ PF¡£ Ŀǰ£¬ FreeBSD ʹÓõÄÊÇÓë OpenBSD 4.1 ÏàͬµÄ PF°æ±¾¡£
¡¡¡¡FreeBSD packet filter ÓʼþÁбí ÊÇÒ»¸öÌáÓйØÅäÖÃʹÓà PF ·À»ðǽÎÊÌâµÄºÃµØ·½¡£ÇëÔÚÌáÎÊ֮ǰ²éÔÄÓʼþÁбíµÄ¹éµµ£¡
¡¡¡¡Ê¹Óà pfctl(8) ¿ÉÒÔ¿ØÖÆ PF¡£ ÒÔÏÂÊÇһЩʵÓõÄÃüÁî £¨Çë²éÔÄ pfctl(8) »ñµÃÈ«²¿¿ÉÓõÄÑ¡Ï:
¡¡¡¡ALTQ Ö»ÓÐÔÚ×÷Ϊ±àÒëÑ¡Ïî¼ÓÈëµ½ FreeBSD ÄÚºËʱ²ÅÄÜʹÓá£ALTQ Ŀǰ»¹²»ÊÇËùÓеĿÉÓÃÍø¿¨Çý¶¯¶¼Äܹ»Ö§³ÖµÄ¡£ Çë²Î¼û altq(4) Áª»úÊÖ²áÁ˽âÄúÕýʹÓÃµÄ FreeBSD °æ±¾ÖеÄÇý¶¯Ö§³ÖÇé¿ö¡£
¡¡¡¡ÏÂÃæÕâЩѡÏÆôÓà ALTQ ÒÔ¼°Ò»Ð©¸½¼ÓµÄ¹¦ÄÜ£º
options ALTQ options ALTQ_CBQ # »ùÓÚ·ÖÀàµÄÅÅÁÐ (CBQ) options ALTQ_RED # Ëæ»úÏÈÆÚ¼ì²â (RED) options ALTQ_RIO # ¶Ô½øÈëºÍ·¢³öµÄ°ü½øÐÐ RED options ALTQ_HFSC # ´øµÈ¼¶µÄ°üµ÷¶ÈÆ÷ (HFSC) options ALTQ_PRIQ # °´ÓÅÏȼ¶µÄÅÅÁÐ (PRIQ) options ALTQ_NOPCC # ÔÚÁª±à SMP ÄÚºËʱ±ØÐëʹÓ㬽ûÖ¹¶ÁʱÖÓ
¡¡¡¡options ALTQ ½«ÆôÓà ALTQ ¿ò¼ÜµÄÖ§³Ö¡£
¡¡¡¡options ALTQ_CBQ ÓÃÓÚÆôÓà »ùÓÚ·ÖÀàµÄ¶ÓÁÐ (CBQ) Ö§³Ö¡£ CBQ ÔÊÐíÄú½«Á¬½Ó·Ö³É²»Í¬µÄÀà±ð£¬ »òÕß˵£¬ ¶ÓÁУ¬ ÒÔ±ãÔÚ¹æÔòÖÐΪËüÃÇÖ¸¶¨²»Í¬µÄÓÅÏȼ¶¡£
¡¡¡¡options ALTQ_RED ½«ÆôÓÃ Ëæ»úÔ¤¼ì²â (RED)¡£ RED ÊÇÒ»ÖÖÓÃÓÚ·ÀÖ¹ÍøÂçÓµÈûµÄ¼¼Êõ¡£ RED ¶ÈÁ¿¶ÓÁеij¤¶È£¬ ²¢½«ÆäÓë¶ÓÁеÄ×î´óºÍ×îС³¤¶ÈãÐÖµ½øÐбȽϡ£ Èç¹û¶ÓÁйý³¤£¬ Ôòеİü½«±»¶ªÆú¡£ ÈçÃûËùʾ£¬ RED ´Ó²»Í¬µÄÁ¬½ÓÖÐËæ»úµØ¶ªÆúÊý¾Ý°ü¡£
¡¡¡¡options ALTQ_RIO ½«ÆôÓà ³öÈëµÄËæ»úÔ¤¼ì²â¡£
¡¡¡¡options ALTQ_HFSC ÆôÓà ²ã´Îʽ¹«Æ½·þÎñƽ»¬°üµ÷¶ÈÆ÷¡£ ÒªÁË½â¹ØÓÚ HFSC ½øÒ»²½µÄÐÅÏ¢£¬ Çë²Î¼û http://www-2.cs.cmu.edu/~hzhang/HFSC/main.html¡£
¡¡¡¡options ALTQ_PRIQ ÆôÓà ÓÅÏȶÓÁÐ (PRIQ)¡£ PRIQ Ê×ÏÈÔÊÐí¸ßÓÅÏȼ¶¶ÓÁÐÖеİüͨ¹ý¡£
¡¡¡¡options ALTQ_NOPCC ÆôÓà ALTQ µÄ SMP Ö§³Ö¡£ Èç¹ûÊÇ SMP ϵͳ£¬ Ôò±ØÐëʹÓÃËü¡£
±¾ÎĵµºÍÆäËüÎĵµ¿É´ÓÕâÀïÏÂÔØ£ºftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
Èç¹û¶ÔÓÚFreeBSDÓÐÎÊÌ⣬ÇëÏÈÔĶÁÎĵµ£¬Èç²»Äܽâ¾öÔÙÁªÏµ<questions@FreeBSD.org>.
¹ØÓÚ±¾ÎĵµµÄÎÊÌâÇë·¢ÐÅÁªÏµ <doc@FreeBSD.org>.