iptables 是 Linux 系統中用于配置內核防火墻的一個命令行工具。它允許系統管理員定義規則,這些規則決定了如何處理經過網絡接口的數據包。iptables 規則可以應用于不同的“表”(tables)和“鏈”(chains)。以下是一些主要的表和鏈類型:
表(Tables)
- filter:這是默認表,用于控制數據包的訪問控制。
- nat:用于網絡地址轉換(NAT),比如地址重寫。
- mangle:用于特殊的數據包修改,比如更改TTL值。
- raw:用于配置免除連接跟蹤的規則。
鏈(Chains)
每個表包含預定義的鏈,以及可以由管理員自定義的鏈。以下是每個表中的一些標準鏈:
filter 表
- INPUT:處理進入本機的數據包。
- FORWARD:處理經過本機轉發的數據包。
- OUTPUT:處理從本機發出的數據包。
- PREROUTING:用于目標地址轉換(DNAT)的規則,在路由決策之前應用。
- POSTROUTING:用于源地址轉換(SNAT)的規則,在路由決策之后應用。
nat 表
- PREROUTING:用于目標地址轉換(DNAT)的規則,在路由決策之前應用。
- POSTROUTING:用于源地址轉換(SNAT)的規則,在路由決策之后應用。
- OUTPUT:處理從本機發出的數據包的NAT。
mangle 表
- PREROUTING:用于在路由決策之前修改數據包。
- INPUT:處理進入本機的數據包。
- FORWARD:處理經過本機轉發的數據包。
- OUTPUT:處理從本機發出的數據包。
- POSTROUTING:用于在路由決策之后修改數據包。
raw 表
- PREROUTING:用于配置免除連接跟蹤的規則。
- OUTPUT:用于配置免除連接跟蹤的規則。
自定義鏈
除了上述標準鏈之外,管理員還可以創建自定義鏈,并在標準鏈中調用這些自定義鏈。自定義鏈可以幫助組織復雜的規則集,使其更易于管理和維護。
注意事項
- 在修改
iptables 規則之前,建議先備份當前的規則集,以便在出現問題時可以恢復。
- 修改
iptables 規則可能會影響系統的網絡連接和安全性,因此在進行更改時要格外小心。
- 在某些 Linux 發行版中,可能需要使用
sudo 或 root 權限才能運行 iptables 命令。
總之,iptables 提供了靈活而強大的網絡過濾和地址轉換功能,但也需要謹慎使用以避免潛在的安全風險。