如何搭建公共 easytier 服务器

easytier 是一款 P2P 组网工具,它既可以当客户端又可以当服务端。两个 easytier 节点互联就组成了一个P2P虚拟局域网。
默认我们会使用公共的 easytier 共享节点进行互联,比如:
tcp://public.easytier.cn:11010
使用 easytier-core 工具连接共享节点:
easytier-core.exe -d -p tcp://public.easytier.cn:11010
这时你就和许多匿名用户组网了,通过 easytier-cli 可以查看到其他客户端:
一般我们需要指定网络名和密钥,这样就不会和其他用户使用默认的 "default" 网络,指定网络名和密码的例子:
easytier-core.exe -d \
--network-name my_net \
--network-secret my_password \
-p tcp://public.easytier.cn:11010

此时就不会和其他匿名用户组网组到一起,通过 easytier-cli 也可以查看当前组网状态。

默认使用 easytier-cli peer 命令就可以查看组网状态,当连接了多个虚拟局域网时就需要使用 -p 命令区别不同网络。
比如我这里使用 easytier 连接了三个不同的虚拟网络:
在网卡中也能看到多个虚拟网卡:

在查看组网客户端时需要使用 -p 127.0.0.1:15888 查看指定的实例,默认网络使用的是 15888 端口,如果连接了多个网络,端口号递增比如 15889、15890
以上是使用公共 easytier 节点的情况。如果自己有云服务器,如何搭建类似共享节点的 easytier 服务器?
首先共享服务器不能暴露给连接的客户端,也就是 easytier 服务端不和客户端组成P2P网络。这是共享服务器和普通的easytier服务器的区别,不然服务器的本地端口就全沦陷了。
错误示例:
./easytier-core -i 192.168.199.1 -l tcp:65410
这时建立的是一个对等节点的服务端,服务器本身作为一个节点。如果是私人使用没有问题,顺便还能用来管理服务器。但如果只是作为一个 easytier 共享服务端,不将服务器本地端口暴露出来,实现类似 public.easytier.cn 这种节点的效果。
客户端连接上来之后,看不到服务器节点,只有一个客户端一个节点:
此时服务端的 IP 不显示出来,如果是对等节点,连接上后可以看到服务端 IP :

搭建不暴露自身等 easytier 服务器的命令如下:
./easytier-core \
--relay-network-whitelist \
--relay-all-peer-rpc \
-l 65000 \
--hostname easytier-server
其中命令行参数说明:
--relay-network-whitelist [<RELAY_NETWORK_WHITELIST>...]
仅转发白名单网络的流量,支持通配符字符串。多个网络名称间可以使用英文空格间隔。
如果本地网络(使用 network_name 分配)不在白名单中,如果没有其他路由路径可用,流量仍然可以转发。
如果该参数为空,则禁用转发。默认允许所有网络。
例如:'*'(所有网络),'def*'(以def为前缀的网络),'net1 net2'(只允许net1和net2)"
[env: ET_RELAY_NETWORK_WHITELIST=]
--relay-all-peer-rpc [<RELAY_ALL_PEER_RPC>]
转发所有对等节点的RPC数据包,即使对等节点不在转发网络白名单中。这可以帮助白名单外网络中的对等节点建立P2P连接。 [env: ET_RELAY_ALL_PEER_RPC=] [possible values: true, false]
总结
连接多个 easytier 网络时,需要使用 easytier-cli -p 127.0.0.1:1388x 查看不同虚拟网络的组网情况。
搭建 easytier 服务端有两种模式,一种使用P2P模式,服务器自身作为一个节点加入对等网络参与组网。另一种共享模式,服务器不加入任何节点,自身只作为服务端提供带宽服务,服务端的本地管理端口(ssh 等)不暴露给任意客户端。
本文内容仅供参考,不构成任何专业建议。使用本文提供的信息时,请自行判断并承担相应风险。



