Netfilter/Iptables概述

  /位於   /sbin/iptables

  四表五鏈

  四表 filter. nat. mangle. raw

  五鏈 INPUT. FORWARD. OUTPUT. PREROUTING. POSTROUTING

  表的處理優先級  raw >mangle >nat >filter


  filter:執行所有的過濾動作

  nat:(端口映射,地址轉換),所有網絡地址轉換都在nat上執行

  mangle:用於數據包的修改

  raw:加快封包穿越防火牆的速度,可提高防火牆性能


  五個鏈的作用

  INPUT: 處理入站數據包,通過路由表後目的地爲本機

  OUTPUT:由本級產生,向外轉發

  FORWARD:通過路由表後,目的地不爲本機

  PREROUTING:數據包進入路由表之前

  POSTROUTING:在進行路由選擇前處理數據包,數據包進入路由表之前


  規則鏈之間的匹配順序

  入站數據:PREROUTING >INPUT

  出站數據:OUTPUT >POSTROUTING

  轉發數據:PREROOUTING >FORWARD >POSTROUTING

  1.當數據包的目標地址是本機時

 (1)數據包進入網絡接口

 (2)進入NAT表的prerouting鏈,根據需要做DNAT

 (3)進入mangle表的prerouting鏈,在這裏根據需要改變數據包頭內容(比如TTL值)

 (4)進入路由判斷,(進入本地還是轉發)

 (5)進入mangle表的INPUT鏈,在路由之後到達本地程序之前修改數據包頭內容

 (6)進入filter表的INPUT鏈,所有目標地址是本機的數據包都會經過這裏

 (7)到達本機應用程序處理


  2.當數據包的源地址是本機時、

 (1)本機應用程序產生數據包

 (2)路由判斷

 (3)進入mangle表的OUTPUT鏈,在這裏可以根據需要改變包頭內容

 (4)進入nat表的OUTPUT鏈,根據需要對防火牆產產生的數據作DNAT

 (5)進入filter表的OUTPUT鏈,在這裏可以對數據包的過濾條件進行設置

 (6)進入mangle表的PREROUTING鏈,這裏主要做DNAT動作

 (7)進入NAT表的PREROUTING鏈,這裏主要做DNAT動作

 (8)離開本機


  3.經由本機轉發的數據包   (源、目標地址都不是本機)

 (1)數據包進入網絡接口

 (2)mangle表的PREROUTING鏈,在這裏可以根據需要改變數據包內容(TTL值)

 (3)nat表中FORWARD鏈,可根據需要對數據包做DNAT

 (4)mangle表的FORWARD鏈,在這裏數據包頭內容被修改

 (5)filter表的FORWARD鏈,需要轉發的數據包會到這裏

 (6)mangle表的PREROUTING鏈

 (7)nat表的POSTROUTING鏈,在這裏根據需要對數據包做SNAT

 (8)離開網絡接口


     Iptables表和鏈的動作

  filter表主要用於過濾數據包,對數據包進行(ACCEPT DROP REJECT LOG RETURN)

  filter表包含:

  INPUT鏈,過濾所有目標地址是本機的數據包

  FORWARD鏈,過濾由本機轉發的數據包

  OUTPUT鏈,過濾有本機產生的數據包


  NAT表主要用於網絡地址轉換

  (1)DNAT,主要用於改變數據包目的地址,使包能重新路由到某臺主機

  (2)SNAT,改變數據包的源地址,將源地址轉換成公網地址

  NAT表包含三條鏈

 (1)PREROUTING鏈,在數據包到達防火牆的時候改變目標地址

 (2)OUTPUT鏈,可以改變數據包的目的地址

 (3)POSTROUTING,在數據包離開防火牆時改變數據包源地址

 

  MANGLE表

  mangle表主要用於修改數據包,通過mangle表可以改變(TTL)等

  mangle表主要包含5條鏈

 (1)PREROUTING、 (2)POSTROUTING、 (3)OUTPUT、 (4)INPUT、 (5)FORWARD、


   


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章