web-dev-qa-db-ja.com

一般的にDNAT?

TCPポート80を正しいマシンに汎用的に送信するようにiptablesをどのように設定しますか(これはすべて同じサブネット内にはありません)。

例:
[。] iptables -t nat -A PREROUTING -s 0.0.0.0//0 -p tcp -d $NATIP -j DNAT --to-destination $machineIP
iptables -t nat -A POSTROUTING -s $machineIP -p tcp -d 0.0.0.0//0 -j SNAT --to-source $NATIP
_

上記は単一のマシンとの間でパケットを正しく送信しますが、Nマシンに対してどのようにして行われますか。 192.168.1.0/25のような一般的な目的地を信じていないので。

カムバックが正しいIPに送ることができるように、どういうわけかパケットにタグを付けますか?
[。ね。]これは他のコマンドで行われますか?

1
kevin

最初にいくつかの考慮事項。あなたが持っている場合 0.0.0.0/0ソースまたは宛先として、ルールに指定する必要はありません。

あなたの質問を考えると、あなたが各マシンのNATIPを持っているならば、それは各マシンに1対のルールを作るという問題です。同じNATIPを複数のマシンに使用したい場合は、ポートではない場合は区別するには、送信元IPです。そうでなければiptables、それ自体は、パッケージの送信先を選択できません。 (この問題に戻ります)

出力NAT]にすることができます。各マシンの場合は、1ルールを作成したり、テーブルを作成したり、翻訳したいすべてのIPとサブネットを設定したりできます。

iptables -t nat -N addrTranslate
iptables -t nat -A OUTPUT -s x.x.x.x -j addrTranslate
iptables -t nat -A OUTPUT -s y.y.y.y/24 -j addrTranslate
iptables -t nat -A addrTranslate -j SNAT --to z.z.z.z
 _

複数のMachine NAT]の1つの代替案は、A​​pacheを使用してプロキシを設定することです。

0
fboaventura