以下のようにdnatにiptablesを使用しようとしています。
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 9000 -j DNAT --to-destination 10.0.0.1:9000
output interface
iptablesまたはルーティングテーブルを使用することが唯一の方法であると言えますか?
答え1
Can't use -o with PREROUTING
これは、次の理由でコマンドが指示するため不可能です。
- DNATは、名前が示すようにnat / PREROUTINGで発生します。今後ルーティング決定。
- ルーティング決定の前に、ルーティングスタックは決定に使用されませんでした。何出力インターフェイスになります(ホスト自体ではない場合、iptablesのフィルタには出力インターフェイスがまったくありません)。したがって、この情報は nat/PREROUTING には使用できず、これが出力インターフェースの指定が許可されない理由です。保持していない(メタ)データを一致させることはできません。
これは模式図仕組みを説明してください。
ルーティングの決定は決して次のことによって行われません。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