web-dev-qa-db-ja.com

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

私の目的は、NAT(翻訳)、すべてのポートとプロトコルでeth0に到達するすべてのIPアドレスを次のようにすることです: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の翻訳を取得する方法は?

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

8
Djee

man iptables-extensionsから:

ネットマップ
このターゲットを使用すると、アドレスのネットワーク全体を別のアドレスのネットワークに静的にマッピングできます。 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
13
A.B