1. 程式人生 > >iptables NAT規則【轉】

iptables NAT規則【轉】

大寫 動態 www _for 之前 改變 -o -s spa

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規則【轉】