2013年05月01日
n2n - hamachiライクな Layer-2, P2P VPN ユーティリティでVPNを構築する
n2n は ntop ユーティリティで有名なで有名な ntopチーム が開発しており、レイヤー2で動作するPear-to-Pear型の無料VPNソフトウェアです。n2n の構成・方式は LogMeIn社の提供するHamachiに似ておりインターネット上の仲介・ルーティング・サーバーを経由する事でファイヤーウォール内の端末と仮想ネットワークを作成してくれます。

古いバージョンのLinux OSを利用しており旧来のHamachiが動かない、最新版がビルド出来なくて困っている何て方にもお勧めです。

古いバージョンのLinux OSを利用しており旧来のHamachiが動かない、最新版がビルド出来なくて困っている何て方にもお勧めです。
n2n によるLayer 2, P2P VPNの構成・概要
n2nではインターネット上でグローバルIPを持ち、クライアント同士のトラフィックを仲介/ルーティングを行うSuper Nodeと呼ばれるサーバーとこのVPNを利用して通信を行うEdge Nodeと呼ばれるクライアントで構成されます。

Edge NodeではTUN/TAPと呼ばれる仮想ネットワーク・ドライバを利用することで、まるでローカル・ネットワークのようにピアと通信することが出来ます。 尚、n2nではTUNを使ってL2(ネットワーク層)レベルでネットワークの仮想化を行なっており、殆どの通信データをVPN上でやり取りすることが出来ます。

ファイヤーウォールの内側にいるにも関わらずクライアント同士で直接通信出来る(ように見える・感じる)のは、仮想化されたネットワークの実体部分は常にSuper Nodeを経由してトラフィックをやり取りしているからなんですね。
また、n2nは非常にシンプルで、比較的古いバージョンの Linux OS(Red Hat Linux 4.x以前)でも動作するのも特徴です。
もちろん、Linux版だけでなく、Windows、Mac OS版バイナリもありますよ。
n2n
まずは、Linuxへのインストール方法から。
Windowsの場合は、もう少し複雑です。 まずTUN/TAPドライバからインストールする必要があるのですが、最も簡単なのはOpenVPNをインストールする方法。
Downloads

Index of /n2nWin32

インストール手順は割愛しますがMac OS版もありますよ。
まずは、トラフィックの仲介・ルーティングを行うSuper Nodeを起動しましょう。
さあ、もう一つのピア側でもedgeを起動しましょう。
2つのEdge node(10.1.2.1, 10.1.2.2)が仮想ネットワークに参加しました。 pingで疎通を確認してみると・・・。
以前に紹介した iodine は古いLinux OSでは動かなかったので嬉しいなあ。
VPN over DNS - DNSプロトコルを利用するiodineでファイヤーウォール越しにVPN環境を構築する
それでは、より良いL2 VPNライフを!
n2n のインストール - Linux, Windows
まずは、Linuxへのインストール方法から。
次のようにsvnコマンドを使ってn2nファイルプロジェクト一式をダウンロードします。
この中を見ると n2n_v1, n2n_v2 という2つのバージョンがあります。
$ svn co https://svn.ntop.org/svn/ntop/trunk/n2n
この中を見ると n2n_v1, n2n_v2 という2つのバージョンがあります。
$ cd n2n/
n2n $ ls
n2n_v1 n2n_v2
v1とv2の大きな違いは通信の暗号化。暗号化をサポートしているのはバージョン2なんですが、Windows版バイナリはバージョン1しかサポートしておらず、各Edge Node, Super Node間ではバージョンを合わせる必要があるのでどちらを使うかよく考えて決めましょう。
今回はバージョン2を使って make, make install します。
n2n $ cd n2n_v2
n2n/n2n_v2 $ make
n2n/n2n_v2 $ sudo make install
echo "MANDIR=/usr/share/man"
MANDIR=/usr/share/man
mkdir -p /usr/sbin /usr/share/man/man1 /usr/share/man/man7 /usr/share/man/man8
install -m755 supernode /usr/sbin/
install -m755 edge /usr/sbin/
install -m644 edge.8.gz /usr/share/man/man8/
install -m644 supernode.1.gz /usr/share/man/man1/
install -m644 n2n_v2.7.gz /usr/share/man/man7/
これでおしまい。 edge, supernodeコマンドが使えるようになっているはずです。
(n2n を利用する全てのホストにインストールしましょう)
$ edge -h
Welcome to n2n v.2.1.0 for x86_64
$ supernode -h
supernode usage
-l <lport> Set UDP main listen port to <lport>
-f Run in foreground.
-v Increase verbosity. Can be used multiple times.
-h This help message.
Windowsの場合は、もう少し複雑です。 まずTUN/TAPドライバからインストールする必要があるのですが、最も簡単なのはOpenVPNをインストールする方法。
こちらのページにあるWindows版バイナリをダウンロード・実行します。
インストール時に TAP Virtual Ethernet Adapter だけ選択しておけばOK。

