UDP穴あけ
多くは、 Hamachi 、 Skype、 TeamViewerなどのサービスに出会ったり仕事をしたりしています。 彼らの仕事は、UDPパケットを使用したホールパンチングアルゴリズムに正確に基づいています。
UDPホールパンチの原理は非常に簡単です。ここでは、たとえば、Hamachiの仕組みを説明します。

PC AとノートブックBは2つのコンピューターであり、それぞれプライベートネットワークの背後にあります。HamachiサービスはパブリックIPアドレスでアクセスできるサーバーです。
- AとBはHamachiサーバーへのUDP接続を確立し、ルーターは各接続に外部ポートを割り当て、同時に「トンネル」(穴)がルーターに作成されます
- Hamachiサーバーは、AおよびBのパブリックIPアドレスと互いのポートを報告します
- AとBは、サーバーから受信した情報を使用して、相互に接続を確立します
この手法は、TCPパケットとは異なり、UDPパケットにはIPアドレスとポートのみが含まれているという事実に基づいています。
N2N
N2Nは、セキュリティで保護された接続でファイアウォール/ NATを通過できる仮想プライベートネットワーク( VPN )です。 N2Nアーキテクチャは、2つのコンポーネントに基づいています。
- エッジノード:ユーザーのコンピューターにインストールされたアプリケーションで、仮想プライベートネットワークを構築できます。 各ノードは、ネットワークの作成に使用される仮想ネットワークカードを作成します。
- スーパーノード:リモートノード間の接続を確立するために使用され、直接通信できないノード間のパケットルーターとしても使用されるパブリックIPアドレスを持つサーバー。

リモートノードは、仮想ネットワークインターフェイス(タップインターフェイス)を介して相互に通信します。 各コンピューターは、多くの仮想ネットワーク(仮想プライベートネットワークごとに1つの仮想ネットワークインターフェイス)に属することができます。

N2Nをインストールして使用する
- n2nをダウンロードします。
svn co svn.ntop.org/svn/ntop/trunk/n2n
- 収集:
make
- パブリックIPまたはNATの背後にあるが、ポート転送を構成できるコンピューターでスーパーホストを起動します。
supernode$ supernode -l xyw
ここで、xywは、スーパーユーザーが接続を待機しているポートです - NATの異なるコンピューターで2つのノードを実行します。
node-1$ edge -a 10.1.2.1 -c mynetwork -k encryptme -l abcd:xyw
node-2$ edge -a 10.1.2.2 -c mynetwork -k encryptme -l abcd:xyw
mynetworkはVPNの名前、 encryptmeはVPNにアクセスするためのパスワード、 abcd:xywはスーパーノードのパブリックIPアドレスとポートです - VPNの仕組みを確認します。
node-1$ ping 10.1.2.2
および
node-2$ ping 10.1.2.2
ささいなこと
OS Xの場合、タップデバイスをインストールする必要があります。これはTUNTAPをインストールしました 。
Windows用のn2nのビルドも非常に簡単です。プロジェクトファイルはソースコードにありますが、1)プロジェクト内のパスが正しくないため、ファイルをサブディレクトリにコピーする必要があります。
char *version = "2.03";
char *osName = "Windows";
char *buildDate = "today";