web-dev-qa-db-ja.com

iptablesのルールを保存する方法は?

Iptablesにルールを作成します。しかし、コンピューターを再起動すると、ルールが機能しません! Ubuntuでルールを保存する方法は?


問題は解決しました!

行う:

コマンドiptablesを書き込んだ後、次を実行します。

 1. Sudo su
 2. iptables-save > /etc/iptables.rules
 3. In /etc/network/if-pre-up.d/iptables,put:

 #!/bin/sh
 iptables-restore < /etc/iptables.rules
 exit 0

 4. After, in /etc/network/if-post-down.d/iptables,put:
 #!/bin/sh
 iptables-save -c > /etc/iptables.rules
 if [ -f /etc/iptables.rules ]; then
 iptables-restore < /etc/iptables.rules
 fi
 exit 0
 5. After, give permission to the scripts:
 Sudo chmod +x /etc/network/if-post-down.d/iptables
 Sudo chmod +x /etc/network/if-pre-up.d/iptables

詳細: https://help.ubuntu.com/community/IptablesHowTo#Saving_iptables 頑張ってください!

95
Gustavo

簡単な方法は、iptables-persistentを使用することです。

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

Sudo apt-get install iptables-persistent

インストール後、いつでもiptablesルールを保存/再ロードできます。

Sudo /etc/init.d/iptables-persistent save 
Sudo /etc/init.d/iptables-persistent reload

Ubuntu 16.04サーバー

上記のインストールは問題なく機能しますが、上記の保存と再ロードのための2つのコマンドは16.04サーバーでは機能しないようです。次のコマンドは、そのバージョンで機能します。

Sudo netfilter-persistent save
Sudo netfilter-persistent reload
141
user213088

Iptablesルールを保存する一般的な方法は、stdoutに書き込むコマンドiptables-saveを使用することです。

iptables-save > /etc/network/iptables.rules

Iptables-saveによって作成された出力は、iptables-restoreによってstdinで読み取ることができます。サーバーでNetworkManagerを使用しない場合、一般的なアプローチは/ etc/network/interfacesで事前準備コマンドを使用することです。

iface eth0 inet static
        ....
        pre-up iptables-restore < /etc/network/iptables.rules

NetworkManagerを使用している場合、/ etc/NetworkManager/dispatcher.d /の下に作成されたスクリプトから同じコマンドを実行できるはずです。 コミュニティドキュメント-iptables howto で、詳細について NetworkManagerの起動時の設定 を参照してください。

コマンドiptables、iptables-saveおよびiptables-restoreはIPv4のみであることに注意してください。 IPv6トラフィックの場合、同等のコマンドはip6tables、ip6tables-saveおよびip6tables-restoreです。

43
andol