iptables 命令詳解
iptables 是 Linux 系統內核級防火墻工具,用于配置、維護和檢查 IPv4 數據包過濾規則(IPv6 使用 ip6tables
)。以下是核心用法:
一、基本概念
表(Tables)
filter
:默認表,用于數據包過濾(允許/拒絕)。nat
:網絡地址轉換(如端口轉發)。mangle
:修改數據包頭部(如 TTL)。raw
:連接跟蹤前處理數據包。
鏈(Chains)
INPUT
:處理進入本機的數據包。OUTPUT
:處理本機發出的數據包。FORWARD
:處理經本機轉發的數據包。PREROUTING
/POSTROUTING
:用于nat
表(路由前/后處理)。
二、命令語法
iptables [-t 表名] 命令選項 [鏈名] [規則匹配] -j 目標動作
-t 表名
:指定表(默認filter
)。命令選項:
-A
:追加規則到鏈尾。-I
:插入規則到鏈首(可指定位置)。-D
:刪除規則。-L
:列出規則。-F
:清空鏈中所有規則。-P
:設置鏈的默認策略(如ACCEPT
/DROP
)。
規則匹配:
-p
:協議(tcp
,udp
,icmp
)。-s
:源 IP 地址。-d
:目標 IP 地址。--dport
:目標端口(需配合-p tcp/udp
)。-i
:輸入網卡(如eth0
)。
目標動作(
-j
):ACCEPT
:允許數據包。DROP
:丟棄數據包(無響應)。REJECT
:拒絕并返回錯誤。SNAT
:源地址轉換(用于nat
表)。DNAT
:目標地址轉換(用于nat
表)。
三、常用示例
允許 SSH 訪問(端口 22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
拒絕來自特定 IP 的訪問
iptables -A INPUT -s 192.168.1.100 -j DROP
端口轉發(將 8080 轉發到 80)
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j REDIRECT --to-port 80
允許 ping 請求
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
設置默認策略
iptables -P INPUT DROP # 默認丟棄所有輸入 iptables -P FORWARD DROP # 默認丟棄所有轉發
四、規則管理
查看規則
iptables -L -n -v # -n 禁用域名解析,-v 顯示詳細信息
清空所有規則
iptables -F # 清空 filter 表 iptables -t nat -F # 清空 nat 表
保存規則(重啟后生效)
iptables-save > /etc/iptables/rules.v4 # Debian/Ubuntu service iptables save # CentOS/RHEL
五、注意事項
- 規則順序:iptables 按從上到下順序匹配規則,首條匹配后停止。
- 連接跟蹤:使用
-m state --state ESTABLISHED,RELATED
允許已建立的連接。 - 測試前勿鎖死:遠程操作時,先允許 SSH 端口,再設置
DROP
策略,避免斷開連接。
提示:復雜場景建議結合
iptables-persistent
或firewalld
管理規則。