web-dev-qa-db-ja.com

TORトランスペアレントプロキシ-TCPリダイレクトはどのように機能しますか

https://trac.torproject.org/projects/tor/wiki/doc/TransparentProxy 、セクションLinux、iptablesを介したローカルリダイレクトからのサンプルルールセットに基づくTorルールセットを使用して、Torを設定しました透過プロキシとして。

そのルールセットを理解したと思いましたが、単純に得られない点が1つあります。それは、TCPセグメントは、SYNフラグが設定されているときにTorがリッスンするポートにのみリダイレクトされるということです。

たとえば、http://www.example.comにアクセスしたいと思います。私のブラウザはDNS要求を実行し、対応するIPアドレスを取得して、そのアドレスにTCPセグメントを送信し、SYNフラグが設定されます。

ルールセットによると、セグメントはTorポートにリダイレクトされるため、Torはプロキシとして機能し、IPパケットをhttp://www.example.comにルーティングし、Webサイトサーバーからブラウザに応答を返します。私のブラウザは、送信元IPがサーバーからのものであり、ACKフラグがTCPペイロードに設定されている場合にパケットを返しますよね?

したがって、私のブラウザは、SYNフラグがwww.example.comのIPアドレスに設定されなくなった次のTCPセグメントを送信します。

ただし、SYNフラグが設定されていないため、NATテーブルには対応するルールがありません。したがって、後でリダイレクトされたり、出力テーブルで受け入れられたりすることはありません。

それにもかかわらず、すべてが正常に機能しています。何が欠けているのですか?

3
barfoo

最初のACKの後のパケットを処理するルールは次のとおりです。

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

これは基本的に、確立されたセッションの一部であるか、それに関連するすべてのパケットを通過させることを意味します。最初のSYNに続くマシンからのすべてのパケット(それに有効な応答があった場合)は、確立されたセッションの一部であるため、通過します。
RELATEDは、FTPなどのプロトコルに使用されます。モジュールが有効になっている場合、「通常の」セッションには複数のTCPセッションが含まれる可能性があります。)

TorへのDNSリダイレクトも設定し、AutomapHostsOnResolveを使用しているため、ブラウザ(およびその他のソフトウェア)に表示されるIPアドレスは、www.example.comのIPアドレスではなく、指定した範囲の仮想アドレス(10.192.0.0/10)。 これは正しくありません。一部のサフィックスのみがそのローカル範囲にマップされます(デフォルトでは.exitおよび.onion)。

1
Mat

以下の抜粋は、2002年から 第5章、NATへの制御このNATガイド の最初から抜粋したものです。


      _____                                     _____
     /     \                                   /     \
   PREROUTING -->[Routing ]----------------->POSTROUTING----->
     \D-NAT/     [Decision]                    \S-NAT/
                     |                            ^
                     |                            |
                     --------> Local Process ------

"上記の各ポイントで、パケットが通過すると、関連付けられている接続が検索されます。新しい接続の場合は、NATテーブルを使用して、それをどうするかを確認します。それが与える答えは、その接続上の将来のすべてのパケットに適用されます。 "

0
Guest