iptables是Linux內(nèi)核帶的防火墻,結(jié)合Linux強(qiáng)大的路由功能,可以實(shí)現(xiàn)達(dá)到非常出色的性能并能滿足大部分企業(yè)使用的要求。下面我就用一個(gè)常用的案例說(shuō)明一下。
一、網(wǎng)絡(luò)拓?fù)鋱D
下面是示例中使用的架構(gòu):
作為防火墻的Linux服務(wù)器使用紅旗 DC Server 5.0,配置有兩塊網(wǎng)卡,eth0接外網(wǎng),eth1接內(nèi)網(wǎng);內(nèi)網(wǎng)有一臺(tái)網(wǎng)站服務(wù)器,和若干臺(tái)客戶機(jī),客戶機(jī)通過(guò)防火墻訪問(wèn)外網(wǎng)。
二、配置
iptables的命令規(guī)則和原理介紹可以參考[原]重新熟悉iptables。
1、定義規(guī)則
規(guī)則我是放在/root/iptables.rule,如下:
引用
# Generated by iptables-save v1.2.11 on Mon Jan 9 13:31:17 2006
*filter
:INPUT DROP [0:0]
:FORWARD ACCEPT [8:672]
:OUTPUT ACCEPT [242:17914]
-A INPUT -i lo -j ACCEPT
-A INPUT -i eth1 -j ACCEPT
-A INPUT -i eth0 -p icmp -j ACCEPT
#下面是開放防火墻上的22(ssh)端口
-A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m state --state INVALID,NEW -j DROP
COMMIT
# Completed on Mon Jan 9 13:31:17 2006
# Generated by iptables-save v1.2.11 on Mon Jan 9 13:31:17 2006
*nat
:PREROUTING ACCEPT [1060:200436]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [1:67]
#下面是設(shè)置NAT共享
-A POSTROUTING -o eth0 -j MASQUERADE
#下面是開放內(nèi)網(wǎng)的WWW服務(wù)器對(duì)外使用
-A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 10.0.0.2:80
-A POSTROUTING -p tcp -d 10.0.0.2 --dport 80 -j SNAT --to-source 10.0.0.1
COMMIT
# Completed on Mon Jan 9 13:31:17 2006
※需要留意的就是如何對(duì)外開放服務(wù)器:
1)因?yàn)榻?jīng)過(guò)NAT轉(zhuǎn)發(fā),所以filter表上不需要設(shè)置對(duì)應(yīng)的服務(wù)端口;
2)一定要同時(shí)設(shè)置PREROUTING和POSTROUTING規(guī)則;
我在查找資料的時(shí)候,發(fā)現(xiàn)網(wǎng)上很多資料都只是設(shè)置PREROUTING規(guī)則(DNAT),但就沒有寫需要設(shè)置SNAT,經(jīng)過(guò)驗(yàn)證,這是有問(wèn)題的。
首先,數(shù)據(jù)包經(jīng)過(guò)PREROUTING后,把目的地址從原來(lái)訪問(wèn)防火墻的192.168.228.210,改為目的10.0.0.2。此時(shí)如果直接把包轉(zhuǎn)發(fā)給WWW服務(wù)器,當(dāng)WWW服務(wù)器獲得數(shù)據(jù)包后,得到的數(shù)據(jù)包如下:
引用
源:外網(wǎng)IP|目標(biāo):10.0.0.2
這樣,當(dāng)WWW服務(wù)器回復(fù)的時(shí)候,就會(huì)發(fā)現(xiàn)找不到目標(biāo)地址(因?yàn)樗揪蜎]有外網(wǎng)的路由)。
因?yàn),增加SNAT可以把源路徑也改為從防火墻過(guò)來(lái),這樣就能保證數(shù)據(jù)包的正確路徑了。
3)如果端口不是一對(duì)一轉(zhuǎn)發(fā),只要修改PREROUTING語(yǔ)句--dport的端口和--to-destination后IP跟的端口,例如:
-A PREROUTING -i eth0 -p tcp --dport 3000 -j DNAT --to-destination 10.0.0.2:80
2、打開路由支持
默認(rèn)是不會(huì)支持路由的,用下面的命令打開:
# echo "1" > /proc/sys/net/ipv4/ip_forward
3、啟動(dòng)并測(cè)試
只要恢復(fù)iptables規(guī)則表:
# iptables-restore iptables.rule
測(cè)試:
內(nèi)網(wǎng)客戶機(jī):
引用
# ping www.21cn.com
PING www.cdn.21cn.com (61.140.60.90) 56(84) bytes of data.
64 bytes from f1.21cn.com (61.140.60.90): icmp_seq=0 ttl=245 time=3.26 ms
外網(wǎng)客戶機(jī):訪問(wèn)http://外網(wǎng)IP/,成功即可。
4、設(shè)置開機(jī)運(yùn)行
修改/etc/rc.local文件,文件后面增加兩行:
引用
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables-restore iptables.rule
保存即可。
億恩科技地址(ADD):鄭州市黃河路129號(hào)天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
聯(lián)系:億恩小凡
QQ:89317007
電話:0371-63322206 本文出自:億恩科技【mszdt.com】
服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|