VPN + TOR / I2Pを介したすべてのトラフィックの匿名化。 ミドルボックスをゼロから置く

この記事では、オペレーティングシステムがTORの存在を疑わないように、オペレーティングシステムのすべてのトラフィックをTOR経由で転送する方法について説明します。







これにより、無限のプロキシとタマネギの設定について考える必要がなくなり、「クライアントトレントはプロキシを完全にサポートしていないため、実際のIPアドレスをマージしますか?」というトピックを恐れずに済みます。



「TOR」と言うとき、「TORとI2P」を意味します。 同様の手法を使用して、ここで任意のダークネットを接続できます。



この記事は「純粋に具体的」です。 この理論は、 Pandosの記事habrahabr.ru/post/204266ですでに十分に説明されています。 このテキストは、「どのように機能させるか」という詳細な指示を与えます。



問題の声明



1.ボタンをクリックするだけで、コンピューターは「ロシア語ではなくすべてのトラフィック」モードになります。



2. 2番目のボタンを押すと、「すべてのトラフィックがTORを通過する」モードに切り替わります。



3. 3番目のボタンはI2P用です。



4.入力TORノードは海外に配置する必要があります。



5.これはすべて、Linux、Windows、Androidで動作するはずです。 前もって:OS XとiPhoneではすべて問題ありません。私はそれらを持っていないので、抗議することはできません。



免責事項



VPNでtorを使用しても、必ずしも匿名性が高まるとは限りません。 詳細: trac.torproject.org/projects/tor/wiki/doc/TorPlusVPN この記事では、賢明に使用する必要があるツールについて説明します。



ホスティング



まず、比較的安価なVPSが必要です。その所有者は、TORがそこで回転することを気にしません(もちろんロシア語ではありません)。 個人的には、DigitalOceanを使用しています。 禁止されたトラフィックはToSで指定されていません(海賊版トレントをIPから直接ダウンロードすると、一度にブロックされます。実際、これにはTORが必要です...)。 月額5ドルです。



ここで登録できます: www.digitalocean.com/ ?refcode=82e536b1a24d(紹介リンク、10ドル、私は25ドルです。このビジネスをプレイしたくない-refcodeを削除してください)。



あなたがそのような目的のための最良または少なくとも最悪のホスティングオプションを知っているなら-コメントを書いて、私は記事を更新します。



VPSを作成するための具体的な手順については説明しません。これは、ホスティングに依存しており、簡単だからです。 最終的にコマンドを実行できると仮定しましょう。



ssh root@1.2.3.4
      
      







VPS-kuでシェルを取得します。 私はdebian 7がVPS-keで実行されていると仮定しますが、少なくともこの記事はdebian 7でテストされました。おそらくubuntuでも動作します。



パッケージのインストール



まず、私たちの生活を楽にするアプリケーション。 お気に入りのエディター、必要に応じてmcなどを配置することを忘れないでください。

 apt-get update apt-get upgrade #       -- ! apt-get install fail2ban unattended-upgrades etckeeper #       
      
      







I2Pはdebianリポジトリにないため、新しいソースを追加する必要があります。



 echo "deb http://deb.i2p2.no/ wheezy main" >> /etc/apt/sources.list.d/i2p.list echo "deb-src http://deb.i2p2.no/ wheezy main" >> /etc/apt/sources.list.d/i2p.list apt-get update apt-get install i2p-keyring apt-get update
      
      







次に、TOR、VPN、およびI2Pのメインパッケージを配置します。 DNSサーバーも必要です。 非バインドを使用しています。



 apt-get install tor i2p unbound openvpn privoxy
      
      







VPNのセットアップ



すべてのVPN設定を/ opt / vpnに保持します。 まず、サーバーとクライアントの証明書を生成する必要があります。



注:複数のサーバー(tor用、通常トラフィック用)を実行し、それらに同じ証明書を使用します。 これは必要ありません。 openvpnサーバーごとに独立した証明書またはCAを生成することは可能です(そして必要です)。



 mkdir /opt/vpn mkdir /opt/vpn/log cp -rf /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /opt/vpn/rsa #      .    ,  .
      
      







