Netfilter

Netfilter 如何理解數據包是相關的?

  • May 5, 2016

conntrackmatch 模組--ctstate參數支持RELATED數據包狀態。例如,在活動 FTP 的情況下,Netfilter 如何知道從 FTP 伺服器數據埠(TCP 埠 20)到客戶端之前指定的非特權數據埠的連接是一個RELATED連接?Netfilter 是否有一些模組,其中RELATED描述了 支持的每個協議?最後但並非最不重要的一點是,是否有該RELATED狀態支持的協議列表?

各種 Internet 控制消息協議 (ICMP) 數據包可能與某些協議的連接(或嘗試這種連接)“相關”,但這些 ICMP 數據包與導致它們的協議不同,因此存在“相關”概念。當主機或防火牆拒絕 TCP 或 UDP 連接嘗試與目標不可達 ICMP 數據包時,可能會發生這種情況;允許RELATED讓相關的 ICMP 數據包通過。(TCP 確實有 RST,因此可能會或可能不會發出相關的 ICMP 響應,防火牆管理員可能會或可能不會允許 ICMP 回复……)

應用程序級協議(例如 FTP)都需要一個自定義模組,因為需要自定義程式碼來探勘數據包並確定它是否以及如何與 netfilter 知道的任何其他內容相關聯。任何人都可以為任何應用程序編寫這些模組,儘管檢查nf_conntrack_*可用的文件可能是開始列出列表的好地方:

% print -l /lib/modules/3.10.0-327.13.1.el7.x86_64/kernel/net/netfilter/nf_conntrack_*(:t)
nf_conntrack_amanda.ko
nf_conntrack_broadcast.ko
nf_conntrack_ftp.ko
...

引用自:https://unix.stackexchange.com/questions/281161