IPOP-IP over P2P





IPOPの例を使用して、IP over P2Pネットワークを使用する可能性を共有し、議論したいと思います。



簡単に:



IPOP(IP-over-P2P)は、ソフトウェアでサポートされる仮想ネットワークであり、多くのプロバイダーおよび管理ドメインの上に仮想プライベートネットワークを作成するための基盤として使用できます。 IPOPは、仮想ネットワークインターフェイス(v-NIC)を介して送信されるカプセル化されたIPパケットをトンネリングおよびルーティングするためのピアツーピアネットワークとして構築されます。 IPOPネットワークは、仮想ネットワークに接続するエンドポイントのピアツーピアルーターで構成されます(たとえば、異なるプロバイダーのネットワーク上にある仮想マシン間)。







この短いガイドは、さまざまな商用およびプライベートネットワークにある仮想マシン間でIP-over-P2P仮想ネットワークを、あたかもアクセス可能なネットワーク環境にあるかのように展開するのに役立ちます。



最初のステップは、IPOP仮想ネットワークで接続される少なくとも2つの仮想マシンを展開することです。 IPOPは仮想マシン内で上昇します-主な条件は、インターネット接続の可用性です。 どんなに、白いIPアドレスでもNATの背後でも。 たとえば、コンピューターで1つの仮想マシンを実行し、クラウドに別の仮想マシンをインストールできます。



現在、Debian / Ubuntu用のIPOPパッケージが存在するため、これらのディストリビューションにマシンをデプロイする必要があります(翻訳者のメモ:さまざまなクラウドサービスと仮想マシンにディストリビューションをインストールする方法は省略します。 »DigitalCloudの車-それは重要ではありません)。



ステップ2-2つの仮想マシン間の接続を確立します。

インターネットに接続された2つの仮想マシンがあります。 この段階で、それらの間にIPOPネットワークをインストールして構成します。



はじめに、構成を簡素化するために、定義済みの値を持つ構成ファイルを使用します。 次に、仮想マシンをAliceとBobと呼びます。 AliceマシンにはIPOPネットワーク上の192.168.10.10のIPアドレスがあり、Bobマシンには192.168.10.20があります。



ルートとしてAliceマシンにアクセスします。



wget http://www.acis.ufl.edu/~renato/ipopdemo/ipop_demo_prepare_debian.zip apt-get install unzip unzip ipop_demo_prepare_debian.zip
      
      







仮想ネットワークポイントを構成します。 これを行うには、次のデータが必要です。P2Pスペースの仮想ネットワークを指す一意の文字列と仮想IPアドレス。 以下は、これらの設定を構成するのに役立つスクリプトです。 CHANGE_THISを、仮想ネットワークを一意に指す行に置き換えます。 たとえば、これはipop_tutorial_05_21_2013_your_nameです。 2番目のパラメーターは、仮想IPアドレスの最後のバイトです。 アリスの場合は「10」になります。 したがって、最後のアドレスは192.168.10.10になります。



自動調整スクリプトを実行します。



 ./ipop_demo_prepare.sh CHANGE_THIS 10
      
      







