Can you summarize the following document?
        
  iptables、ip6tables等都使用Xtables框架。存在「表(tables)」、「鏈(chain)」和「規則(rules)」三個層面。  每個「表」指的是不同型別的資料包處理流程,如codice_4表示進行資料包過濾,而codice_5針對連線進行地址轉換操作。每個表中又可以存在多個「鏈」,系統按照預訂的規則將資料包通過某個內建鏈,例如將從本機發出的資料通過codice_6。在「鏈」中可以存在若干「規則」,這些規則會被逐一進行匹配,如果匹配,可以執行相應的動作,如修改資料包,或者跳轉。跳轉可以直接接受該資料包或拒絕該資料包,也可以跳轉到其他鏈繼續進行匹配,或者從當前鏈返回撥用者鏈。當鏈中所有規則都執行完仍然沒有跳轉時,將根據該鏈的預設策略(「policy」)執行對應動作;如果也沒有預設動作,則是返回撥用者鏈。

  filter表是預設的表,如果不指明表則使用此表。其通常用於過濾資料包。其中的內建鏈包括:

  nat表如其名,用於地址轉換操作。其中的內建鏈包括:

  mangle表用於處理資料包。其和nat表的主要區別在於,nat表側重連線而mangle表側重每一個資料包。其中內建鏈列表如下。

  raw表用於處理異常,有如下兩個內建鏈:

  

  一個典型的工作站的防火牆配置例項。超級使用者(root)可以用"codice_7"指令顯示防火牆上的配置。完整的配置可以新增codice_8或codice_9引數來顯示更詳細資訊,或者使用codice_10匯出生成當前表的命令。由於沒有指明「表」,因此預設使用codice_4。 以上配置允許本機連線所有外部的系統,拒絕(REJECT)或丟棄(DROP)任何發往本機的資料包,但是有以下例外(和codice_12逐一對應):  此時,來自外部的ping將沒有迴應:  外部嘗試連線本機的HTTP埠(即TCP 80埠)將被拒絕連線:  但本機訪問外部(OUTPUT)均正常,因為其鏈為空且預設策略為接受(ACCEPT);且本機不轉發(FORWARD)資料包,因為其預設策略為丟棄(DROP)。需要額外注意的是,這裡僅展示了IPv4的情況,若同時使用IPv6則需要另行配置ip6tables。

  iptables的重要功能之一是用於埠和/或地址的轉換。如下示例展示了將預設HTTP埠的封包由80轉向8080埠。這樣,HTTP的daemon可以允許由一般使用者許可權啟動,而不需要對一般使用者無法將埠號綁在1024埠以下的限制的問題多加考慮。  codice_13  注意:如果你在你的電腦上面執行了這個指令,它只會對連到你的機器上的外部的IP發生效果。從本地端發起的連線不會遵循nat表上PREROUTING鏈的設定。如果你想讓本地端也遵循規則,你可以另外來鍵入下面的指令:  codice_14  這條規則會將lo介面上的封包輸出由80埠轉向到8080埠上面。

  典型設定如辦公室用小型區域網,由一臺Linux主機作為路由器共享地址接入Internet。  假設區域網介面為eth0,地址使用192.168.0.0/24;而Internet介面為eth1,使用的地址為198.51.100.3。  在區域網使用者訪問Internet時,源地址需要被轉換為198.51.100.3,則使用規則:  若需要在區域網192.168.0.2上開啟HTTP服務,則可以設定相應的DNAT服務,將訪問外部TCP 80埠的資料包重定向:  需要注意的是,轉發操作需要在codice_4中codice_16中允許,並且開啟系統的轉發功能。

  

  有很多第三方軟體可以幫助設定iptables規則。前端介面像是Ncurses或圖型介面可以讓使用者用點選的方式產生許多簡單的規則。命令稿通常是參照Unix shell產生出來的(不過當然也有可能會使用其它種型別的命令稿),它們有的會用一些預先定義好的規則或簡單的範本來呼叫iptables或codice_17執行。一些Linux發行版公司會在它們的發行版裡面包含這些方式,當然像這樣的方式能產生的變化就相當有限,不過也因為產生規則的方式很簡單,所以甚至可以利用php網頁撰寫的方式來產生這些規則。  此類前端裝置如生成器(generator)或指令碼(script)往往會被其模板限制,模板僅僅能使用使用者定義規則並替換指定的部分,如只能替換埠或IP地址,同時,生成的規則往往難以達到最佳狀態,需要進行進一步優化,如此會增加開發和運維的成本。如果使用者想要了解iptables並且優化自己的規則,則需要自己建立規則。

  為了較好地瞭解一個封包穿越核心層的X表(Xtables)之表/鏈(table/chain),你可以參考下列圖表的使用:
iptables是執行在使用者空間的應用軟體,通過控制Linux核心netfilter模組,來管理網路封包的處理和轉發。在大部分Linux發行版中,可以通過 手冊頁 或 codice_1 獲取使用者手冊。通常iptables需要核心模組支援才能執行,此處相應的核心模組通常是Xtables。因此,iptables操作需要超級使用者許可權,其可執行檔案通常位於 codice_2 或 codice_3 。同時,需要說明的是,以上命令通常只用於處理 IPv4 資料包;而對於 IPv6 資料包,則使用類似的 ip6tables 命令。