/ 24サブネットワーク全体のLinux iptables NAT


7

私の目的は、すべてのポートおよびプロトコルでeth0に到達するすべてのIPアドレスをこの方法でNAT(変換)することです:192.168.55.x-> 192.168.42.x(IP転送が有効になっており、192.168.42.0 / 24サブネットワークがeth1にあります)。たとえば、x = 20の場合、次のような行のペアごとに1つのホストに対してこれを実行できます。

iptables -t nat -A PREROUTING -i eth0 -d 192.168.55.20 -j DNAT --to 192.168.42.20
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.42.20 -j SNAT --to 192.168.55.20

しかし、253の可能なホストすべてを翻訳する方法を見つけることができません。私はこれを試しました:

iptables -t nat -A PREROUTING -i eth0 -d 192.168.55.0/24 -j DNAT --to 192.168.42.0-192.168.42.255
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.42.20/24 -j SNAT --to 192.168.55.0-192-168.55.255

これにより、ランダムなホスト変換が行われます。負荷分散に役立ちます。しかし、単純な1対1の翻訳を取得する方法は?

ありがとうございました。


configファイルでforループを使用できる場合があります。おそらく、ここでポートに提案されているものと似ています:here
0range

回答:


9

からman iptables-extensions

NETMAP
このターゲットを使用すると、アドレスのネットワーク全体を別のアドレスのネットワークに静的にマッピングできます。natテーブルのルールからのみ使用できます。

したがって、必要なルールは1つだけです。

iptables -t nat -A PREROUTING -d 192.168.55.0/24 -i eth0 -j NETMAP --to 192.168.42.0/24

最初に「42」ネットから開始された接続も正しく表示する場合は、次の2番目のルールを完了します。

iptables -t nat -A POSTROUTING -s 192.168.42.0/24 -o eth0 -j NETMAP --to 192.168.55.0/24

ありがとうございました!それはうまく機能します。それでも、私はこれに気付かなかったのかわかりません。数週間経ちましたが、私は覚えていません。おそらく、NETMAPが言及されていないガイドのみを読んでください。私はiptablesの manページのみを読みました。この貴重なエントリーをありがとう!
ジェー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.