スクリプトの終了後、「tapipop」仮想インターフェイスがIPアドレス192.168.10.10で表示されていることがわかります(注:仮想サブネット192.168.10.0/255.255.255.0は、ネットワークが接続されているネットワークのアドレススペースと競合しないことを意味しますそうでない場合は、ipop_demo_prepare.shで仮想ネットワークの値を修正できます。



ネットワークインターフェイスを確認します。



 ifconfig tapipop
      
      







次のようなものが表示されます。



 tapipop Link encap:Ethernet HWaddr 96:44:a8:53:67:2a inet addr:192.168.10.10 Bcast:192.168.255.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1200 Metric:1 RX packets:525 errors:0 dropped:0 overruns:0 frame:0 TX packets:277 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:500 RX bytes:56314 (56.3 KB) TX bytes:32314 (32.3 KB)
      
      







次に、Bobマシンを構成します。 (rootとして)すべて同じ操作を繰り返す必要があります。



 wget http://www.acis.ufl.edu/~renato/ipopdemo/ipop_demo_prepare_debian.zip apt-get install unzip unzip ipop_demo_prepare_debian.zip
      
      







仮想ネットワークに入るには、設定時にAliceマシンと同じ一意の行を指定する必要があります。この場合、 CHANGE_THISipop_tutorial_05_21_2013_your_nameに置き換えます



 ./ipop_demo_prepare.sh CHANGE_THIS 20
      
      







IPアドレスが192.168.10.20のtapipopインターフェイスがあることを確認します。



Pingユーティリティを使用して、仮想ネットワーク経由でアリスとボブのマシン間の接続を確認します。 ICMPパケットが無料であることを確認した後、ネットワークを介したTCP / IPトラフィックを許可できます。



アリス車からボブ車にpingを実行します。



 ping 192.168.10.20
      
      







(またはその逆、ボブマシンからアリスへ:ping 192.168.10.10)



通常の場合、マシンがNATの背後にないと仮定すると、最初のICMPパケットがドロップされ、その後約1000ミリ秒のいくつかの遅延が発生し、その後、通常の遅延が発生します。 次の例は、マシンが同じデータセンターにあるかのように結論を示しています。 遅延は、ネットワークの状態、NATまたはファイアウォールの存在に応じて多少なります。



 PING 192.168.10.20 (192.168.10.20) 56(84) bytes of data. From 192.168.10.10 icmp_seq=1 Destination Host Unreachable From 192.168.10.10 icmp_seq=2 Destination Host Unreachable From 192.168.10.10 icmp_seq=3 Destination Host Unreachable From 192.168.10.10 icmp_seq=4 Destination Host Unreachable From 192.168.10.10 icmp_seq=5 Destination Host Unreachable 64 bytes from 192.168.10.20: icmp_req=6 ttl=64 time=1008 ms 64 bytes from 192.168.10.20: icmp_req=7 ttl=64 time=8.46 ms 64 bytes from 192.168.10.20: icmp_req=8 ttl=64 time=1.87 ms 64 bytes from 192.168.10.20: icmp_req=9 ttl=64 time=1.87 ms 64 bytes from 192.168.10.20: icmp_req=10 ttl=64 time=1.64 ms
      
      







この例ではどうなりますか? 仮想マシンは、世界中のノードと大規模なピアツーピアネットワークで接続されています。 PlanetLabシステムを使用してIPOPネットワークをホストします。



アリスとボブは、連絡を取る前に、ピアツーピアネットワークで互いの識別子を発見する必要があります。 最初の数秒、アリスとボブはP2Pネットワークの一部ですが、以前に接続したことがないため、IPOPスペースに名前をマッピングする必要があります。一意の識別子を持つポイントのIPアドレスです。 検索は、ピアツーピアネットワークへのDHT要求を使用して行われます。 要求が完了するまで、パケットはドロップされます(上記の例ではパケット1〜5)。



IP-P2P準拠が見つかると、パケットはアリスとボブの間を歩き始めます。 それでも、ピアツーピアネットワークにパスを設定するには、もう少し時間が必要です。 プロセスは、アリスとボブがいくつかのP2Pポイントを介して互いに直接パスを同時に確立しようとしたときに発生します。 成功するとすぐに、遅延が大幅に削減されます(パケット7〜10)。



アリスとボブの間のセキュリティ通信。



このステップでは、IPOP仮想ネットワークを介して接続された2つの仮想マシンがあります。 しかし、現時点では、それらの間の接続は保護されていません。 次に、IP層のセキュリティのためにIPsecを構成します。



IPsecの設定には多くのオプションがありますが、IPsecはIPOPの上で動作することに注意することが重要です。このオーバーレイにより、IPsecソフトウェア(Linuxカーネル内)もIPOPも変更する必要がありません。



このステップでは、事前構成された構成ファイルを使用して、作業を最小限にします。 Racoonを使用して、IPsecとX.509証明書に基づく構成を上げます。



この例では、アリスとボブは単一の認証局(CA)によって署名された証明書を使用します。 Aliceマシンで次のコマンドを実行します。



 wget http://www.acis.ufl.edu/~renato/ipopdemo/ipop_ipsec_demo_prepare_debian.zip unzip ipop_ipsec_demo_prepare_debian.zip ./ipop_ipsec_demo_prepare.sh
      
      







スクリプトは次のことを行います。



1. / etc / racoon / certsフォルダーにCA証明書(cacert.pem)、証明書(host-cert.pem)、および各ポイントの秘密鍵(host-key.pem)を作成します。

2.構成ファイル/etc/racoon/racoon.confを作成します-x.509証明書が使用されることを説明し、他のセキュリティ設定を構成します。

3.ファイル/etc/ipsec-tools.confを作成します-IPOP仮想ネットワーク内のすべての通信をIPsecで保護する必要があることを示します。



同じ手順をBobマシンで繰り返す必要があります。



その後、アリスマシンからボブマシンへのpingを開始します。



 ping 192.168.10.20
      
      







前のステップと同じ動作が見られます-最初のパケットがドロップされ、その後接続が確立されます。 アリスとボブもお互いにpingを実行できます。 唯一の違いは、それらの間の接続が認証および暗号化されることです。 現在、AliceマシンがIPsecの使用を停止するか、誤って署名された証明書を使用する場合、AliceマシンはBobマシンに接続できません(またはその逆)。



IPsecは、tcpdumpを使用してテストできます。IPsecを両方のマシンで有効にし、それなしで有効にします。



通信の問題が見つかった場合は、プロセスを再起動できます。



 /etc/init.d/groupvpn.sh stop /etc/init.d/groupvpn.sh start
      
      







またはIPsecを停止します。



 setkey -F setkey -FP /etc/init.d/racoon stop
      
      







出典: Futuregrid IPOP開発チームからも連絡があります。

公式IPOPプロジェクトページ



IPOPは、他のサービスに関係するアクティブなオープンソースプロジェクトです。



このような興味深いプロジェクトの将来、その長所と短所について話したいと思います。



私の意見では、完全な「すぐに使える」暗号化とより大きな分権化の欠如があります。 たとえば、ビットコインネットワークのように。 公式ページには、暗号化を提供するIPOPをベースとして使用するプロジェクトの兆候があります。



IPOPは、他のサービスの基盤であり、機能が類似したシステムのプロトタイプと考えることができます。



All Articles