隨著教育現(xiàn)代化的不斷推進(jìn),校園網(wǎng)已成為學(xué)校重要的基礎(chǔ)設(shè)施,擔(dān)當(dāng)著學(xué)校教學(xué)、科研、管理和對(duì)外交流等角色。隨著學(xué)校上網(wǎng)計(jì)算機(jī)的數(shù)量不斷增加,對(duì)上網(wǎng)的穩(wěn)定性要求也越來越高。實(shí)力雄厚的學(xué)校一般都配有專業(yè)的硬件防火墻作為出口設(shè)備,但對(duì)大多數(shù)學(xué)校而言,單獨(dú)購(gòu)買費(fèi)用實(shí)在不小。筆者所在學(xué)校為江蘇省四星級(jí)高中,校園網(wǎng)為2005年底建設(shè),隨著校園網(wǎng)絡(luò)用戶的增多、教師學(xué)生網(wǎng)絡(luò)應(yīng)用水平的提高、校園網(wǎng)絡(luò)應(yīng)用的頻繁,原先的防火墻已難以滿足現(xiàn)有的網(wǎng)絡(luò)環(huán)境需要。出于成本的考慮,并基于對(duì)原先某防火墻的研究,通過反復(fù)的實(shí)踐,筆者成功將pfSense防火墻應(yīng)用于校園網(wǎng)絡(luò),下面將做法與大家分享。
關(guān)于pfSense
pfSense是一個(gè)免費(fèi)的、開源的、經(jīng)過改造的FreeBSD的定制版本,它主要用作防火墻和路由器。pfSense是一項(xiàng)民心工程,自成立以來,有超過100萬次的下載和無數(shù)次的安裝,被小型家庭網(wǎng)絡(luò)用來保護(hù)其計(jì)算機(jī)和Xbox;大型公司、大學(xué)和其他組織用來保護(hù)數(shù)以千計(jì)的網(wǎng)絡(luò)設(shè)備。它包括所有最昂貴的商業(yè)防火墻的功能,例如防火墻、狀態(tài)表、NAT、冗余、負(fù)載均衡、VPN、報(bào)告和監(jiān)測(cè)、動(dòng)態(tài)DNS、用戶認(rèn)證、DHCP服務(wù)器和中繼等。所有這些都通過Web管理界面進(jìn)行配置(SSL),并支持遠(yuǎn)程管理和軟件版本升級(jí)。
硬件準(zhǔn)備、安裝及網(wǎng)絡(luò)環(huán)境
pfSense對(duì)硬件的要求并不高,但為保證防火墻性能和穩(wěn)定性,建議根據(jù)帶機(jī)量的多少,直接購(gòu)買相應(yīng)防火墻硬件,價(jià)格從1000元到2000元不等。也可以DIY,PC+網(wǎng)卡,單線接入需兩塊網(wǎng)卡,雙線三塊,建議選擇Intel百兆或千兆網(wǎng)卡,這樣成本更低。
pfSense可實(shí)現(xiàn)免光驅(qū)安裝,制作啟動(dòng)U盤,將下載的physdiskwrite.exe和對(duì)應(yīng)的*.img.gz文件拷貝到U盤根目錄,啟動(dòng)Win2003 PE,在DOS提示符下使用格式:physdiskwrite [-u]
我校的整個(gè)網(wǎng)絡(luò)如下:雙線——PF防火墻——三層核心交換機(jī)——二層交換機(jī)——用戶。防火墻LAN接口IP為172.16.0.2/30,連接到三層交換機(jī)的vlan120接口。內(nèi)網(wǎng)被劃分為vlan10、vlan20、vlan30……vlan110、vlan120,以實(shí)現(xiàn)相互間的2層隔離,各vlan對(duì)應(yīng)的IP 子網(wǎng)分別為192.168.10.0/24 、192.168.20.0/24 、192.168.30.0/24……192.168.110.0/24、172.16.0.0/30,vlan間通過3層核心交換機(jī)的IP 轉(zhuǎn)發(fā)能力實(shí)現(xiàn)子網(wǎng)互連。三層交換機(jī)上各SVI地址分別為192.168.10.1/24、192.168.20.1/24、192.168.30.1/24……192.168.110.1/24、172.16.0.1/30,即各vlan網(wǎng)關(guān)地址。三層交換機(jī)有如下默認(rèn)路由:ip route 0.0.0.0 0.0.0.0 Vlan 120 172.16.0.2 1 enabled(銳捷S6806E)。關(guān)于二層、三層交換機(jī)的配置不再贅述。
pfSense配置
1. 初步設(shè)定
筆者安裝的為pfSense-2.0.2-RELEASE-1g-i386-nanobsd.img嵌入式版本,通過超級(jí)終端連接到防火墻進(jìn)行初步設(shè)定。
第一次啟動(dòng)PF防火墻,可以看到系統(tǒng)檢測(cè)到的網(wǎng)卡,Intel百兆、千兆網(wǎng)卡名稱分別為fxp0、fxp1、fxp2和 em0、em1、em2等。
第一步是要不要做VLAN設(shè)定(Do you want to set up VLANs now [y|n]),一般我們選擇n。接下來就是依次設(shè)定WAN、LAN、OPT1等接口的網(wǎng)卡名稱,筆者的設(shè)定,WAN是em1,LAN是em0,OPT1是em2。按Enter鍵結(jié)束設(shè)定。設(shè)定結(jié)束后會(huì)先顯示剛剛所做的網(wǎng)絡(luò)設(shè)定,并詢問是否繼續(xù)(Do you want to proceed [y/n]?)按y寫入PF防火墻。
最后,我們還需要根據(jù)網(wǎng)絡(luò)規(guī)劃重新設(shè)定下LAN口的IP地址(默認(rèn)為192.168.1.1),在超級(jí)終端環(huán)境下輸入2進(jìn)入接口IP設(shè)置向?qū)В⊿et interface(s) IP address),根據(jù)提示分別輸入要設(shè)置的接口序號(hào)、IP地址、子網(wǎng)掩碼,如2,172.16.0.2,30。當(dāng)提示是否需要啟用DHCP server時(shí),這里筆者選否,因?yàn)槲覍HCP服務(wù)器架設(shè)在Windows 2003上了。
至此,初步設(shè)定全部完成,接下來就可以通過瀏覽器連接到https://172.16.0.2作進(jìn)一步的設(shè)定,Username為admin,Password 為pfSense。建議采用雙機(jī)互聯(lián)完成調(diào)試,最后上架,調(diào)試客戶端IP設(shè)為172.16.0.1,子網(wǎng)掩碼為255.255.255.252。同時(shí)請(qǐng)采用火狐瀏覽器,否則可能會(huì)出現(xiàn)pfSenseWeb界面打開而沒有菜單選項(xiàng)的情況。
2. 雙線設(shè)置
筆者所在單位原電信接入,后增加區(qū)教育城域網(wǎng)移動(dòng)接入,均為光纖固定IP,現(xiàn)使用PfSense實(shí)現(xiàn)雙WAN接入Internet,并實(shí)現(xiàn)如下功能:
(1)負(fù)載均衡:允許pfSense把LAN流量通過負(fù)載均衡來達(dá)到多WAN帶寬疊加的效果。
(2)策略路由:訪問城域網(wǎng)內(nèi)網(wǎng)上閱卷系統(tǒng)、各資源服務(wù)器走移動(dòng)線路。
步驟一:配置網(wǎng)絡(luò)接口
登錄pfSense Web GUI配置界面,分別點(diǎn)擊菜單Interfaces→WAN、Interfaces→OPT1進(jìn)入接口配置界面,完成相關(guān)配置:Enable項(xiàng)勾選Enable Interface,WAN口默認(rèn)已勾選;Type項(xiàng)選擇Static;IP address項(xiàng),WAN口為218.91.234.211/29,OPT1口為221.178.217.166/28;Gateway項(xiàng),通過點(diǎn)擊 add a new one,在彈出的Add new Gateway界面Gateway IP欄添加對(duì)應(yīng)的網(wǎng)關(guān)IP,WAN口為218.91.234.209,OPT1口為221.178.217.161,Description欄可輸入合適的英文描述;其余保持默認(rèn),點(diǎn)擊頁(yè)面最下端的Save保存。
提示:凡出現(xiàn)Apply changes按鈕請(qǐng)點(diǎn)擊使修改生效。下同。
筆者這里兩條WAN接口都是靜態(tài)地址,實(shí)際應(yīng)用中需根據(jù)實(shí)際網(wǎng)絡(luò)參數(shù)情況選擇Type,如PPPoE或者DHCP方式等。pfSense支持多條PPPoE接口的多WAN模式。
步驟二:配置網(wǎng)關(guān)
點(diǎn)擊菜單System→Routing,在Gateways標(biāo)簽頁(yè),點(diǎn)擊右下角“+”圖標(biāo),進(jìn)入網(wǎng)關(guān)編輯界面,完成如下配置,結(jié)果如圖1所示。
(1)Interface項(xiàng)選LAN;
(2)Name項(xiàng)填入網(wǎng)關(guān)名稱,如3SwitchGW,必填;
(3)Gateway項(xiàng)填入172.16.0.1,此處為三層交換的Vlan120網(wǎng)關(guān)IP地址;
(4)Description項(xiàng)填入合適的描述,如3SwitchGW,可選;
(5)其余保持默認(rèn),點(diǎn)擊Save 保存。
圖1
提示:要確保每一個(gè)WAN接口都被分配一個(gè)可用網(wǎng)關(guān)地址。WAN 接口若是靜態(tài) IP,需指定網(wǎng)關(guān)地址,若是DHCP/PPPoE及其他類型,該接口會(huì)自動(dòng)獲得網(wǎng)關(guān)地址。
點(diǎn)擊網(wǎng)關(guān)項(xiàng)目后面的“e”圖標(biāo),進(jìn)入網(wǎng)關(guān)編輯界面,隨后點(diǎn)擊“Advanced”按鈕,可進(jìn)入高級(jí)設(shè)置界面。其中有權(quán)重(Weight)選項(xiàng)可根據(jù)線路帶寬情況做微調(diào),其余可不做調(diào)整。在默認(rèn)情況下,所有具有相同優(yōu)先級(jí)的 WAN接口在被應(yīng)用于負(fù)載均衡時(shí)被視為同等級(jí)別。如果你的一系列WAN接口有著不同的接入速度,那么,通過設(shè)定權(quán)重參數(shù)可以給相對(duì)快些的接口增加些權(quán)重值。如果你同時(shí)有一條50Mb/s的接入線路和一條10Mb/s的接入線路,你應(yīng)該不會(huì)把它們同等對(duì)待吧,否則將會(huì)有可能出現(xiàn)50Mb/s的線路處于相對(duì)空閑,而10Mb/s的線路卻處于過載狀態(tài)。
步驟三:添加靜態(tài)路由
點(diǎn)擊菜單System→Routing,選擇Rouers標(biāo)簽頁(yè),點(diǎn)擊右上角“+”圖標(biāo),進(jìn)入靜態(tài)路由編輯界面,完成如下配置,結(jié)果如圖2所示。
(1)Destination network項(xiàng)填入192.168.0.0,子網(wǎng)掩碼選16;
(2)Gateway項(xiàng)選3SwitchGW-172.16.0.1;
(3)Description填入合適的描述,如to3switch,可選;
(4)點(diǎn)擊Save保存。
圖2
提示:此處實(shí)施CIDR技術(shù)將192.168.10.0/24 、192.168.20.0/24 、192.168.30.0/24……192.168.110.0/24多網(wǎng)段匯聚成192.168.0.0/16。下同。
步驟四:添加網(wǎng)關(guān)組
點(diǎn)擊菜單System→Routing,選擇Groups標(biāo)簽頁(yè),點(diǎn)擊右下角“+”圖標(biāo),進(jìn)入網(wǎng)關(guān)組編輯界面,完成如下配置,結(jié)果如圖3所示。
(1)Group Name項(xiàng)填入網(wǎng)關(guān)組名稱,如balance;
(2)Gateway Priority項(xiàng),WANGW選Tier1,OPT1GW選Tier1,3SwitchGW選Never;
(3)Trigger Level項(xiàng)選Member Down;
(4)點(diǎn)擊Save保存。
圖3
在一個(gè)網(wǎng)關(guān)組中,你可以把每一個(gè)所要用到的網(wǎng)關(guān)指定到一個(gè)優(yōu)先級(jí)(Priority)中。較小的優(yōu)先級(jí)編號(hào)將會(huì)被首選,也就是說編號(hào)越小,優(yōu)先級(jí)越高。如果同一網(wǎng)關(guān)組中兩個(gè)網(wǎng)關(guān)有著相同的優(yōu)先級(jí),它們將被設(shè)為負(fù)載均衡狀態(tài),這時(shí),總流量將被以單個(gè)連接為單位,從這其中的每一個(gè)網(wǎng)關(guān)輪流路由出去。如果它們有著不同的優(yōu)先級(jí),低優(yōu)先級(jí)的將被作為高優(yōu)先級(jí)線路發(fā)生故障時(shí)的備份線路。如果優(yōu)先級(jí)被設(shè)為“從不”,那么這個(gè)網(wǎng)關(guān)就相當(dāng)于被認(rèn)為不在這個(gè)組中(禁用狀態(tài))。
步驟五:配置防火墻規(guī)則
定義一個(gè)網(wǎng)關(guān)組只是雙線策略的開始。你必須通過指定防火墻規(guī)則所作用的網(wǎng)關(guān)來實(shí)現(xiàn)負(fù)載均衡或策略路由。
點(diǎn)擊菜單 Firewall→Rules,選擇 LAN 標(biāo)簽頁(yè),進(jìn)入 LAN 接口防火墻規(guī)則界面,點(diǎn)擊右上角“+”圖標(biāo)進(jìn)入防火墻規(guī)則編輯界面,完成負(fù)載均衡規(guī)則配置:Action項(xiàng)選Pass;Interface項(xiàng)選LAN;Protocol項(xiàng)選any;Source項(xiàng),Type選Network,Address輸入192.168.0.0,子網(wǎng)掩碼選16;Destination項(xiàng)選any;點(diǎn)擊Advanced features類下的Gateway項(xiàng)的Advanced按鈕,在下拉菜單中將default修改為balance;其余默認(rèn),點(diǎn)擊Save保存。
在LAN 接口防火墻規(guī)則界面,如圖4所示,點(diǎn)擊右上角“+”圖標(biāo)進(jìn)入防火墻規(guī)則編輯界面,完成如下策略路由規(guī)則配置。
(1)Action項(xiàng)選Pass;
(2)Interface項(xiàng)選LAN;
(3)Protocol項(xiàng)選any;
(4)Source項(xiàng),Type選Network,Address輸入192.168.0.0,子網(wǎng)掩碼選16;
(5)Destination項(xiàng),Type選Network,Address輸入221.176.0.0,子網(wǎng)掩碼選13;
(6)點(diǎn)擊Advanced features類下的Gateway項(xiàng)的Advanced按鈕,在下拉菜單中將default修改為OPT1GW-221.178.217.161;
(7)其余默認(rèn),點(diǎn)擊Save保存。
圖4
提示:此處Destination項(xiàng)的選擇依據(jù)是,首先通過ping或tracert命令查詢到區(qū)教育門戶網(wǎng)站(www.tzjy.gov.cn)的IP為221.178.217.2,網(wǎng)上閱卷系統(tǒng)服務(wù)器地址為221.178.217.10,其余各服務(wù)器地址為221.178.217.5,221.178.217.6,221.178.217.7等,訪問http://www.apnic.net/apnic-info/whois_search,查詢以上任意IP,從查詢結(jié)果得知路由匯總為221.176.0.0/13。
提示:這些規(guī)則將按自上而下的順序起作用,并且匹配過程中只要有一個(gè)規(guī)則被匹配,匹配過程就將結(jié)束,因此在本例中我們必須將策略路由規(guī)則置于負(fù)載均衡規(guī)則的上方。
3. NAT設(shè)置
NAT(Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換),在這里我們通過NAT技術(shù)實(shí)現(xiàn)以下功能。
(1)局域網(wǎng)內(nèi)的多臺(tái)計(jì)算機(jī)通過 1 個(gè)或多個(gè)公網(wǎng) IP 地址接入互聯(lián)網(wǎng);
(2)發(fā)布局域網(wǎng)內(nèi)部的WWW服務(wù)器到互聯(lián)網(wǎng),同理可發(fā)布FTP服務(wù)器。
點(diǎn)擊菜單Firewall→NAT,選擇Outbound標(biāo)簽頁(yè),選擇Manual Outbound NAT rule generation Mode,并點(diǎn)Save保存。
點(diǎn)擊“+”圖標(biāo),進(jìn)入Firewall: NAT: Outbound編輯界面,完成相關(guān)配置:Interface項(xiàng)選WAN;Protocol項(xiàng)選any;Source項(xiàng),type選network,Address輸入192.168.0.0,子網(wǎng)掩碼選16;Destination:any;其余默認(rèn),點(diǎn)save保存。
同理完成Interface為OPT1映射的添加,結(jié)果如圖5所示。
圖5
點(diǎn)擊菜單Firewall→NAT,選擇Port Forward標(biāo)簽頁(yè),如圖6所示,點(diǎn)擊“+”圖標(biāo),進(jìn)入Firewall: NAT: Port Forward編輯界面,完成相關(guān)配置:Interface項(xiàng)選WAN;Protocol選TCP;Source項(xiàng),type:any;Source port range項(xiàng),from:any to:any;Destination項(xiàng),type:WAN address;Destination port range項(xiàng),from:http to:http;Redirect target IP項(xiàng)填入192.168.70.3;Redirect target port:http;其余默認(rèn),點(diǎn)save保存。
注:此處192.168.70.3為Windows 2003 WWW服務(wù)器地址。
圖6
點(diǎn)擊菜單System→Advanced,選擇Firewall/NAT標(biāo)簽頁(yè),如圖7所示,取消Network Address Translation類下的Disable NAT Reflection for port forwards項(xiàng)的默認(rèn)提勾。此處主要解決回流問題,也就是當(dāng)內(nèi)網(wǎng)有服務(wù)映射到網(wǎng)關(guān)后,內(nèi)網(wǎng)主機(jī)可以從內(nèi)網(wǎng)訪問網(wǎng)關(guān)外部地址上映射的服務(wù)。
圖7
4. DNS轉(zhuǎn)發(fā)
為提高客戶端DNS查詢效率,同時(shí)減少發(fā)往外部的DNS流量,這里我們啟用了DNS轉(zhuǎn)發(fā)服務(wù)。
第一步,點(diǎn)擊菜單Services→DNS Forwarder,在Services: DNS forwarder配置界面下將General DNS Forwarder Options類下的Enable項(xiàng)的Enable DNS forwarder勾選(默認(rèn)),如圖8所示。
圖8
第二步,點(diǎn)擊菜單System→General Setup,在System: General Setup配置界面下分別設(shè)置電信DNS服務(wù)器IP到WAN口和移動(dòng)DNS服務(wù)器IP到OPT1口,如圖9所示。
圖9
至此各網(wǎng)段客戶端均能上網(wǎng),客戶端DNS服務(wù)器均設(shè)為172.16.0.2。
5. 流量控制
為避免內(nèi)網(wǎng)部分用戶使用迅雷、快車、旋風(fēng)等下載工具瘋狂下載,占用大量的帶寬資源,導(dǎo)致網(wǎng)速很慢,甚至達(dá)到學(xué)校網(wǎng)絡(luò)出口的帶寬極限,我們使用流量整形功能實(shí)行網(wǎng)段限速,每個(gè)IP上行下行最大占用帶寬均為3M,可根據(jù)實(shí)際情況調(diào)整,一般2M下行速率在線看視頻不卡,如要降低P2P下載可將上行速率調(diào)小。
限速的步驟是先創(chuàng)建Limiter(需單獨(dú)為上傳下載創(chuàng)建limiter),然后在Firewall→ rule→Lan 規(guī)則的高級(jí)特性 In/Out 中應(yīng)用limiter。
因?yàn)閘imiter是被應(yīng)用在Lan接口的Rule里,而相對(duì)pfSense防火墻來說,用戶發(fā)往 Lan口的流量為In,pfSense通過Lan口發(fā)給用戶的流量為Out,因此限制上傳的limiter需應(yīng)用在In方向,limiter的Mask值應(yīng)該為“Source Address”,下載的Limiter需應(yīng)用在Out方向, limiter的Mask值應(yīng)該為“Destination Address”。
(1)添加Limiter
點(diǎn)擊菜單Firewall→Traffic Shaper,進(jìn)入流量整形編輯界面,選擇Limiter,如圖10所示,點(diǎn)擊“+”圖標(biāo),增加相關(guān)配置:Enable項(xiàng)勾選Enable limiter and its children;Name項(xiàng)輸入3Mdown; Bandwidth項(xiàng),輸入3,選擇Mbit/s;Mask選擇Destination Address;其余默認(rèn),點(diǎn)Save保存。
同理,完成3Mup的Limiter的添加。
圖10
(2)配置防火墻規(guī)則
點(diǎn)擊菜單 Firewall→Rules,選擇 LAN 標(biāo)簽頁(yè),進(jìn)入 LAN 接口防火墻規(guī)則界面,如圖11所示,點(diǎn)擊之前雙線設(shè)置部分所添加的負(fù)載均衡規(guī)則后的 “e”圖標(biāo)進(jìn)入防火墻規(guī)則編輯界面,將Advanced features類下的In/Out項(xiàng)的修改為3Mup/3Mdown。
圖11
提示:以上我們是對(duì)所有的網(wǎng)段進(jìn)行限速,如需對(duì)個(gè)別網(wǎng)段、個(gè)別IP限速的話,需另行創(chuàng)建Limiter,并添加對(duì)應(yīng)的防火墻規(guī)則,并置于負(fù)載均衡規(guī)則的上方,這是由于防火墻規(guī)則匹配是自上而下,匹配成功就不再往下進(jìn)行。此處我們未對(duì)策略路由規(guī)則做限速處理,主要是因?yàn)榫W(wǎng)上閱卷系統(tǒng)傳輸?shù)膱D片均比較大,且城域網(wǎng)服務(wù)器上還有大量的教育教學(xué)視頻資源等。
6. 流量監(jiān)控
為追蹤網(wǎng)絡(luò)內(nèi)各IP流量情況,在這里我們安裝了bandwidthd進(jìn)行流量統(tǒng)計(jì),它是以網(wǎng)絡(luò)中各自獨(dú)立的IP為對(duì)象,以圖形化、網(wǎng)頁(yè)化的方式,用不同的色彩來顯示HTTP、TCP、UDP、ICMP、VPN,以及P2P協(xié)議的網(wǎng)絡(luò)流量情況。
點(diǎn)擊菜單System→Packages,選擇Available Packages標(biāo)簽,在頁(yè)面左側(cè)Package Name欄找到bandwidthd,并點(diǎn)擊該行右側(cè)的“+”圖標(biāo)完成該包的安裝。
點(diǎn)擊菜單Services→BandwidthD,在bandwidthd配置界面完成相關(guān)配置:Enable bandwidthd項(xiàng),打勾;Interface項(xiàng),選擇LAN;Subnet項(xiàng),輸入所需要監(jiān)控的網(wǎng)段,如192.168.10.0/25;192.168.20.0/25;其余默認(rèn),移至頁(yè)面最下端點(diǎn)Save。
注:如需要監(jiān)控多個(gè)網(wǎng)段,各網(wǎng)段間請(qǐng)用英文分號(hào)隔開。
打開瀏覽器訪問https://172.16.0.2/bandwidthd/即可查看流量統(tǒng)計(jì),如圖12所示。
圖12
以上是pfSense在中小學(xué)校園網(wǎng)中的一些常見的應(yīng)用,當(dāng)然pfSense的網(wǎng)絡(luò)功能遠(yuǎn)不止這些。如,我們可以安裝squid擴(kuò)展模塊開啟網(wǎng)頁(yè)代理服務(wù),及通過squidGuard對(duì)squid代理的內(nèi)容進(jìn)行過濾,限制用戶上網(wǎng)行為;我們可以開啟入網(wǎng)門戶(Captive portal)服務(wù),給所有的上網(wǎng)用戶分配上網(wǎng)賬號(hào)和密碼,實(shí)現(xiàn)實(shí)名制上網(wǎng)等??傊?,對(duì)中小學(xué)而言,選擇開源免費(fèi)防火墻pfSense不啻為一種性價(jià)比非常高的方案,能夠滿足我們校園網(wǎng)中的一些基本應(yīng)用。我們只選對(duì)的,不選貴的。
(作者單位:江蘇西亭高級(jí)中學(xué))