iptables 包括的模組可以讓系統管理者檢查、限制連往內部網路所有服務的連接情形,這方法叫做連接追蹤(connection tracking)。連接追蹤會將連線儲存成一份表單,讓管理者可以依據以下的連線狀態,允許或拒絕存取:
新的(NEW) — 某個封包請求開啟新的連線,例如 HTTP 請求。
已建立(ESTABLISHED) — 屬於某個現有連線的封包。
相關的(RELATED) — 屬於現有連線的封包,請求開啟一個新的連線,例如被動式 FTP 的連線,其連接埠為 20;但資料傳輸埠則是 1024 以上,未使用的連接埠。
無效的(INVALID) — 在連結追蹤表中,不屬於任何連線的封包。
您可以針對任何網路通訊協定,採行 iptables 的完全狀態(stateful)功能;即使該通訊協定本身是無狀態(stateless)的(例如 UDP)。底下是使用連結追蹤,只把跟某個連結有關的封包,轉送出去的例子。
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ALLOW |