トランスペアレントプロキシは、DNATedパケットの元の宛先アドレスをどのように知ることができますか?

トランスペアレントプロキシは、DNATedパケットの元の宛先アドレスをどのように知ることができますか?

コンピュータAとBという2台のコンピュータがあります。マシン A は、すべてのトラフィックをマシン B にルーティングします。マシンAで次のiptablesルールを設定します。

iptables -t nat -A PREROUTING -i wlan0 -j DNAT --to-destination 172.16.250.128
iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE

IP範囲内のIPアドレスを含むインターフェースはどこにありますかtun0172.16.250.128Aマシンで受信されたすべてのパケットは、ポートを変更せずにBマシンにルーティングされます。

Machine BI でポート 8080 に透過プロキシ (mitmproxy、burpsuite など) を設定し、次の iptables ルールを使用します。

iptables -t nat -A PREROUTING -i ens33 -p tcp -j REDIRECT --to-ports 8080

ここでens33(ip)は、コンピュータA172.16.250.128のインターフェイスに接続されているインターフェイスです。tun0上記の規則は、このインターフェイスのすべてのTCPパケットをポート8080(透明プロキシがリッスンするポート)にリダイレクトします。すべてが正常です。すべてのTCPパケットは透過プロキシを介してルーティングされます。

しかし、透明なプロキシがパケットの元の宛先(アドレスとポート)をどのように知っているのかわかりません。この質問が見つかりました:[link] [1] iptablesは元のターゲットを編集する前に保存することを示しています。これで、透明プロキシが元のポートをどのように知っているかを理解しました。しかし、目的地の住所はどうですか?マシンAで宛先アドレスが変更されたため、マシンBがこれを変更していないため、マシンBとその内部は元の宛先アドレスを知る必要があるとは思いません。そうですか?ただし、wlan0トランスペアレントプロキシにルーティングされるインターフェイスに送信されたパケットの元の宛先アドレスを取得できます。私は透明なプロキシがパケットを元の宛先(インターネット上の宛先)に正しくルーティングするので、これを知っています。

マシンBは、DNATed(修正された宛先)パケットの元の宛先をどのように知ることができますか?元の宛先もネットワーク経由で送信されますか? Wiresharkでは見えません。 [1]:透明なSOCKSプロキシはどのIPアドレスを使用するのかをどのように知ることができますか?

ベストアンサー1

あなたは知りたいと思います」透明プロキシを実装する方法[サーバーBから]パケットの元の宛先を知るMASQUERADEサーバーAの送信元()と宛先()をオーバーライドしたため、できません。サーバーDNATBに関する限り、トラフィックはサーバーAから発生してサーバーBに転送されます。

トラフィック応答がサーバーAに再送信されると、サーバーAのみがDNAT / MASQUERADEを元に戻して元の真のソースに送信される方法がわかります。

おすすめ記事