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 頑張ってください!
簡単な方法は、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
上記のインストールは問題なく機能しますが、上記の保存と再ロードのための2つのコマンドは16.04サーバーでは機能しないようです。次のコマンドは、そのバージョンで機能します。
Sudo netfilter-persistent save
Sudo netfilter-persistent reload
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です。