コンピュータ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アドレスを含むインターフェースはどこにありますかtun0
?172.16.250.128
Aマシンで受信されたすべてのパケットは、ポートを変更せずに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の送信元()と宛先()をオーバーライドしたため、できません。サーバーDNAT
Bに関する限り、トラフィックはサーバーAから発生してサーバーBに転送されます。
トラフィック応答がサーバーAに再送信されると、サーバーAのみがDNAT / MASQUERADEを元に戻して元の真のソースに送信される方法がわかります。