核心文件與服務管理
| 項目 | 路徑/命令 |
| 配置文件 | /etc/sysconfig/iptables |
| 啟動 | service iptables start / systemctl start iptables |
| 停止 | service iptables stop / systemctl stop iptables |
| 重啟 (生效配置) | service iptables restart / systemctl restart iptables |
| 保存當前規則到文件 | /etc/rc.d/init.d/iptables save / iptables-save > /etc/sysconfig/iptables |
| 查看當前規則 | iptables -L -n -v --line-numbers |
常用規則示例
# 1. 允許本地回環
iptables -A INPUT -i lo -j ACCEPT
# 2. 允許已建立/相關連接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 3. 開放 SSH (22)
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 4. 開放 HTTP/HTTPS
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
# 5. 允許特定 IP 訪問 MySQL (3306)
iptables -A INPUT -p tcp -s 192.168.1.100 --dport 3306 -j ACCEPT
# 6. 拒絕其他所有入站 (默認策略建議 DROP)
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
# 7. NAT 轉發 (內網 192.168.1.0/24 通過 eth0 上網)
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE
規則持久化最佳實踐
- 編輯
/etc/sysconfig/iptables 文件直接維護規則集 (可讀、可版本控制)。
- 修改後執行
service iptables restart 生效。
- 或使用
iptables-save > /etc/sysconfig/iptables 導出當前內存規則覆蓋文件。
鏈與表結構
- filter 表 (默認):
INPUT (進站)、OUTPUT (出站)、FORWARD (轉發)。
- nat 表:
PREROUTING (目的 NAT)、POSTROUTING (源 NAT)、OUTPUT (本機發出 DNAT)。
- mangle 表:修改包標記 (QoS、策略路由)。
- raw 表:連接跟蹤豁免 (NOTRACK)。
調試技巧
# 顯示規則編號、計數器
iptables -L -n -v --line-numbers
# 刪除指定編號規則 (如 INPUT 鏈第 3 條)
iptables -D INPUT 3
# 插入規則到指定位置 (如 INPUT 鏈第 1 條)
iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
# 實時監控匹配包
watch -n1 'iptables -L -n -v'
注意事項
- 規則順序至關重要:
-A 追加末尾,-I 插入首部/指定位。
- 遠程配置防火牆必先放行 SSH,再設置默認 DROP,否則斷連。
- CentOS 7+ 默認使用
firewalld (動態管理),若習慣 iptables 需禁用 firewalld:systemctl disable firewalld --now; yum install iptables-services; systemctl enable iptables --now。