Iptables永続サービスが変更を保存しないのはなぜですか?


18

私は、その後、この Ubuntuの12.04でのIPルール設定するにはチュートリアルを。セットアップではすべて正常に機能しましたが、リブートしても持続しない変更をファイアウォールに加えました。その理由はわかりません。ここに、iptables-persistentをどのように使用しているかのデモがあります。何が間違っていますか?

$ sudo service iptables-persistent start
 * Loading iptables rules...                                                                                             *  IPv4...                                                                                                              *  IPv6...   

$ sudo iptables -L   //shows a certain rule
$ iptables -D INPUT ... //command successfully drops the rule
$ sudo iptables -L   //shows rule has been deleted

 $ sudo service iptables-persistent restart
 * Loading iptables rules...                                                                                             *  IPv4...                                                                                                              *  IPv6...                                                                                                      [ OK ] 
 $ sudo iptables -L  //rule is back

私はiptables -D INPUTルールがsudo実際には成功を報告していると確信していないことに気づいていますか?内で実行すると動作は変わりますsudoか?
ブラッチリー14

回答:


41

iptables-persistentその方法では動作しません。iptables-persistent「サービス」を再起動しても、iptablesの現在の状態がキャプチャされて保存されません。パッケージが最後に構成されたときに保存されたiptablesルールを復元するだけです。

を設定するにはiptables-persistent、現在のiptablesルールセットについて通知する必要があります。

これを実現する1つの方法は次のとおりです。

iptables-save >/etc/iptables/rules.v4
ip6tables-save >/etc/iptables/rules.v6

または、同等に、iptables-persistentパッケージは以下も提供します。

dpkg-reconfigure iptables-persistent

(ルールを保存するかどうかについての質問にはいと答える必要があります。)

その後、次回iptables-persistent起動/再起動すると、予想されるiptablesルールセットがロードされます。


9

現在のiptablesルールを保存する非常に簡単な方法は、次のコマンドを使用することです。

sudo service netfilter-persistent save

netfilter-persistent(およびiptables-persistent)パッケージのインストール後に少なくともUbuntuで機能する上記を使用すると、iptablesコマンドを手動で実行したり、パッケージを再構成したりする必要はありません(上記の承認済みの回答でも示唆されています)。


それsudo service netfilter-persistent savesudo service netfilter-persistent save .?(最後に点。)
トマス

注意していただきありがとうございます、正しいコマンドは行末のドットなしです。それに応じて回答を修正しました。
OpenITeX

3
$ iptables ... DROP //command successfully drops the rule
$ sudo iptables -L   //shows rule has been deleted

それは何をDROP意味するかではありません。からman iptables

...特別な値ACCEPT、DROP、 QUEUEまたはRETURN。ACCEPTは、パケットを通過させることを意味します。DROPは、床にパケットをドロップすること意味します。 QUEUEは...

だからあなたがやったことは新しいルールを追加することです。他のルールを効果的に置き換えることができますが、それらのルールはまだ存在します。

このようなもの(あなたのiptables -L出力)をチェックするとき、私はgrep "string unique to this rule"あなたの目を使うのではなく、それを養います。簡単かつ迅速に実行でき、エラーが発生しにくくなります。

iptables -L | grep "some unique string"

ルールを削除する場合は、-Dスイッチを使用します。マニュアルページでは、この2つの形式について説明しています。

-D、-チェーンルール仕様の削除

-D、-チェーンルール番号の削除

選択したチェーンから1つ以上のルールを削除します。このコマンドには2つのバージョンがあります。ルールは、チェーン内の番号(最初のルールの1から始まる)として指定するか、一致するルールとして指定できます。


申し訳ありませんが、それは不明でした。-Dオプションを使用してルールを削除しています。上記の変更を参照してください
bernie2436 14

3
-D「ドロップ」ではなく「削除」の略です。「ドロップ」という用語を使用して、iptables地獄のように混乱している場合、ジャンプターゲット以外を意味します。
ブラッチリー14

1

によって説明されるように @ steven-mondayでたように、適切なディレクトリ(つまり:)に自分でルールセットを保存できます/etc/iptables/rules.v{4,6}

しかしながら、 @ OpenITeXは正しい:のsaveアクションを呼び出すservice netfilter-persistent方が優れています。

今日(18.10)では、iptables-saveが組み込まれていますが、 iptables-persistentされていないインストールされています。したがって、によって呼び出されたプラグインディレクトリservice netfilter-persistentは空であり、サービスはルールセットが保存されたが、保存されなかったことを出力します。

TLDR:インストール iptables-persistentプラグインディレクトリ/usr/share/netfilter-persistent/plugins.dにプラグインが含まれていることをして確認します。


ここに私がそれを理解した方法があります:

$ cat /etc/init.d/netfilter-persistent 
...
case "$1" in
...
save)
    log_action_begin_msg "Saving netfilter rules"
    /usr/sbin/netfilter-persistent save
    log_action_end_msg $?
    ;;

次に、 /usr/sbin/netfilter-persistentスクリプトを外部スクリプトを呼び出すことに注意して。

$ cat /usr/sbin/netfilter-persistent
...
PLUGINS=/usr/share/netfilter-persistent/plugins.d
...
run_plugins () {
    if [ -d ${PLUGINS} ]; then
        run-parts -v -a ${1} ${PLUGINS}
    fi
}

case $1 in
start|save|flush)
    run_plugins ${1}
    ;;

それから私はそれ/usr/share/netfilter-persistent/plugins.dが空だったことに気づいた。


1

iptables-persistentをインストールします。

sudo apt install iptables-persistent

必要な変更を行った後、ルールを保存します。

sudo netfilter-persistent save
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.