起動時に毎回iptableルールを復元する必要がありますか?


18

再起動するたびに、iptablesルールを失い、入力に時間がかかりました。ブート時それらを保存して復元できることは知っていますが、とにかく永久に保存する方法はありますか?毎回ブート時にそれらを本当に復元する必要がありますか?マジ?

問題は、whileループを使用してIPをロードするIPの膨大なリストがあることです。これには10分以上かかることがあります。

これは私のホームFTPサーバーです。これは、1GBのRAMと非常に小さな処理能力を備えた小さなVMです。私はアジア大陸をあきらめたので、非常に多くのIPがあります。毎日総当たりでFTPサーバーにアクセスする必要はありません。私も政府をブロックします。モニター、トラッカー、スパマー。

これは、リストに読み込むために使用するwhileループです。

grep INPUT block.list | while read LISTA; do sudo iptables -A $LISTA; done

あなたの質問は少し曖昧です、あなたが「永久に保存する」と言うとき、私はあなたがファイルのように意図したと思いましたが、残りを読んだ後、あなたが実際に意味するものはあなたがそれらを手動でリロードする必要はないようです起動時に毎回。また、リロードする必要があるルールの数は同じであるため、まだしばらく時間がかかりますが、pankajの答えに従って手動で行う必要はないと思います。
ジェフウェリング

回答:


21

まず、次の内容のファイルを作成しますiptables-save

sudo iptables-save > /etc/iptables_rules

ファイルをどこに置くかは問題ではありません。次の行が同じファイルを参照していることを確認するだけです。次に、次の/etc/rc.local行を開いて追加します。

/sbin/iptables-restore < /etc/iptables_rules

これ以降、コンピューターの電源を入れたり、再起動したりするたびに、指定したファイルからルールがロードされます。


1
-bash: /etc/iptables_rules: Permission denied最初のコマンドを取得します。sudoとすべてを使用するのは奇妙です。
capdragon

5
エラーをsudo sh -c '/sbin/iptables-save > /etc/iptables.save'回避するために使用する必要がありPermission deniedました。参照
capdragon

Uは中に/ etc /ファイルを作成することは必須ではありません任意のディレクトリにファイルを作成することができます
パンカジ・シャルマ

8
/etc/rc.localこれに使用することはお勧めしません。システムの残りの起動よりも後に実行され、潜在的にシステムを非ファイアウォール状態のままにします。この1行のスクリプトを/etc/network/if-up.d/firewall(新しいファイル)に配置することをお勧めします。これにより、ネットワークインターフェイスを有効にするたびに実行されるようになります。
gertvdijk

2
権限エラーは正常/予想されます。sudoは「>」の前のコマンドにのみ適用され、ファイルのリダイレクトはシェルによって個別に行われます。
ImaginaryRobots

16
apt-get install iptables-persistent

インストール時に、現在のiptables設定を保存する必要があります。それ以外の場合は、これらのファイルに保存して(v4またはv6に依存)、iptables-persistentがブート時にそれらをロードします:)

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

1

多くのルールがある場合は、ipsetsをiptablesと組み合わせて使用​​することも検討する必要があります。Ipsetはインデックス付きデータベーステーブルを使用し、アドレスを検索して受け入れるか拒否するかを決定するときにiptablesよりもはるかに高速です。

http://ipset.netfilter.org/index.html

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