iptables 中的 OUTPUT 鍊和 FORWARD 鏈有什麼不同?

iptables 中的 OUTPUT 鍊和 FORWARD 鏈有什麼不同?

CentOS 6.0

我正在研究 iptables,並且對 FORWARD 和 OUTPUT 鏈之間的差異感到困惑。在我的培訓文件中,它指出:

如果您要追加至 (-A) 鍊或從 (-D) 刪除鏈,您需要將其套用於沿著三個方向之一傳輸的網路資料:

  • 輸入 - 所有傳入資料包都會根據此鏈中的規則進行檢查。
  • 輸出 - 根據此鏈中的規則檢查所有傳出資料包。
  • 轉送 - 所有發送到另一台電腦的資料包都會根據此鏈中的規則進行檢查。

這讓我很困惑,因為在我看來,發送到主機的資料包應該是傳出的。那麼是否存在資料包將發送到另一台電腦但不「傳出」的情況? iptables 如何區分兩者?

答案1

OUTPUT 用於主機發出的資料包。它們的目的地通常是另一台主機,但也可以透過環回介面到達同一主機,因此並非所有透過 OUTPUT 的封包實際上都是傳出的。

FORWARD 適用於既不是由主機發出也不是定向到主機的資料包。它們是主機僅路由的資料包。

當您開始深入研究資料包修改和 NAT 時,完整的故事是相當複雜

答案2

據我了解:

輸入:目標 IP 位於主機上,即使它具有多個連接埠和多個子網

輸出:src IP 來自主機,任一端口

FORWARD:既不是主機上的 dst IP,也不是主機的 src IP

在此輸入影像描述

以路由器A為例

輸入是:

192.168.10.1 -> 192.168.10.199

192.168.10.1 -> 192.168.2.1

輸出是:

192.168.10.199->xxxx

192.168.2.1->xxxx

轉發是:

192.168.10.1 -> 192.168.2.199

192.168.10.1 -> 192.168.8.1

192.168.10.1 -> 192.168.8.199

相關內容