.png)
異なるUbuntuサーバーにスクリプトがあります/etc/init.d/iptables start|stop|restart
(通常のシェルスクリプトです)
新しいサービスごとに、ポートを開くための行を編集して挿入する必要があります。これにより、異なるマシンで init.d スクリプトのさまざまなバージョンが多数作成されます。
たとえば、すべてのファイルを自動的に含めることは可能ですか/etc/iptables/include.d/
?
目標は、始める/etc/init.d/iptablesの機能
include /etc/iptables/include.d/*
そして、追加のファイルを入れた後は/etc/iptables/include.d/
、
/etc/init.d/iptables restart
編集:Saurabh が指摘したように、コマンドに特定の順序が必要な場合、これは問題を引き起こす可能性があります。高度な設定では、次のような異なるディレクトリが存在する可能性があります。
/etc/iptables/include01.d/
/etc/iptables/include02.d/
/etc/iptables/include03.d/
そして、次のように含めます。
/etc/iptables/include01.d/* を含める ... おそらく、メイン ファイルのここにいくつかのコードが記述されます... /etc/iptables/include02.d/* をインクルードします。 /etc/iptables/include03.d/* をインクルードします。
答え1
init.d スクリプトに次の行を追加します。
run-parts --report /etc/iptables/include.d
ディレクトリ内のすべてをシェル スクリプトとして実行します (実行可能である必要があります)。
.port で終わるファイルのみを実行したい場合は、次のようなものを使用できます。
run-parts --regex '\.port$' /etc/iptables/include.d/
順序が正しいことを確認したい場合は、ファイルに次の名前を付けることができます。
10_web.port
20_ssh.port
etc..
答え2
for f in /etc/iptables/include.d/*
. $f
done
ドットと%fの間のスペースに注意してください
Saurabh さんの言う通りです。これは必ずしも意図したとおりに動作するとは限りませんが、10-xxx、20-yyy などの命名規則を使用すれば、管理できる可能性があります。
答え3
bash で簡単な関数を定義できます:
function include() {
for FILE in $( find "$1" -type f -print | sort )
do
source $FILE
done
}
その後:
include some_dir/*
あるいは:
include some_dir/*.conf
答え4
iptables 構成にファイルを含めることはできないと思います。ファイアウォール ルールは記述順序に大きく依存するため、この選択は理にかなっています。フォルダーにファイルを含めるだけでは、iptables はどのルールを最初に配置し、どのルールを後に配置するかがわかりません。