Fan Zhen Coder & Teacher

ZeroTier 分布式的虚拟以太网

2014-07-14

G+上有人介绍了一个开源项目ZeroTier,可以在internet中,采用p2p技术,构建一个私密的以太网。现在只支持 windows,linux和Mac。

所有通信,采用256位 Elliptic Curve 公开密钥加密算法,还是比较安全的,相当于3072位RSA

新版现在支持与物理局域网桥接(还只支持linux)。

可以使用一些只支持局域网的软件,比如:itune分享,飞鸽传书等等。

可以通过安装这个软件,实现一个个人的私有以太网。由于它重现了Flat的以太网结构,意味着在它之上,可以应用任何协议。

了解了这些以后,想出了一种使用ZeroTier简单翻蔷思路:一台蔷外的机器,其他机器把它设置为出口路由。

实验了一下,用自己的mac book pro 和 蔷外的 Amazon EC2 Tokyo 的一台free VPS,安装和配置很简单,就不细述了。需要注意的是,要在VPS上添加防火墙规则,允许 udp 9993,并添加端口回流(zt0)

	$cat /etc/rc.local
	iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
	iptables -t nat -A POSTROUTING -o zt0 -j MASQUERADE

实验成功,Amazon EC2那台VPS,通过ZeroTier的管理界面把它的ip地址设为 172.16.0.1,如图:

ZeroTierAdmin

然后在自己mac上,添加静态路由到 dropbox.com(ip: 108.160.166.62): sudo route add 108.160.166.0/24 172.16.0.1

	$traceroute dropbox.com
	traceroute to dropbox.com (108.160.166.62), 64 hops max, 52 byte packets
	1  172.16.0.1 (172.16.0.1)  187.146 ms  95.414 ms  92.483 ms
	2  ec2-175-41-192-206.ap-northeast-1.compute.amazonaws.com (175.41.192.206)  161.493 ms  158.894 ms
	......

进一步改进,把dns也通过这个路由,就可以避免dns劫持,比较好的方法是用dnsmasq,国内用 114.114.114.114 来解析,国外用 opendns 或 google dns。

最后使用了一个路由脚本,vpnup.sh(从autoddvpn 中的 gracemode 修改而成)

	#!/bin/sh

	export PATH="/bin:/sbin:/usr/sbin:/usr/bin"
	VPNGW=172.16.0.1
	# Google DNS and OpenDNS
	route add -host 8.8.8.8 $VPNGW
	route add -host 8.8.4.4 $VPNGW
	route add -host 208.67.222.222 $VPNGW
	# www.dropbox.com
	route add -net 108.160.0.0/16 $VPNGW
	# dl-web.dropbox.com
	route add -net 107.20.132.0/24 $VPNGW
	# for Google
	route add -net 72.14.192.0/18 $VPNGW
	route add -net 74.125.0.0/16 $VPNGW
	......

总结一下, 缺点是:

  • 必须有一台机器在蔷外(用VPS解决,也可以使用海外朋友的机器)
  • 私有网络有限制:10个机器。
  • 使用 UDP 9993 端口(在EC2上要把防火墙打开),很容易被封。不过它提供了一个备用:TCP connections on port 443

优点:

  • 安全
  • 速度与VPN差不多,这点就比tor好多了。
  • 支持 ipv6, NAT

期待: 支持其它操作系统,支持群晖NAS,支持第三方路由固件。


Comments