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