iptables NAT規則【轉】
nat表需要的三個鏈:
1.PREROUTING:可以在這裏定義進行目的NAT的規則,因為路由器進行路由時只檢查數據包的目的ip地址,所以為了使數據包得以正確路由,我們必須在路由之前就進行目的NAT;
2.POSTROUTING:可以在這裏定義進行源NAT的規則,系統在決定了數據包的路由以後在執行該鏈中的規則。
3.OUTPUT:定義對本地產生的數據包的目的NAT規則。
需要用到的幾個動作選項:(真實環境中用大寫)
redirect | 將數據包重定向到另一臺主機的某個端口,通常用實現透明代理和對外開放內網某些服務。 | ||||
snat | 源地址轉換,改變數據包的源地址 | ||||
dnat | 目的地址轉換,改變數據包的目的地址 | ||||
masquerade | IP偽裝,只適用於ADSL等動態撥號上網的IP偽裝,如果主機IP是靜態分配的,就用snat |
PRERROUTING:DNAT 、REDIRECT (路由之前)只支持-i,不支持-o。在作出路由之前,對目的地址進行修改
POSTROUTING:SNAT、MASQUERADE (路由之後)只支持-o,不支持-i。在作出路由之後,對源地址進行修改
OUTPUT:DNAT 、REDIRECT (本機)DNAT和REDIRECT規則用來處理來自NAT主機本身生成的出站數據包.
一、打開內核的路由功能。
要實現nat,要將文件/proc/sys/net/ipv4/ip_forward內的值改為1,(默認是0)。
1、開啟Linux內核轉發
echo "1" > /proc/sys/net/ipv4/ip_forward
SSH執行以上命令,1為開啟,0為關閉。
2、保持開機自動啟動
vi /etc/sysctl.conf
修改以下字符
# Controls IP packet forwarding net.ipv4.ip_forward = 0 #0為關閉,1為開啟
修改後保存即可,下次開機後可自動加載。
二、nat不同動作的配置
1)MASQUERADE:是動態分配ip時用的IP偽裝:在nat表的POSTROUTING鏈加入一條規則:所有從ppp0口送出的包會被偽裝(MASQUERADE)
[[email protected]]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
要想系統啟動時自動實現nat,在/etc/rc.d/rc.local文件的末尾添加
[[email protected]]# echo "1">/proc/sys/net/ipv4/ip_forward
[[email protected]]# /sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
2) SNAT:一般正常共享上網都用的這個。
所有從eth0(外網卡)出來的數據包的源地址改成61.99.28.1(這裏指定了一個網段,一般可以不指定)
[[email protected]]# iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j SNAT --to 61.99.28.1
3)DNAT:目的nat 做智能DNS時會用到
智能DNS:就是客戶端在dns項裏無論輸入任何ip,都會給他定向到服務器指定的一個dnsip上去。
在路由之前所有從eth0(內網卡)進入的目的端口為53的數據包,都發送到1.2.3.4這臺服務器解析。
[[email protected]]# iptables -t nat -I PREROUTING -i eth0 -p udp --dport 53 -j DNAT --to-destination 1.2.3.4:53
[[email protected]]# iptables -t nat -I PREROUTING -i eth0 -p tcp --dport 53 -j DNAT --to-destination 1.2.3.4:53
4)REDIRECT:重定向,這個在squid透明代理時肯定要用到它
所有從eth1進入的請求80和82端口的數據,被轉發到80端口,由squid處理。
[[email protected]]# iptables -t nat -A PREROUTING - -i eth1 -p tcp -m multiport --dports 80,82 -j REDIRECT --to-ports 80
轉自
iptables NAT規則 - highstar - 博客園
http://www.cnblogs.com/highstar/p/3256813.html
iptables NAT規則【轉】