iptables是Linux內(nèi)核帶的防火墻,結(jié)合Linux強大的路由功能,可以實現(xiàn)達到非常出色的性能并能滿足大部分企業(yè)使用的要求。下面我就用一個常用的案例說明一下。
一、網(wǎng)絡(luò)拓撲圖
下面是示例中使用的架構(gòu):
作為防火墻的Linux服務(wù)器使用紅旗 DC Server 5.0,配置有兩塊網(wǎng)卡,eth0接外網(wǎng),eth1接內(nèi)網(wǎng);內(nèi)網(wǎng)有一臺網(wǎng)站服務(wù)器,和若干臺客戶機,客戶機通過防火墻訪問外網(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ù)器對外使用
-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
※需要留意的就是如何對外開放服務(wù)器:
1)因為經(jīng)過NAT轉(zhuǎn)發(fā),所以filter表上不需要設(shè)置對應(yīng)的服務(wù)端口;
2)一定要同時設(shè)置PREROUTING和POSTROUTING規(guī)則;
我在查找資料的時候,發(fā)現(xiàn)網(wǎng)上很多資料都只是設(shè)置PREROUTING規(guī)則(DNAT),但就沒有寫需要設(shè)置SNAT,經(jīng)過驗證,這是有問題的。
首先,數(shù)據(jù)包經(jīng)過PREROUTING后,把目的地址從原來訪問防火墻的192.168.228.210,改為目的10.0.0.2。此時如果直接把包轉(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ù)的時候,就會發(fā)現(xiàn)找不到目標(biāo)地址(因為他根本就沒有外網(wǎng)的路由)。
因為,增加SNAT可以把源路徑也改為從防火墻過來,這樣就能保證數(shù)據(jù)包的正確路徑了。
3)如果端口不是一對一轉(zhuǎn)發(fā),只要修改PREROUTING語句--dport的端口和--to-destination后IP跟的端口,例如:
-A PREROUTING -i eth0 -p tcp --dport 3000 -j DNAT --to-destination 10.0.0.2:80
2、打開路由支持
默認是不會支持路由的,用下面的命令打開:
# echo "1" > /proc/sys/net/ipv4/ip_forward
3、啟動并測試
只要恢復(fù)iptables規(guī)則表:
# iptables-restore iptables.rule
測試:
內(nèi)網(wǎng)客戶機:
引用
# 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)客戶機:訪問http://外網(wǎng)IP/,成功即可。
4、設(shè)置開機運行
修改/etc/rc.local文件,文件后面增加兩行:
引用
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables-restore iptables.rule
保存即可。
億恩科技地址(ADD):鄭州市黃河路129號天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
聯(lián)系:億恩小凡
QQ:89317007
電話:0371-63322206 本文出自:億恩科技【1tcdy.com】
服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]
|