目前。網絡操作系統Linux已成計算機技術專業人員的操作系統,技術人員通過簡單的安裝,就可以獲得Linux提供的多項網絡服務,例如域名服務、電子郵件、匿名FTP服務等。同時,它還提供了圖形工作站所具有的Xwindows系統。最新的Linux7.2完全已經具備了網絡服務器的所有功能。在此,本公司想結合自身的工作經驗,談談Linux在另一方面的用途,即將Linux作為路由器連接兩個不同的網段,并在其上配置防火墻,以實現網絡的存取訪問控制和流量統計的功能。
要想使一臺裝有Linux的PC具有路由器的功能,首先要進行硬件配置。假設為一臺Router的PC上裝有Linux系統,并配有兩塊網卡,每塊網卡連接一個不同的網段,該機作 為路由器在兩個網段間轉發IP數據包。為了防止兩塊網卡的中斷發生沖突,需要網卡驅動 程序將中斷分別設為不同值。我們公司在實踐中將其中斷號和I/O地址分別設置為:3,0x300H 和4,0x320H。
硬件配置完畢,還需要在軟件上做相應的配置。在通常的安裝模式下,Linux系統不具 備路由器的功能,因此,必須重新安裝Linux內核。以Slackware版的Linux為例,其重新配 置內核的過程為
1.
#cd/usr/src/linux |
/*進入Linux的源代碼目標*/
2.
#make config |
/*進行編譯選項的配置*/
在該步中,系統會提供編譯過程中的一些選項,供用戶根據自己的實際情況進行選擇 。對于無法確定的選項,用戶可選擇系統缺省值。在網絡部分編譯的詢問中,會出現如下的提示:
network firewall[y/n/N]? /*內核是否支持防火墻*/ TCP/IP networking[n/y/Y]? /*主機是否連接TCP/IP網絡*/ IP: forwarding/gatewaying [n/y/Y]? /*主機是否轉發數據庫或作為網關*/ IP:firewalling[y/n/N]? /*是否在TCP/IP網絡內設置防火墻*/ IP:firewall packet logging[y/n/N]? /*是否在防火墻上登記數據包*/ IP:accounting[y/n/N]? /*是否對數據包計帳*/ IP:optimize as router not host[y/n/N]? /*是否將主機設置為路由器*/ IP:multicats routig [y/n/N]? /*路由器是否向外廣播路由信息*/ |
因為我們要將此主機配置為路由器,并在其上設置防火墻,故對這些選項統一選"y"。
3.
#make dep |
/*根據編譯選項做編譯前的準備工作*/
4.
#make zlmage |
/*開始編譯內核并命名編譯后的內核文件名為zlmage*/
編譯后的內核存于"/usr/src/linux/arch/i386/boot"目錄。在系統原內核備份后, 用戶可將該文件拷貝到根目錄下,并改名為"vmlinuz",運行"lilo",使其在下次啟動時生 效。
重構內核后,需對兩塊網卡的TCP/IP部分進行設置,使其能有效地連接兩個不同的網 段,并能在兩個網段進行IP數據包的轉發。設置步驟為(其中的參數依圖中所示):
1.對于NE2000兼容的網卡,修改"/etc/rc.d/rc.modules"文件;
/sbin/modprobe ne io=0x300,0x320 |
/*識別兩塊網卡*/
2.修改"/etc/rc.d/rc.inetl"文件,設置兩網卡的IP地址、掩碼及到兩網卡的路由信息;
IPADDR="202.207.0.27" NETWORK="202.207.0.0" BROADCAST="202.207.0.255" IPADDR1="202.207.7.2" NETWORK1="202.207.7.0" BROADCAST1="202.207.7.255" NETMASK="255.255.255.0" /sbin/ifconfig eth0 ${IPADDR} broadcast${BROADCAST} netmask${NETMASK} /sbin/ifconfig eth1 ${IPADDR1} broadcast${BROADCAST1} netmask${NETMASK} /sbin/route add-net ${NETWORK} netmask${NETMASK} eth0 /sbin/route add-net ${NETWORK1} netmask ${NETMASK} eth1 |
## Start the Routed server if[-f ${NET}/routed];then echo -n"routed" ${NET}/routed -g -s /*啟動程序*/ fi |
append="ether=0,0x320,ethl" |
#ifconfig /*顯示網卡的詳細信息*/ #route /*顯示系統的路由表*/ |
我們公司曾將某公司機房局域網內的PC通過Linux路由器與本地教育網相接,并進一步通過本地教育網進入Internet。此外,筆者又在Linux路由器上配置了防火墻。實踐證明,防火墻有效地 控制住了公司內部人員對非法IP地址的訪問,并成功地記錄下每個IP地址的網絡流量,為計費和網 管提供了依據。Linux的防火墻配置可以通過簡單的命令逐條進行,也可編寫shell程序放 到系統的啟動目錄下自動執行。其命令格式非常簡單,現舉例如下:
#ipfwadm -A /*對通過路由器的所有數據包進行計帳*/ #ipfwadm -I -a accept -S 162.105.0.0/16 /*接受來自162.105.0.0網絡的所有數據包*/ #ipfwadm -I -a deny -S 159.226.0.0/16 /*丟掉來自159.226.0.0網絡的所有數據包/ #ipfwadm -O -a reject -S 210.32.0.0/12 /*丟掉發往210.32.0.0網絡的所有數據包,并發送拒絕信息包給請求者*/ |
配置用戶可根據實際需要進行防火墻的配置,以達到期望的效果,或者在安全中介商的協助下完成安全配置。