ポート80を通過するトラフィックを検査するために、2枚のネットワークカードでセットアップされたLinuxボックスがあります。1枚のカードはインターネットへの送信に使用され、もう1枚はネットワークスイッチに接続されます。ポイントは、デバッグ目的でそのスイッチに接続されたデバイス上のすべてのHTTPおよびHTTPSトラフィックを検査できるようにすることです。
iptablesについて次のルールを作成しました。
nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:1337
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 1337
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
192.168.2.1:1337に、Charles(http://www.charlesproxy.com/)を使用して記録する透過HTTPプロキシがあります。
ポート80ではすべて問題ありませんが、ポート1337を指すポート443(SSL)に同様のルールを追加すると、チャールズを通じて無効なメッセージに関するエラーが表示されます。
Charlesと同じコンピューターでSSLプロキシを使用したことがあります(http://www.charlesproxy.com/documentation/proxying/ssl-proxying/)が、何らかの理由で透過的に実行することに失敗しました。私がグーグルで調べたいくつかのリソースは不可能だと言っています-誰かが理由を説明できるなら、私はそれを答えとして受け入れます。
注として、サブネットに接続されたすべてのクライアントを含む、説明されたセットアップへのフルアクセスがあります。したがって、Charlesによる自己署名証明書を受け入れることができます。理論的には、透過的なプロキシが行うため、ソリューションはCharles固有である必要はありません。
ありがとう!
編集:少し遊んだ後、特定のホストで動作するようになりました。iptablesを次のように変更すると(およびリバースプロキシ用にcharlesで1338を開きます):
nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:1337
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 1337
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.2.1:1338
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 1338
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
応答を得ることができますが、宛先ホストはありません。リバースプロキシでは、1338からのすべてがヒットしたい特定のホストに行くように指定するだけで、ハンドシェークが適切に実行され、SSLプロキシをオンにして通信を検査できます。
1338からのすべてがそのホストに送られるとは思わないので、セットアップは理想的とは言えません。
再度、感謝します