HTTP(s) トラフィックを別のサーバーにリダイレクトする

HTTP(s) トラフィックを別のサーバーにリダイレクトする

ワイヤレス プラットフォームの研究/リバース エンジニアリング用のテスト環境をセットアップしようとしています。

私が調査しているハードウェアが接続するネットワークをブロードキャストするルーター AP があり、そこから AP はすべてのトラフィックを分析用のサーバーにリダイレクトします。

トラフィックをリダイレクトするための AP 上の iptables nat ルールは次のとおりです。

iptables -t nat -A PREROUTING -p tcp --dport 80 -m conntrack --ctstate NEW -j DNAT --to x.x.x.x:8880
iptables -t nat -A PREROUTING -p tcp --dport 443 -m conntrack --ctstate NEW -j DNAT --to x.x.x.x:8443
iptables -t nat -A PREROUTING -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE

AP とサーバーの両方で IP_FORWARD も有効になっています。

私のサーバーには、トラフィックを取得して分析できる sslsplit、mitmproxy などのソフトウェアがあります。

問題は、このようにトラフィックをリダイレクトすると、サーバー上のソフトウェアが適切なポート/ドメインに接続するのではなく、何らかの理由で自分自身に接続しようとすることです。

たとえば、サーバ IP が 1.1.1.1:8443 だった場合、AP に接続されたハードウェア 192.168.0.100 が 2.2.2.2:443 に解決される Web サイトにアクセスすると、iptables ルールは 2.2.2.2:443 に送信されるすべてのトラフィックを 1.1.1.1:8443 にリダイレクトして分析します。これはすべて問題ありませんが、ソフトウェアが要求を完了して応答を取得するために接続をリモート http サーバに転送しようとすると、応答のためにトラフィックを 2.2.2.2:443 に渡す代わりに、1.1.1.1:8443 (つまりそれ自体) に送信します。

これは私の iptables ルールのせいでしょうか、それとも何らかのソフトウェアの問題でしょうか? リモート処理方式で使用した場合、いくつかのソフトウェアで同じ結果が発生するため、トラフィックをリダイレクトする方法に問題があると考えられます。

このようなトラフィックのリダイレクトは可能ですか、それとも別の方法で行う必要がありますか?

セットアップは、クライアント (192.168.0.100) -> AP -> ルーター -> インターネット -> データ処理サーバー (1.1.1.1:8443) -> インターネット -> Web ホスト (2.2.2.2:443) です。

ご提案があればぜひお願いします。

答え1

サーバーから 2.2.2.2:443 (元の宛先) へのトラフィックは AP を通過しますか?

その場合、変換が適用されるため、サーバーから発信されたトラフィックが DNAT 変換から除外されるように DNAT ルールを変更します。

iptables -t nat -A PREROUTING -p tcp ! -s x.x.x.x --dport 80 -m conntrack --ctstate NEW -j DNAT --to x.x.x.x:8880

関連情報