私の目的は、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の翻訳を取得する方法は?
ありがとうございました。
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