iptables
自動化された方法で複数のコンピュータにそれらを展開するために使用するポート転送ルールを作成しました。アンシプール。ただし、POSTROUTING
チェーンルールでは、転送されたパケットを受信するシステムが応答する場所を知るために、ソースアドレスをローカルシステムのアドレスに変更する必要があります。ルールは次のとおりです。
iptables -t nat -A POSTROUTING -d 192.168.11.2 -o eth1 -p tcp --dport 22 -j SNAT --to-source 192.168.11.1
つまり、DNATを使用してPREROUTING
宛先アドレスを192.168.11.2に変更し、pingした後にパケットをネットワークに送信する前に、ネットワークヘッダーの送信元アドレスを変更するACCEPT
必要があります。SNAT
--to-source
「ローカルマシンのIP」でなければならないことを記号的に指定するためにこのルールを作成できますか?必要なコマンドを一連のパイプコマンドにコンパイルしてこれを達成します。
iptables -t nat -A POSTROUTING -d 192.168.11.2 -o eth1 -p tcp --dport 22 -j SNAT --to-source $(ifconfig eth1 | grep -i "inet " | awk '{print $2}')
しかし、私の意図は、iptables
設定ファイルを生成し、可能であればすべてのコンピュータに展開することです。
答え1
iptables設定スクリプトは単にシェルスクリプトです。 「一般的な」方法では、ローカルIPアドレスを変数に追加できます。
LOCALIP=`hostname -i`
次に、ハードコードされたIPアドレスインスタンスを次のものに置き換えます。
$LOCALIP
答え2
SNATの代わりにMASQUERADEターゲットを使用できます。
読みたいかもしれませんSNATと仮面舞踏会の違いただし、MASQUERADEにはオーバーヘッドがあります。