一、zerotier是什么

  • 利用zerotier替换frp来实现内网穿透,将需要连接的机器之间组建虚拟局域网,使用zerotier做软交换机,因此可以实现多台机器之间的连接、即使这台机器在内网中。
  • zerotier 网址、下载地址:https://www.zerotier.com/
  • zerotier 网站(zerotier central)上建立一个虚拟环境,内有一个虚拟交换机,然后再在需要连接的机器上安装适合自己版本(linux\win\mac)的zerotier并加入该网络即可组建局域网(具体步骤见下一节)。

二、搭建步骤

zerotier 网站(zerotier central)上建立一个虚拟环境,内有一个虚拟交换机,然后再在需要连接的机器上安装适合自己版本(linux\win\mac)的zerotier并加入该网络即可组建局域网。

2.1 注册zerotier并建立虚拟网关

访问zerotier官网并按照提示注册一个账号,这个账号用于登录自己的zerotier central。
然后按照提示建立一个虚拟网络,并选择一个IP:

选择一个好记的子网:

下图是我建好的网络:
8881234567890
假设网络号为88812345678990(这个ID后面都需要用到)

2.2 在目标机器上下载安装zerotier

假设一台机器是windows、一台是Linux

2.2.1在windows上安装zerotier

在上面官网上下载对应版本并安装即可,然后打开点击 join network 并输入网络号ID 88812345678990,点击加入,然后等待一分钟左右,再打开zerotier central网站上就可看到windows机器的配置。并可以自己设置这台机器的management IP地址,以便访问。当然这台机器的的网关192.168.0.1(如上面选择的子网掩码是192.168.0.0)

2.2.2 在Linux上在线安装并设置为自启动

  • 首先,在线安装zerotier
 #(如果是ArchLinux)
$ sudo pacman -S zerotier-one   
 #(如果是Ubuntu/Debian/CentOS,则运行:)
$ curl -s https://install.zerotier.com/ | sudo bash 
  • 然后 join network:
# 运行 sudo zerotier-cli join networkID,例如:
$ sudo zerotier-cli join 9991234567890

会看到 200,join Ok这种类似的提示

  • 最后设置自启动
$ sudo systemctl start zerotier-one.service
$ sudo systemctl enable zerotier-one.service
  • 如果有另外的机器已经安装zerotier,则可以直接加入该局域网,一台机器也可以加入多个zerotier networkID局域网,甚至也可以将虚拟机加入这个局域网。

  • 此时也会在zerocentral看到刚才加入的linux机器。

三、 遇到问题的小trick

  • 如果加入到同一个局域网中,设置好ip后,都显示Online的情况下,如果不可以相互ping通,应该要检查一下防火墙是否开启,需要关闭防火墙。
  • 可以设置流量转发,我当时需要用A机器访问内网C机器,但是不知为何内网C机器加入虚拟局域网后Ping不通,因此在其他内网机器上安装了一个虚拟机B,由于都在内网下,B可以直接访问C。然后我将B加入虚拟局域网,并测试可以Ping通,然后尝试用ssh 将A机器连接B机器,在ssh中控制B机器从而ssh连接C机器,
    然后设置了流量转发,本来是需要访问的C机器的1111的端口,现在设置为访问B机器的1111端口,然后B将该请求转发到C机器上,且该转发通道一直不关闭。命令如下:
#在B机器上执行
ssh -g  -L  B的端口号:C的IP:C的端口号  C的用户名@C的IP地址

四、 refs:

https://zhuanlan.zhihu.com/p/82159013