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