Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> 關於 Linux

Linode VPS 上 iptables 服務啟動失敗的修復方案

編輯:關於 Linux

在 Linode VPS(或其他基於 Xen/KVM 的虛擬化環境)上,執行 service iptables start 時常報錯,原因是預設 /etc/init.d/iptables 腳本的 case 判斷邏輯未涵蓋 security 表,導致核心模組載入失敗。本文提供直接修改啟動腳本的修復方案。

iptables 啟動報錯畫面

問題現象

# service iptables start
iptables: Applying firewall rules: 
iptables-restore v1.4.21: iptables-restore: unable to initialize table 'security'
Error occurred at line: 2
Try `iptables-restore -h' or `iptables-restore --help' for more information.
[FAILED]

根因分析

/etc/init.d/iptables 腳本中 for i in $tables; do ... case "$i" in 區塊,僅處理 raw、filter、nat、mangle 四張表,缺少 security 表(CentOS 7 / RHEL 7 引入,用於 SELinux 標記)。核心嘗試載入 iptable_security 模組失敗,導致整個服務啟動中止。

修復步驟

  1. 備份原腳本:
    cp /etc/init.d/iptables /etc/init.d/iptables.oldbak
  2. 編輯腳本:
    vi /etc/init.d/iptables
  3. 找到 case "$i" in 區塊,在 raw) 之前插入 security) 分支:
    security)
        $IPTABLES -t filter -P INPUT $policy \
        && $IPTABLES -t filter -P OUTPUT $policy \
        && $IPTABLES -t filter -P FORWARD $policy \
        || let ret+=1
        ;;
    (注:security 表無獨立鏈,預設策略沿用 filter 表即可)
  4. 存檔離開,重啟服務驗證:
    service iptables restart

修改後的關鍵區塊完整示意

for i in $tables; do
    echo -n "$i "
    case "$i" in
    security)
        $IPTABLES -t filter -P INPUT $policy \
        && $IPTABLES -t filter -P OUTPUT $policy \
        && $IPTABLES -t filter -P FORWARD $policy \
        || let ret+=1
        ;;
    raw)
        $IPTABLES -t raw -P PREROUTING $policy \
        && $IPTABLES -t raw -P OUTPUT $policy \
        || let ret+=1
        ;;
    filter)
        $IPTABLES -t filter -P INPUT $policy \
        && $IPTABLES -t filter -P OUTPUT $policy \
        && $IPTABLES -t filter -P FORWARD $policy \
        || let ret+=1
        ;;
    nat)
        ...
    ;;
    esac
done

替代方案

  • 升級 iptables-services 套件至新版(通常已修復此腳本)。
  • 改用 firewalld 或 nftables 管理防火牆(現代發行版推薦)。

修復後,Linode VPS 的 iptables 服務即可正常啟動,防火牆規則生效。

Copyright © Windows教程網 All Rights Reserved