Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Ubuntu iptables 防火牆規則持久化與開機自動載入完整教學

編輯:Linux 系統常見問題解答

核心機制

iptables 規則僅存在記憶體,重啟失效。持久化靠 iptables-save 導出規則集,iptables-restore 載入。Ubuntu 傳統採用 /etc/network/interfaces 掛載 pre-up 鉤子實現開機自動套用。

基礎持久化流程

1. 保存當前規則

sudo iptables-save > /etc/iptables.up.rules
# 必須用 root shell:sudo -i 然後執行,直接 sudo iptables-save > file 會因重導向權限失敗

2. 配置網路介面掛載

編輯 /etc/network/interfaces:

auto eth0
iface eth0 inet dhcp
    pre-up iptables-restore < /etc/iptables.up.rules

pre-up 在介面啟動前執行,確保規則生效早於網路流量。

3. 進階:介面關閉時套用不同規則集

auto eth0
iface eth0 inet dhcp
    pre-up iptables-restore < /etc/iptables.up.rules
    post-down iptables-restore < /etc/iptables.down.rules

post-down 在介面關閉後執行,可切換到限制更嚴格的規則集。

自動保存模式(適合頻繁調試)

auto eth0
iface eth0 inet dhcp
    pre-up iptables-restore < /etc/iptables.up.rules
    post-down iptables-save > /etc/iptables.up.rules

每次介面關閉自動備份當前規則,下次開機直接套用最新狀態。

規則測試與編輯工作流

  1. sudo iptables-save > /etc/iptables.test.rules
  2. sudo vim /etc/iptables.test.rules 編輯(實際是修改指令流)
  3. sudo iptables-restore < /etc/iptables.test.rules 熱載入測試
  4. 驗證無誤後:sudo iptables-save > /etc/iptables.up.rules 覆蓋生產規則

規則檔案結構範例

# Generated by iptables-save v1.6.0
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp --dport 22 -j ACCEPT
-A INPUT -p tcp --dport 80 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j DROP
COMMIT
# Completed

每行對應一條 iptables 指令,省略了 iptables 關鍵字。

現代替代方案:netfilter-persistent(Ubuntu 16.04+ 推薦)

sudo apt update && sudo apt install netfilter-persistent iptables-persistent
# 安裝過程會詢問是否保存當前 IPv4/IPv6 規則
# 之後自動在開機時載入 /etc/iptables/rules.v4 和 rules.v6

優點:系統級服務管理、支援 IPv6、配置標準化、無需手動編輯 interfaces。

備份與還原速查

sudo iptables-save > /backup/iptables-$(date +%F).rulessudo ip6tables-save > /backup/ip6tables-$(date +%F).rulessudo iptables-restore < /backup/iptables-2024-01-15.rulessudo iptables -nvL --line-numberssudo iptables -F && sudo iptables -X && sudo iptables -Z
操作指令
備份 IPv4
備份 IPv6
還原 IPv4
查看當前規則
清空規則

常見坑點

  • sudo 重導向失敗:sudo iptables-save > file 以當前用戶寫入,需 sudo sh -c 'iptables-save > file' 或 sudo -i
  • interfaces 格式錯誤導致網路啟動失敗
  • Docker/容器網路與 iptables 衝突,建議用 DOCKER-USER 鏈管理自定義規則
Copyright © Windows教程網 All Rights Reserved