次に、新しいCAと必要な証明書を生成します。

 cd /opt/vpn/rsa . ./vars ./clean-all ./build-ca #   .   . ./build-key-server server #   .   .       ./build-key --batch client # .     . ./build-dh
      
      







/ opt / vpn / rsa / keysフォルダーを調べます。 現在、いくつかのキーと証明書のペアがあります。



ca. {crt、key}-認証局

server。{crt、key}-サーバーキー

client。{crt、key}-クライアントキー。



クライアントはca.crt、client.crtおよびclient.keyのみを与える必要があり、残りのファイルはサーバー上にのみ残る必要があります。



サーバーの構成ファイルを作成します。 /etc/openvpn/00-standard.conf



入れて/etc/openvpn/00-standard.conf







 port 1201 proto udp dev tun ca /opt/vpn/rsa/keys/ca.crt cert /opt/vpn/rsa/keys/server.crt key /opt/vpn/rsa/keys/server.key dh /opt/vpn/rsa/keys/dh1024.pem # Server Routing # server-bridge 10.8.1.1 255.255.255.0 10.8.1.50 10.8.1.100 server 10.8.1.0 255.255.255.0 #Client configuration push "redirect-gateway def1" push "dhcp-option DNS 8.8.8.8" keepalive 10 120 comp-lzo persist-key persist-tun log /opt/vpn/log/server-standard.log status /opt/vpn/log/status-standard.log verb 3
      
      







openVPNを実行してみてください

 /etc/init.d/openvpn restart
      
      





これがうまくいかない場合は、バグがあります: bugs.debian.org/cgi-bin/bugreport.cgi? bug =767836#43指示に従って修正し、サーバーを正常に起動します。



OK、VPNは機能しています。 それに接続する時間です。 これを行うために、クライアントで設定ファイルを作成します。



 client dev tun proto udp #      IP   remote 1.2.3.4 1201 resolv-retry infinite nobind persist-key persist-tun comp-lzo verb 3 up /etc/openvpn/update-resolv-conf down /etc/openvpn/update-resolv-conf <ca> [   ca.crt] </ca> <cert> [   client.crt] </cert> <key> [   client.key] </key>
      
      







接続してみてください

 sudo openvpn --config client.conf --script-security 2
      
      







「Initialization Sequence Completed」という碑文が表示されたら、接続され、10.8.1.1に正常にpingする必要があります。 インターネットはなくなるでしょう、それでいいのです。



インターネット設定



TORを使用したくないが、ロシアの外部IPが必要ないだけだとします。 この場合、次のスクリプトを使用します。



 #!/bin/bash SUBNET=10.8.1.0/24 echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -s $SUBNET -o eth0 -j MASQUERADE
      
      







あなたが望むものを達成します。 これを/etc/rc.localで書き換えます。



TOR設定



前のパートを読んで完了したら、iptablesを削除することを忘れないでください

 iptables -F iptables -t nat -F
      
      







ここで、まだTORを介したVPNが必要だとしましょう(前のポイントを完了していません)。 次に:



/ etc / tor / torrcの最後に次を追加します。



 VirtualAddrNetworkIPv4 10.192.0.0/10 AutomapHostsOnResolve 1 TransPort 9040 TransListenAddress 10.8.1.1 DNSPort 53 DNSListenAddress 10.8.1.1 AccountingStart day 0:00 AccountingMax 10 GBytes RelayBandwidthRate 100 KBytes RelayBandwidthBurst 500 KBytes
      
      







サーバー設定ファイル/etc/openvpn/00-standard.confも変更します。 DNSをGoogleからローカルに変更します。 openvpnを再起動することを忘れないでください。

 push "dhcp-option DNS 10.8.1.1"
      
      







