用Linux防火墻構(gòu)建軟路由
本文主要介紹利用Linux自帶的Firewall軟件包來(lái)構(gòu)建軟路由的一種方法,此方法為內(nèi)部網(wǎng)與外部網(wǎng)的互連提供了一種簡(jiǎn)單、安全的實(shí)現(xiàn)途徑。Linux自帶的Firewall構(gòu)建軟路由,主要是通過IP地址來(lái)控制訪問權(quán)限,較一般的代理服務(wù)軟件有更方便之處。
一、防火墻
防火墻一詞用在計(jì)算機(jī)網(wǎng)絡(luò)中是指用于保護(hù)內(nèi)部網(wǎng)不受外部網(wǎng)的非法入侵的設(shè)備,它是利用網(wǎng)絡(luò)層的IP包過濾程序以及一些規(guī)則來(lái)保護(hù)內(nèi)部網(wǎng)的一種策略,有硬件實(shí)現(xiàn)的,也有軟件實(shí)現(xiàn)的。
運(yùn)行防火墻的計(jì)算機(jī)(以下稱防火墻)既連接外部網(wǎng),又連接內(nèi)部網(wǎng)。一般情況下,內(nèi)部網(wǎng)的用戶不能直接訪問外部網(wǎng),反之亦然。如果內(nèi)部網(wǎng)用戶要訪問外部網(wǎng),必須先登錄到防火墻,由防火墻進(jìn)行IP地址轉(zhuǎn)換后,再由防火墻發(fā)送給外部網(wǎng),即當(dāng)內(nèi)部網(wǎng)機(jī)器通過防火墻時(shí),源IP地址均被設(shè)置(或稱偽裝,或稱欺騙)成外部網(wǎng)合法的IP地址。經(jīng)偽裝以后,在外部網(wǎng)看來(lái),內(nèi)部網(wǎng)的機(jī)器是一個(gè)具有合法的IP地址的機(jī)器,因而可進(jìn)行通信。外部網(wǎng)用戶要訪問內(nèi)部網(wǎng)用戶時(shí),也要先登錄到防火墻,經(jīng)過濾后,僅通過允許的服務(wù)。
由此可見,防火墻在內(nèi)部網(wǎng)與外部網(wǎng)之間起到了兩個(gè)作用:
(1)IP包過濾——保護(hù)作用;
(2)路由——網(wǎng)絡(luò)互連作用。
二、防火墻的安裝
1.硬件安裝
運(yùn)行Linux防火墻的計(jì)算機(jī)上必須安裝有兩塊網(wǎng)卡或一塊網(wǎng)卡、一塊Modem卡。本文以兩塊網(wǎng)卡為例。安裝網(wǎng)卡,正確設(shè)置中斷號(hào)及端口號(hào),并為各網(wǎng)卡分配合適的IP地址。
配置以后的防火墻模型。
2.安裝網(wǎng)關(guān)
安裝網(wǎng)關(guān)的方法有兩種:一種是運(yùn)行l(wèi)inuxconf,進(jìn)入ROUTINGANDGATEWAYS選項(xiàng),配置網(wǎng)關(guān);另一種是修改rc.inet1文件。下面介紹修改rc.inet1文件的方法安裝網(wǎng)關(guān)。
進(jìn)入/etc/rc.d/目錄,鍵入virc.inet1回車,參照下面內(nèi)容修改:
IPADDR="202.114.194.130"#第一塊卡的外部網(wǎng)IP地址
NETMASK="255.255.255.128"#第一塊卡的外部網(wǎng)子網(wǎng)掩碼
NETWORK="202.114.194.0"#第一塊卡的外部網(wǎng)網(wǎng)段
BROADCAST="202.114.194.255"#第一塊卡的外部網(wǎng)廣播地址
GATEWAY="202.114.194.129"#第一塊卡的外部網(wǎng)網(wǎng)關(guān),也是
默認(rèn)網(wǎng)關(guān)
IPADDR1="192.168.0.1"
#第二塊卡的內(nèi)部網(wǎng)IP地址
NETMASK1="255.255.255.0"
#第二塊卡的內(nèi)部網(wǎng)子網(wǎng)掩碼
NETWORK1="192.168.0.0"
#第二塊卡的內(nèi)部網(wǎng)網(wǎng)段
BROADCAST1="192.168.0.255"
#第二塊卡的內(nèi)部網(wǎng)廣播地址
/sbin/ifconfigeth0${IPADDR}
broadcast${BROADCAST}metmask${NETMASK}
#設(shè)置第一塊卡
/sbin/ifconfigeth1${IPADDR1}
broadcast${BROADCAST1}metmask$
{NETMASK1}
#設(shè)置第二塊卡
/sbin/routeadd-net${NETWORK}
netmask${NETMASK}
/sbin/routeadddefaultgw$
{GATEWAY}metric1
/sbin/routeadd-net${NETWORK1}
netmask${NETMASK1}
要測(cè)試網(wǎng)關(guān)設(shè)置情況,可以用“ifconfig”命令測(cè)試,運(yùn)行該命令后,會(huì)顯示出eth0和eth1及上面我們修改的相關(guān)內(nèi)容,如果沒有顯示這些相關(guān)信息,說(shuō)明設(shè)置不正確,還要重新再來(lái)一次。
三、構(gòu)建軟路由
1.IP地址轉(zhuǎn)換
IP地址轉(zhuǎn)換也稱為IP地址偽裝或IP地址欺騙,也就是指當(dāng)內(nèi)部網(wǎng)機(jī)器登錄到防火墻上時(shí),防火墻將內(nèi)部網(wǎng)IP(不合法的外部網(wǎng)IP地址)偽裝成合法的外部網(wǎng)IP地址,再與外部網(wǎng)通信。IP地址偽裝的命令格式如下:
ipfwadm-F-amasquerade-D0.0.0.0/0-Weth0
其中“-D0.0.0.0/0”表示允許對(duì)所有內(nèi)部網(wǎng)IP地址進(jìn)行轉(zhuǎn)換,“-Weth0”表示內(nèi)部網(wǎng)IP地址是通過網(wǎng)卡1進(jìn)行轉(zhuǎn)換的。
IP地址偽裝設(shè)置完畢后,就可以在內(nèi)部網(wǎng)機(jī)器上ping一下外部網(wǎng)的機(jī)器,如果防火墻上的forwarding沒有被關(guān)閉的話,就可以ping通了,說(shuō)明配置一切正確。
2.設(shè)定訪問外部網(wǎng)的權(quán)限
為了加強(qiáng)對(duì)網(wǎng)絡(luò)的管理,有時(shí)要對(duì)內(nèi)部網(wǎng)訪問外部網(wǎng)進(jìn)行一定的限制,這種限制包括:(1)允許哪些機(jī)器可以上網(wǎng);(2)允許訪問哪些站點(diǎn)。
限制上網(wǎng)機(jī)器可以參照以下腳本:
ipfwadm-F-pdeny#全部拒絕內(nèi)部網(wǎng)機(jī)器上網(wǎng)
ipfwadm-F-am-S192.168.0.5/32
-d0.0.0.0/0#允許192.168.0.5機(jī)器對(duì)
外部網(wǎng)的訪問
限制訪問站點(diǎn),可以這樣設(shè)置:
ipfwadm-O-ireject-D0.0.0.0/0
#對(duì)外部網(wǎng)的所有站點(diǎn)加以
拒絕
ipfwadm-O-iaccept-D202.114.0.0/16
#允許訪問202.114.0.0~
202.114.255.255內(nèi)的所有站點(diǎn)
上述設(shè)置中,“0.0.0.0/0”表示全部網(wǎng)址,“202.114.0.0/16”表示202.114.0.0至202.114.255.255的所有站點(diǎn)。
3.統(tǒng)計(jì)IP包流量
IP包流量記賬的設(shè)置如下:
ipfwadm-A-f
/sbin/ipfwadm-A-f
/sbin/ipfwadm-Aout-I-S192.168.0.0
/32-D0.0.0.0/0
#對(duì)所有流出包
統(tǒng)計(jì)
/sbin/ipfwadm-Ain-I-S192.168.0.0
/32-D0.0.0.0/0
#對(duì)所有流入包
統(tǒng)計(jì)
所在記賬的統(tǒng)計(jì)都存放于/proc/net/ip_acct文件中,其所有IP地址均為16進(jìn)制表示。
以上所有腳本,既可放置在/etc/rc.d文件中,也可單獨(dú)設(shè)立shell腳本,用命令sh執(zhí)行。
以上設(shè)置均在RedHat5.1上運(yùn)行通過。