概述 利用FreeBSD內核支持的BRIDGE、IPFIREWALL以及DUMMYNET選項,可以建立基於FreeBSD的透明流量控制防火牆(橋接模式),起到限制流量和包過濾的功能。 准備 可以在任何FreeBSD的兼容硬件上構建流量控制防火牆,但是基於性能和管理上的考慮,建議: 使用Intel PII450以上的處理器 使用至少128MB RAM 使用高性能10/100Mbps自適應網絡適配器 如果多於一組橋接設備,建議使用雙處理器系統 另外准備一塊單獨的網絡適配器用於管理 -------------------------------------------------------------------------------- 實例 聯想萬全1300 PC服務器,具有一顆Intel PII300處理器,配置有128MB RAM,主板集成Intel 82557網絡適配器,另外安裝了4塊3Com 3C905B 10/100Mbps自適應PCI網絡適配器。 -------------------------------------------------------------------------------- 安裝 安裝最新版本的FreeBSD。可以從www.FreeBSD.org獲取當前的FreeBSD版?..,請使用FreeBSD 4.3 RELEASE或者更高的版本。 必須安裝操作系統源代碼中的"sys"部分,安裝完成以後需要重新編譯系統內核以支持必要的流量控制防火牆選項。 -------------------------------------------------------------------------------- 實例 安裝FreeBSD-4.3-20010818-STABLE版本,從 FTP://releng4.freebsd.org/pub/FreeBSD/snapshots/i386/ 獲得。使用FTP安裝方式,安裝選項為: [X] bin [X] crypto [X] man [X] src->sys -------------------------------------------------------------------------------- 配置 完成操作系統安裝以後,必須重新編譯系統內核使其支持橋接流量控制防火牆選項。必須在系統內核編譯配置文件中添加以下內容: options BRIDGE options DUMMYNET options IPFIREWALL options IPFIREWALL_DEFAULT_TO_ACCEPT 重新編譯完系統內核以後必須重新啟動計算機。 -------------------------------------------------------------------------------- 實例 # cd /usr/src/sys/i386/conf # cp GENERIC BRGFW # echo "options BRIDGE" >> BRGFW # echo "options DUMMYNET" >> BRGFW # echo "options IPFIREWALL" >> BRGFW # echo "options IPFIREWALL_DEFAULT_TO_ACCEPT" >> BRGFW # config # cd ../../compile/BRGFW # make depend all install # reboot -------------------------------------------------------------------------------- 重新啟動計算機以後,使用以下命令激活橋接流量控制防火牆選項: sysctl -w net.link.ether.bridge_ipfw=1 sysctl -w net.link.ether.bridge_cfg="" sysctl -w net.link.ether.bridge=1 其中bridge_cfg參數用於設置多組橋接設備,如果僅考慮單組橋接,可以忽略。實例使用集成的Intel 82557網絡適配器作為管理網絡,其他3Com 3C905B網絡適配器分為兩組網橋使用。 -------------------------------------------------------------------------------- 實例 # sysctl -w net.link.ether.bridge_ipfw=1 # sysctl -w net.link.ether.bridge_cfg="xl0:0,xl1:0,xl2:1,xl3:1" # sysctl -w net.link.ether.bridge=1 -------------------------------------------------------------------------------- 使用 使用ipfw命令來控制流量和防火牆策略。其中流量控制是作為一條防火牆策略實現的,因此ipfw是唯一的管理界面。通過實例來說明ipfw的使用。 在實例中,網段192.168.254.0/24經過第一組網橋,網段192.168.250.0/24經過第二組網橋,並建立以下策略: 允許所有的ICMP連接,限制總流量為10Kbit/s 允許所有的UDP鏈接,限制總流量為100Kbit/s 允許TCP到網段192.168.254.0/24的所有連接,限制流量為5Mbit/s 允許TCP到主機192.168.250.222的HTTP連接,限制流量為2Mbit/s 允許TCP到主機192.168.250.0/24的所有其他連接,限制流量為1Mbit/s 禁止其他所有連接 -------------------------------------------------------------------------------- 實例 # ipfw -flush # ipfw add 100 pipe 1 icmp from any to any # ipfw pipe 1 config bw 10Kbit/s # ipfw add 200 pipe 2 udp from any to any # ipfw pipe 2 config bw 100Kbit/s # ipfw add 300 pipe 3 tcp from 192.168.254.0/24 to any # ipfw pipe 3 config bw 5Mbit/s # ipfw add 400 pipe 4 tcp from any to 192.168.254.0/24 # ipfw pipe 4 config bw 5Mbit/s # ipfw add 500 pipe 5 tcp from any to 192.168.250.222 80 # ipfw pipe 5 config bw 2Mbit/s # ipfw add 600 pipe 6 tcp from 192.168.250.222 80 to any # ipfw pipe 6 config bw 2Mbit/s # ipfw add 700 pipe 7 tcp from 192.168.250.0/24 to any # ipfw pipe 7 config bw 1Mbit/s # ipfw add 800 pipe 8 tcp from any to 192.168.250.0/24 # ipfw pipe 8 config bw 1Mbit/s # ipfw add 60000 deny ip from any to any # ipfw -a l