最後に、bashの次の構成は、torを介してすべての着信VPNトラフィックをリダイレクトします



 #!/bin/sh _trans_port="9040" _int_if="tun0" iptables -t nat -A PREROUTING -i $_int_if -p udp --dport 53 -j REDIRECT --to-ports 53 iptables -t nat -A PREROUTING -i $_int_if -p tcp --syn -j REDIRECT --to-ports $_trans_port /etc/init.d/tor restart
      
      







ところで、このデザインを覚えておいてください。 これは、特定のネットワークカードからのすべてのトラフィックを透過プロキシを介してリダイレクトする普遍的な方法です。 同様にI2Pを追加します。



できた VPNに接続します。 TOR IPアドレスがあることを確認してください。 確認するには、いくつかの.onionサイトをチェックしてください:dnsも動作します。



I2Pを構成する



I2Pの複雑さ。 独自のDNSサーバーがないため、独自に作成する必要があります。



/etc/unbound/unbound.confを開き、最後に追加します。

  interface: 10.8.1.1 logfile: "/etc/unbound/unbound.log" local-zone: "i2p" redirect local-data: "i2p A 10.191.0.1" access-control: 127.0.0.0/8 allow access-control: 10.0.0.0/8 allow local-zone: "." redirect local-data: ". A 10.191.0.1" local-zone: "*" redirect local-data: "* A 10.191.0.1"
      
      





その後、任意の(!)ドメインが意図的に存在しないIPアドレス10.191.0.1に開かれます。 そのようなトラフィックを「キャッチ」し、localhost:8118にリダイレクトします-これはI2Pがリッスンする場所です。



ところで、彼はまだ聞いていません。 走る

 dpkg-reconfigure i2p
      
      





起動時に起動するフラグを設定します。



停止します。 非バインドで実行します。

 /etc/init.d/tor stop /etc/init.d/unbound restart
      
      







ここで、I2Pの束でprivoxyを構成します。 最後に/ etc / privoxy / configを追加します

 accept-intercepted-requests 1 forward / 127.0.0.1:4444 listen-address 10.8.1.1:8118
      
      





privoxyを再起動します



TORの場合と同じように、VPNサーバー構成でDNSをローカルに変更します。



 push "dhcp-option DNS 10.8.1.1"
      
      







TORをすでにリダイレクトしようとしている場合-iptablesをクリーンアップすることを忘れないでください:

 iptables -F iptables -t nat -F
      
      







リダイレクトするままです:

 #!/bin/sh _trans_port="8118" _int_if="tun0" iptables -t nat -A PREROUTING -i $_int_if -p udp --dport 53 -j REDIRECT --to-ports 53 iptables -t nat -A PREROUTING -i $_int_if -p tcp --syn -j REDIRECT --to-ports $_trans_port
      
      







おなじみですよね? 唯一の違いはプロキシポート番号です。



VPNに接続します。 I2Pにいます。 epsilon.i2pを開き、ネットワークが機能していることを確認します。



次は?





次に、それらが競合しないことを確認する必要があります。 1台のサーバー/ etc / openvpn / 00-standardの代わりに、通常のトラフィックには00-standard、torには01-tor、i2pには02-i2pの3つを実行します。 それらに異なるサブネットを割り当てます(たとえば、10.8.2。* torと10.8.3。* i2pの場合)。 その後、torとunboundは競合を停止し、同時に動作する3つのネットワークのいずれかに接続できるようになります。



また、クライアントはサーバー証明書を検証しません。 これは修正できます。



また、仮想マシンをギャッシングして、tun0を展開し、そのトラフィックがTORを通過すると、仮想マシンはVPNについても認識しなくなります。 そして、この仮想マシンのホストで、VPNがなければ接続しないようにルーティングを登録します。



それでも、I2Pに速度制限を設定する必要があります。 また、VPNログは回転しません。 そして、ウェブ銃口はありません。



そして...そして、私は他の記事でこれらすべてを確実に説明します。 その後、ご清聴ありがとうございました!



使用したソース



trac.torproject.org/projects/tor/wiki/doc/TransparentProxy

grepular.com/Transparent_Access_to_Tor_Hidden_​​Services



All Articles