web-dev-qa-db-ja.com

Iptablesで異なる内部ポート範囲を持つDNATポート範囲

単一のポートを内部ネットワークの別のポートにDNATする標準的な方法は、次のようなものです。

ip(6)tables -t nat -A PREROUTING -i wan0 -p tcp --dport 80 --to-destination 10.0.0.1:8080

ポート範囲が必要な場合は、_-m multiport_を_--dports_と一緒に使用できます。

ip(6)tables -t nat -A PREROUTING -i wan0 -p tcp -m multiport --dports 1000:2000 --to-destination 10.0.0.1

ここで、2つの手法を組み合わせてポート範囲(たとえば、1000-2000)を同じサイズの異なるもの(たとえば、12000-13000)にマップできるかどうかを知りたい。 Linux 4.1以降のカーネルを使用するIptablesでそれは可能ですか?

6
Lorenz

あなたの質問に答えるには、はい

Debianボックスでサンプルルールを実行しました...

iptables -t nat -A PREROUTING -i xenbr0 -p tcp --dport 64000:65000 -j DNAT --to 172.16.10.10:61000-62000

...出力を生成せず、成功を示します。カーネル3.16.0-4-AMD64を実行しています。

NATルールをiptables -t nat -vnL PREROUTINGで確認すると、ルールがリストされていることがわかります...

DNAT       tcp  --  xenbr0 *       0.0.0.0/0            0.0.0.0/0            tcp dpts:64000:65000 to:172.16.10.10:61000-62000

MadHatterは正しいです。ポートの範囲に-m multiportは必要ありません。ポートのコンマ区切りのリストにのみ必要です。 :オプションのポート範囲を指定するには--dportが必要ですが、DNATターゲットでポート範囲を指定するには-が必要です。

このルールが実際にうまくいくかどうかはわかりませんが、理論的にはあなたの目標を達成するはずです。

DNATターゲットの詳細については、 ここ を参照してください。

お役に立てれば。

10
maff1989