iptables實戰(zhàn)系列:通過NAT轉(zhuǎn)發(fā)實現(xiàn)私網(wǎng)對外發(fā)布信息
原創(chuàng)【51CTO獨家特稿】本文將介紹一個使用iptables實現(xiàn)NAT轉(zhuǎn)發(fā)功能的案例。
本文假設讀者已經(jīng)對NAT的原理和基本用法有所了解。如不確定,可參考以下文章:
本文案例中,我們假設有一家ISP提供園區(qū)Internet接入服務,為了方便管理,該ISP分配給園區(qū)用戶的IP地址都是私網(wǎng)IP,通過該私網(wǎng)IP用戶無法向外發(fā)布信息。但是,部分用戶要求建立自己的WWW服務器對外發(fā)布信息。
我們可以在防火墻的外部網(wǎng)卡上綁定多個合法IP地址,然后通過ip映射使發(fā)給其中某一個IP地址的包轉(zhuǎn)發(fā)至內(nèi)部某一用戶的WWW服務器上,然后再將該內(nèi)部WWW服務器響應包偽裝成該合法IP發(fā)出的包。
具體的IP分配如下:
(1)該ISP分配給A單位www服務器的IP為:
私網(wǎng)ip:172.168.92.100
公網(wǎng)ip:210.95.33.100
(2)該ISP分配給B單位www服務器的IP為:
私網(wǎng)ip:172.168.92.200
公網(wǎng)ip:210.95.33.200
(3)Linux防火墻的IP地址分別為:
內(nèi)網(wǎng)接口eth1:172.168.92.10
外網(wǎng)接口eth0:210.95.33.1
然后,我們需要進行如下步驟地操作:
(1)將分配給A、B單位的真實ip綁定到防火墻的外網(wǎng)接口,以root權限執(zhí)行以下命令:
#ifconfig eth0 add 210.95.33.100 netmask 255.255.255.0 #ifconfig eth0 add 210.95.33.200 netmask 255.255.255.0
(2)成功升級內(nèi)核后安裝iptables,然后執(zhí)行以下腳本載入相關模塊:
modprobe ip_tables modprobe ip_nat_ftp
(3)對防火墻接收到的目的ip為210.95.33.100和210.95.33.200的所有數(shù)據(jù)包進行目的NAT(DNAT):
#iptables -A PREROUTING -i eth0 -d 210.95.33.100 -j DNAT --to 172.168.92.100 #iptables -A PREROUTING -i eth0 -d 210.95.33.200 -j DNAT --to 172.168.92.200
(4)對防火墻接收到的源ip地址為172.168.92.100和172.168.92.200的數(shù)據(jù)包進行源NAT(SNAT):
#iptables -A POSTROUTING -o eth0 -s 172.168.92.100 -j SNAT --to 210.95.33.100 #iptables -A POSTROUTING -o eth0 -s 172.168.92.200 -j SNAT --to 210.95.33.200
這樣,所有目的ip為210.95.33.100和210.95.33.200的數(shù)據(jù)包都將分別被轉(zhuǎn)發(fā)給172.168.92.100和172.168.92.200;而所有來自172.168.92.100和172.168.92.200的數(shù)據(jù)包都將分別被偽裝成由210.95.33.100和210.95.33.200,從而也就實現(xiàn)了ip映射。
【編輯推薦】