本文最后更新于 365 天前,其中的信息可能已经有所发展或是发生改变。
ZeroTier是一个分布式网络虚拟机管理程序,建立在加密安全的全球对等网络之上。它提供与企业 SDN 交换机同等的高级网络虚拟化和管理功能,而且可以跨本地和广域网并连接几乎任何类型的应用程序或设备。
例如,我在路由器上装了 ZeroTier,路由器挂了一个硬盘,而现在我在外边想要访问这个硬盘,那么只需要运行电脑上的 ZeroTier,就能通过 Samba、FTP 等方式访问硬盘,而且看起来就像我就在家里一样。
这里仅介绍 ZeroTier 的简易用法
一、注册
注册之后
免费套餐支持100个设备
二、创建网络
创建之后保持默认就行,建议避开自己的内网网段
三、加入网络
首先安装客户端
Linux执行
curl -s https://install.zerotier.com | sudo bash
然后加入网络
# 启动
zerotier-one -d
# 加入网络
zerotier-cli join <Network ID>
成功会提示 200 join OK
然后回到管理页允许加入
然后 ip addr 就会出现一个新接口
测试内网连接
至此内网建立完成
四、其他指令
# 退出网络
zerotier-cli leave <Network ID>
# 查看网络
zerotier-cli listnetworks
卸载
yum remove zerotier-one
rm /etc/yum.repos.d/zerotier.repo
五、利用rinetd转发内网流量
由于我配置iptables跨网卡转发半天不成功,所以研究了下还是选择超级简便的rinetd
安装
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
tar zxvf rinetd.tar.gz
cd rinetd
mkdir -p /usr/man/man8
yum install gcc make
make && make install
http://www.boutell.com/rinetd/http/rinetd.tar.gz 目前是无法访问的(开发者转行放贷去了?),但可以用百度找到别人的备份哦…
配置
新建配置文件 /etc/rinetd.conf
# 设置允许访问的ip地址信息
# allow 192.168.2.*
# 设置拒绝访问的ip地址信息
# deny 192.168.1.*
# 设置日志文件路径
logfile /var/log/rinetd.log
# 例子: 将本机 8080 端口重定向至 188.131.152.100 的 8080 端口
# 0.0.0.0 8090 188.131.152.100 8080
创建启动脚本
/etc/init.d/rinetd
#!/bin/bash
EXEC=/usr/sbin/rinetd
CONF=/etc/rinetd.conf
PID_FILE=/var/run/rinetd.pid
NAME=Rinetd
DESC="Rinetd Server"
case "$1" in
start)
if [ -x "$PID_FILE" ]; then
echo "$NAME is running ..."
exit 0
fi
$EXEC -c $CONF
echo -e "\e[1;32m$NAME is running\e[0m"
;;
stop)
if [ -f "$PID_FILE" ]; then
kill `cat $PID_FILE`
while [ -x "$PID_FILE" ]
do
echo "Waiting for $NAME to shutdown..."
sleep 1
done
rm -f $PID_FILE
fi
echo -e "\e[1;31m$NAME stopped.\e[0m"
;;
restart)
$0 stop
$0 start
;;
status)
if [ -f $PID_FILE ]; then
echo "$NAME is running ..."
else
echo "$NAME stopped."
fi
;;
*)
echo $"Usage: $0 {start|stop|restart|status}"
exit 2
;;
esac
exit 0
chmod +x /etc/init.d/rinetd
启动
/etc/init.d/rinetd start
开机自启
在/etc/rc.local文件中添加/usr/sbin/rinetd即可
六、小结
ZeroTier建立的隧道速度很快,镇江-Hinet iperf3单线程实测20Mbps,ping延时60ms……非常适合特殊用途…….
本文部分参考