CentOSを実行しているサーバーでiptablesルールセットを定義しています。ネットワークがオンラインになったとき(マシンの起動時、またはネットワークサービスの再起動後)、iptablesルールセットが既に適用されている(およびiptablesの起動に失敗した、またはルールセットの適用に失敗した場合)ネットワークインターフェースが起動しません)?
(私はこれがnoobの質問であることを知っていますが、マスカレードDHCP NATとファイアウォールの背後にある信頼できるネットワーク以外でサーバーを実行したことがないので、... noobsからのnoobの質問を期待します。 )
初期状態では、起動スクリプトの順序によってインターフェースが起動する前にiptablesが起動することが保証されています。各起動スクリプトの「chkconfig」行を見ると、アクティブなときに「オン」になっているランレベル、開始順序、停止順序が表示されます。
Iptablesルールセットが適切に適用されなかった場合(またはまったく適用されなかった場合)にインターフェースが起動しないことは保証されません。
例:chkconfig: 2345 08 92
この行は、問題のサービスがランレベル2、3、4、および5でアクティブになり、8で開始し、92で停止することを示しています。より大きな「開始」値を持つものは、この後にのみ開始しますスクリプトは完了しますが、このスクリプトエラーは完了と見なされ、ダウンストリームスクリプトの実行を妨げません。
この回答はCentOS 6以前に適用されるものであり、必ずしもCentOS 7に適用されるわけではないことに注意してください。私は7についてこの質問に答えるのに十分なほど個人的に調査していません。
Centosでifup-postオプションを使用することもできます:
/ etc/sysconfig/network-scripts/ifup-post
SLIPデバイス以外のネットワークデバイスが起動したときに呼び出されます。/etc/sysconfig/network-scripts/ifup-routesを呼び出して、そのデバイスに依存する静的ルートを表示します。/etc/sysconfig/network-scripts/ifup-aliasesを呼び出して、そのデバイスのエイリアスを表示します。ホスト名がまだ設定されておらず、そのデバイスのIPのホスト名が見つかった場合は、ホスト名を設定します。ネットワークイベントの通知を要求したすべてのプログラムにSIGIOを送信します。
必要に応じて、ネームサービス構成の修正、任意のスクリプトの呼び出しなどに拡張できます。
このスクリプトが実行され、上記(ifup-routeおよびifup-aliases)の後にifup-localが検索されます
if [ -x /sbin/ifup-local ]; then
/sbin/ifup-local ${DEVICE}
fi
したがって、このファイルを作成して、たとえばiptables-restoreを使用して、必ずiptablesを再度呼び出すようにしてください。
iptables-restore < /etc/sysconfig/iptables
少し補足:次回サーバーを起動したときに必要なルールが確実に存在するようにするには、
Sudo sh -c "iptables-save > /etc/iptables.rules"