概要

Meshbird - distributed private networking.

異なる環境間で private network を構築できる Go 製のツール Meshbird を試してみる。

クライアント間の peer については、BitTorrent と同じような DHT(分散ハッシュテーブル) ネットワークを使用しているらしい。

Intro

Meshbird create distributed private networking between servers, containers, virtual machines and any computers in different datacenters, different countries, different cloud providers. All traffic transmit directly to recepient peer without passing any gateways. Meshbird do not require any centralized servers. Meshbird is absolutly decentralized distributed private networking.

For example, user can create private network between DigitalOcean’s droplets in each datacenter and link it together by executing one command. All traffic will be encrypted with strong AES-256.

環境

アカウント別の AWS インスタンス2台を用意

インストール

各インスタンスでインストール

$ curl http://meshbird.com/install.sh | sudo sh

/usr/local/bin/meshbird にインストールされる

network secret key 作成

どちらかのインスタンスで secret key 作成

$ sudo meshbird new
[main] 2016/02/09 02:27:50 key: 16a45a9e6fbc5db5c2f4ca7c875faa600a070000ffff0000

private network に join する

各インスタンスで以下コマンド実行

export MESHBIRD_KEY="16a45a9e6fbc5db5c2f4ca7c875faa600a070000ffff0000"
$ sudo meshbird join

各インスタンスに tun0 インターフェイスが作成される

1台目

$ ifconfig tun0
tun0      Link encap:UNSPEC  HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
          inet addr:10.7.145.222  P-t-P:10.7.145.222  Mask:255.255.0.0
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1400  Metric:1
          RX packets:68 errors:0 dropped:0 overruns:0 frame:0
          TX packets:93 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:16082 (15.7 KiB)  TX bytes:19530 (19.0 KiB)

2台目

$ ifconfig tun0
tun0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST>  mtu 1400
        inet 10.7.9.125  netmask 255.255.0.0  destination 10.7.9.125
        unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00  txqueuelen 500  (UNSPEC)
        RX packets 83  bytes 10862 (10.6 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 74  bytes 24482 (23.9 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

接続してみる

1台目→2台目に対して接続

$ ping 10.7.9.125
PING 10.7.9.125 (10.7.9.125) 56(84) bytes of data.
64 bytes from 10.7.9.125: icmp_seq=1 ttl=64 time=4.79 ms
64 bytes from 10.7.9.125: icmp_seq=2 ttl=64 time=3.74 ms
64 bytes from 10.7.9.125: icmp_seq=3 ttl=64 time=3.71 ms
64 bytes from 10.7.9.125: icmp_seq=4 ttl=64 time=3.67 ms

ssh接続も接続出来る

$ ssh ******@10.7.9.125
The authenticity of host '10.7.9.125 (10.7.9.125)' can't be established.
ECDSA key fingerprint is 3c:4f:51:d5:76:4c:03:8e:b3:d4:4d:ad:74:7a:42:b2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '10.7.9.125' (ECDSA) to the list of known hosts.

$

meshbird を停止すれば tun0 も削除される