続いて、こちらから n2nWin32 本体のバイナリをダウンロード。
n2nWin32 のインストールが終わればWindowsでの準備もおしまい。

インストール手順は割愛しますがMac OS版もありますよ。
n2n によるVPNの作成・接続
まずは、トラフィックの仲介・ルーティングを行うSuper Nodeを起動しましょう。
$ sudo supernode -l 9898
-lオプションでポート番号(9898)を指定しています。 これでバック・グラウンドでSuper Nodeが起動します(フォア・グラウンド出来道する場合は-fオプション)。
Super Nodeは全てのクライアント(Edge Node)から接続可能、つまりグローバルIPアドレスを持つサーバーである事に注意して下さい。
続いて、edgeコマンドを使ってクライアント(Edge Node)を起動します。 次の例ではLinux上でEdge Nodeを起動しています。
pear1 $ sudo edge -a 10.1.2.1 -c vpnroom1 -k encryptme -l x.x.x.x:9898
10.1.2.1はクライアントの利用するIPアドレス。 DHCPがあれば自動取得も出来ますがここでは手動で指定しています。 -cオプションはコミュニティ名でネットワーク名と理解すれば良いかもしれません。 -kオプションで指定する文字列はトラフィックの暗号化に利用する暗号キーです。 -lオプションではSuper NodeのIPアドレス(x.x.x.x)とポート番号を指定します。
僕はUbuntuを使っていますが、edge0というインタフェースが作成されました。
pear1 $ ifconfig
edge0 Link encap:イーサネット ハードウェアアドレス 8e:36:ed:48:ce:7a
inetアドレス:10.1.2.1 ブロードキャスト:10.1.2.255 マスク:255.255.255.0
inet6アドレス: fe80::8c36:edff:fe48:ce7a/64 範囲:リンク
UP BROADCAST RUNNING MULTICAST MTU:1400 メトリック:1
RXパケット:0 エラー:0 損失:0 オーバラン:0 フレーム:0
TXパケット:45 エラー:0 損失:0 オーバラン:0 キャリア:0
衝突(Collisions):0 TXキュー長:500
RXバイト:0 (0.0 B) TXバイト:9243 (9.2 KB)
さあ、もう一つのピア側でもedgeを起動しましょう。
pear2 $ sudo edge -a 10.1.2.2 -c vpnroom1 -k encryptme -l x.x.x.x:9898
2つのEdge node(10.1.2.1, 10.1.2.2)が仮想ネットワークに参加しました。 pingで疎通を確認してみると・・・。
pear2 $ ping 10.1.2.1
PING 10.1.2.1 (10.1.2.1) 56(84) bytes of data.
64 bytes from 10.1.2.1: icmp_seq=0 ttl=64 time=19.6 ms
64 bytes from 10.1.2.1: icmp_seq=1 ttl=64 time=19.0 ms
--- 10.1.2.1 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 19.075/19.358/19.641/0.283 ms, pipe 2
無事繋がりましたね!
これで殆ど全てのアプリケーション、プロトコルが n2n VPN 経由で通信出来ます。
Windowsの場合はコマンド・プロンプトを使って、n2nをインストールしたフォルダに移動後、edge.exeを使ってEdge Nodeを起動します。
C:\>cd C:\Program Files\n2n-Win32\bin
C:\Program Files\n2n-Win32\bin>edge.exe -a 10.1.2.3 -c vpnroom1 -k encryptme -l x.x.x.x:9898
10.1.2.3
01/May/2013 20:07:36 [edge.c:1133] Using supernode x.x.x.x:9898
Open device [name={8445B82F-C113-4211-A410-E560D833C036}][ip=10.1.2.3]
[ifName=ローカル エリア接続 4][MTU=1400][mac=:84:45:B8:2F]
Setting ローカル エリア接続 4 device address...OK
Device ローカル エリア接続 4 set to 10.1.2.3/255.255.255.0
01/May/2013 20:07:45 [ edge.c: 670] Registering with supernode
01/May/2013 20:07:45 [ edge.c:1364]
01/May/2013 20:07:45 [ edge.c:1365] Ready
以前に紹介した iodine は古いLinux OSでは動かなかったので嬉しいなあ。
それでは、より良いL2 VPNライフを!
OpenVPNで構築する超簡単VPN入門―Windows/Mac OS X/Linux対応
posted with amazlet at 13.05.01
ケイズプロダクション
ラトルズ
売り上げランキング: 146,953
ラトルズ
売り上げランキング: 146,953
1枚のフロッピーで作るLinux VPN―floppyfwによるVPN環境構築
posted with amazlet at 13.05.01
竹内 充彦
九天社
売り上げランキング: 1,106,069
九天社
売り上げランキング: 1,106,069