Debianシステムを再起動するとiptablesルールが消えるのはなぜですか?


48

このルールを追加します。

sudo iptables -t nat -A OUTPUT -d a.b.c.d -p tcp \
       --dport 1723 -j DNAT --to-destination a.b.c.d:10000
  1. コンピューターを再起動すると、ルールが削除されます。どうして?
  2. ルールを維持するためにできることは何ですか?

回答:


45

iptablesには、ルールを永続的にするオプションはありません。しかし、を使用iptables-saveiptables-restoreてタスクを実行できます。

最初に、指定したコマンドを使用してiptableルールを追加します。

次に、/etc/iptables.conf次のコマンドを使用するなどして、iptablesルールをファイルに保存します。

$  iptables-save > /etc/iptables.conf

次のコマンドを追加して、/etc/rc.local再起動するたびにルールをリロードします。

$  iptables-restore < /etc/iptables.conf

15
Debianには、iptables-persistentこれを行うパッケージがあります。
バハマ

7
rc.localサービスの開始とファイアウォールポリシーの適用との間に開いているウィンドウのギャップがあるため、配置するのはかなり悪い考えです。これを克服するにはpre-up 、ループバックインターフェイスフックを使用することをお勧めします/etc/network/interfaces
poige

@poige:私は100%に同意しrc.local、意図した効果があるかもしれませんが、この状況では手間がかかります。
JMベッカー

3
@bahamat:そのパッケージをインストールするのが最善の解決策です。それはそれ自身の答えに値します。
JMベッカー

1
@TechZilla:完了。
バハマ

53

(これを独自の答えにすることが提案されたため...)

Debianでのインストールiptables-persistent

パッケージは/etc/iptables/rulesブート中に自動的にロードされます。

ルールを変更するたびに、実行/sbin/iptables-save > /etc/iptables/rulesしてルールを保存します。必要に応じて、シャットダウンシーケンスに追加することもできます。


12
二つの異なるルールファイルがあります/etc/iptables/rules.v4し、/etc/iptables/rules.v6IPv4とIPv6のそれぞれ。テーブルを両方の種類の接続に適用する場合は、両方のルールファイルに保存する必要があります。
PetaspeedBeaver 14年

11
シャットダウンシーケンスに追加しないでください!変更/セットアップ中にルールに違反した場合、少なくとも古くなった再起動により、以前の動作状態に戻ります。
VertigoRay

1

iptables-persistent上記のインストール後、Ubuntu 16.04+で次の短いコマンドを使用してルールを保存することもできます。 sudo netfilter-persistent save

また、前回保存したときの状態に復元することもできます。 sudo netfilter-persistent reload

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