dnatを実行するときにiptablesのターゲットインターフェイスに言及できますか?

dnatを実行するときにiptablesのターゲットインターフェイスに言及できますか?

以下のようにdnatにiptablesを使用しようとしています。

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 9000 -j DNAT --to-destination 10.0.0.1:9000

output interfaceiptablesまたはルーティングテーブルを使用することが唯一の方法であると言えますか?

答え1

Can't use -o with PREROUTINGこれは、次の理由でコマンドが指示するため不可能です。

  • DNATは、名前が示すようにnat / PREROUTINGで発生します。今後ルーティング決定。
  • ルーティング決定の前に、ルーティングスタックは決定に使用されませんでした。出力インターフェイスになります(ホスト自体ではない場合、iptablesのフィルタには出力インターフェイスがまったくありません)。したがって、この情報は nat/PREROUTING には使用できず、これが出力インターフェースの指定が許可されない理由です。保持していない(メタ)データを一致させることはできません。

これは模式図仕組みを説明してください。

一般ネットワークのNetfilterとパケットフロー

ルーティングの決定は決して次のことによって行われません。Webフィルタまたはiptablesしかし、ルーティングスタックを介して。したがって、特定のルーティングにはip routeルーティングスタック(...)を使用する必要があります。時々iptablesなしでこれを行うことができない場合は、iptablesを使用してパケットに表示を設定することで、ルーティングスタックを正しい方向にプッシュできます。ただし、ルーティング部分が難しい場合があります。

特定の要件がある場合は、質問にこれらの事項を尋ねる必要があります。質問はまた説明するべきです。なぜだけでなくどのようにあなたはこれを避けるためにこれをしたいXYの問題

答え2

あなたはできないと思います。

 iptables -t nat -A PREROUTING -i eth0 -o eth0 -p tcp --dport 9000 -j DNAT --to-destination 10.0.0.1:9000
 iptables v1.8.4 (nf_tables): Can't use -o with PREROUTING

関連情報