私はubuntu経由で動作するAmazon EC2インスタンスを使用しています。デフォルトでは、セキュリティ制限に従ってアプリケーションをポート80にバインドできないため、ポート8080にバインドし、次のコマンドを使用してポート80から8080へのルーティングリダイレクトを設定します。
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to 8080
しかし、サーバーを再起動すると、このコマンドを再度呼び出すまで、この設定はアクティブではなくなっていることがわかりました。
だから私の質問は、システムが再起動された場合でもポートのリダイレクト作業を有効にする方法ですか?
このコマンドは/etc/rc.local
に追加できるため、再起動後に自動的に実行されます。
代わりにiptables-saveコマンドを使用してください。ファイアウォールルールをrc.localスクリプトに入れないでください。 rc.localは最後に実行されるものです。ブロックルールがrc.localに配置されている場合、攻撃者が適切でないルールを悪用できる短い時間枠があります。この状況ではおそらく重要ではありませんが、後であなたに噛み付くような悪い習慣に陥らないことが最善です。
公式のipttableのドキュメントがどのように教えてくれるかを以下に示します。 こちらを参照
/ etc/network/interfacesに次の2行を追加します。pre-up iptables-restore < /etc/iptables.rules post-down iptables-save > /etc/iptables.rules
「post-down iptables-save> /etc/iptables.rules」という行は、次回のブートで使用されるルールを保存します。
Ubuntu 16.04の/etc/network
に、ネットワークの初期化とシャットダウン中にさまざまな時点でスクリプトを実行する一連のディレクトリを発見しました。
if-down.d
if-post-down.d
if-pre-up.d
if-up.d
interfaces.d
だから私はいつものように構成をダンプできることがわかりました:
$ Sudo sh -c "iptables-save > /etc/iptables.rules"
次に、ファイル `/etc/network/if-pre-up.d/restoreを作成しました。
#!/bin/sh
iptables-restore < /etc/iptables.rules
...実行可能フラグ
$ Sudo chmod 755 /etc/network/if-pre-up.d/restore