ufw iptablesジャンプルールエラー「ロギングルールをロードできません」

ufw iptablesジャンプルールエラー「ロギングルールをロードできません」

ufwでiptablesルールを設定しようとしていますが、どのように機能するか誤解しているようです。説明されている一般的な構文に加えて、信頼できる文書が見つかりません。ここ。これは私の問題の単純化されたバージョンです。

追加後/etc/ufw/after.rules

*filter
:ufw-user-input - [0:0]
:FOO-CHAIN - [0:0]
-A FOO-CHAIN -j ufw-user-input
-A FOO-CHAIN -j DROP
COMMIT

アイデアは、FOO-CHAIN許可されたパケットだけが許可されufw allow、そうでなければ廃棄されるということです。

問題 -ufw reload一度ロードするとルールが適用されますが、2番目のリロードでは定数が始まりますERROR: Could not load logging rules。私が見つけた唯一の解決策は、テーブル全体(iptables -F && iptables -X)を更新することです。

フォローアップの質問:

  • 代わりにそれを使用すると、ufw-user-forward再読み込み時にエラーは発生しません。なぜそんなことですか?
  • なぜ軽油または他の側面を介して:ufw-user-input - [0:0]チェーンを定義する必要がありますかERROR: No such file or directoryafter.rulesファイルなので、次に実行する必要がありますuser.rules。つまり、ufw-user-inputすでに定義されていなければならないという意味です。ジャンプをに変更すると定義を省略でき、ufw-before-inputエラーは表示されません。

ベストアンサー1

私は同じ問題があり、UFWがufw-user-inputufwが有効かどうかを知るためにiptablesにチェーンが存在するかどうかを内部的にチェックすることを発見しました。

ufw-user-inputinを使用すると、orを実行したときにdoが削除されるのを-A FOO-CHAIN -j ufw-user-input防ぎます。 iptablesは変更を許可しないので、チェーンは存在し続けます。これにより、UFWの状態は混乱するか、さらには崩壊します。ufw-user-inputufw reloadufw disableufw status

ufw disableまたはそれ以降にルールが正しくクリーンアップされていることを確認する必要がありますufw reload

最も簡単な方法は、上記のチェーンのすべての行を追加するか、iptables -F FOO-CHAIN || true同様に削除することです。ufw-user-input/etc/ufw/before.init

/etc/ufw/before.init

set -e

case "$1" in
start)
    # typically required
    ;;
stop)
    # typically required
    iptables -F FOO-CHAIN || true
    # You may want to add other lines here to reset your chain in a desirable state if UFW is disabled like 
    # iptables -A FOO-CHAIN -j RETURN || true
    ;;
status)
    # optional
    ;;
flush-all)
    # optional
    ;;
*)
    echo "'$1' not supported"
    echo "Usage: before.init {start|stop|flush-all|status}"
    ;;
esac

before.initを使用することを忘れないでくださいchmod +x /etc/ufw/before.init

私はそれを必要とすることを確かめます。:ufw-user-input - [0:0]これはUFWの内部によるものであり、私の考えufw-user-inputではafter.rules

おすすめ記事