iptables NAT規則

nat表須要的三個鏈:服務器

  1.PREROUTING:能夠在這裏定義進行目的NAT的規則,由於路由器進行路由時只檢查數據包的目的ip地址,因此爲了使數據包得以正確路由,咱們必須在路由以前就進行目的NAT;
  2.POSTROUTING:能夠在這裏定義進行源NAT的規則,系統在決定了數據包的路由之後在執行該鏈中的規則。
  3.OUTPUT:定義對本地產生的數據包的目的NAT規則。tcp

須要用到的幾個動做選項:(真實環境中用大寫)ui

 redirect  將數據包重定向到另外一臺主機的某個端口,一般用實現透明代理和對外開放內網某些服務。
snat 源地址轉換,改變數據包的源地址
dnat 目的地址轉換,改變數據包的目的地址
masquerade IP假裝,只適用於ADSL等動態撥號上網的IP假裝,若是主機IP是靜態分配的,就用snat

PRERROUTING:DNAT 、REDIRECT   (路由以前)只支持-i,不支持-o。在做出路由以前,對目的地址進行修改spa

 POSTROUTING:SNAT、MASQUERADE (路由以後)只支持-o,不支持-i。在做出路由以後,對源地址進行修改代理

 OUTPUT:DNAT 、REDIRECT   (本機)DNAT和REDIRECT規則用來處理來自NAT主機自己生成的出站數據包.dns

1、打開內核的路由功能。ip

   要實現nat,要將文件/proc/sys/net/ipv4/ip_forward內的值改成1,(默認是0)。路由

 

2、nat不一樣動做的配置io

 1)MASQUERADE:是動態分配ip時用的IP假裝:在nat表的POSTROUTING鏈加入一條規則:全部從ppp0口送出的包會被假裝(MASQUERADE)table

 [root@localhost]# iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

要想系統啓動時自動實現nat,在/etc/rc.d/rc.local文件的末尾添加

   [root@localhost]# echo "1">/proc/sys/net/ipv4/ip_forward

   [root@localhost]# /sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

 2) SNAT:通常正常共享上網都用的這個。

 全部從eth0(外網卡)出來的數據包的源地址改爲61.99.28.1(這裏指定了一個網段,通常能夠不指定)

 [root@localhost]# 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這臺服務器解析。

 [root@localhost]# iptables -t nat -I PREROUTING -i eth0 -p udp --dport 53 -j DNAT --to-destination 1.2.3.4:53

 [root@localhost]# 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處理。

 [root@localhost]# iptables -t nat -A PREROUTING - -i eth1 -p tcp -m multiport --dports 80,82 -j REDIRECT --to-ports 80

相關文章
相關標籤/搜索