搭建共享节点
用户可以使用自己的公网节点自建用于无公网 IP 组网的公共共享节点,方便其他无公网 IP 的用户组网。 需要不带任何参数启动 EasyTier,该节点就可作为公共服务器使用(不需要 root 权限):
easytier-core
另外 EasyTier 支持共享节点集群。每个虚拟网络(通过相同的网络名称和密钥建链)都可以充当共享节点集群,其他网络的节点可以连接到共享节点集群中的任意节点,无需公共 IP 即可发现彼此。运行自建的公共服务器集群与运行虚拟网络完全相同,不过可以跳过配置 ipv4 地址。
如果你希望为 EasyTier 社区贡献公共服务器,可以联系管理员,我们将告知你如何将你的节点添加到社区共享节点列表中。当然这需要你的节点有一定的带宽和稳定性。
关闭转发
另外,默认情况下, EasyTier 的每个节点都允许为其他虚拟网提供转发服务,即使该节点已经指定了 网络名 (--network-name
) 和 网络密钥 (--network-secret
)、并已加入一个虚拟网。
若需改变此行为,可通过 --relay-network-whitelist
参数限定可被转发的网络名白名单(空格分割的通配符列表,如 "ab* abc"
)。当该参数的列表为空时,就不会为所有其他网络提供转发服务。
EasyTier 可以做到不转发其他虚拟网的网络包,而是只帮助他们建立 P2P 链接,只需将白名单置空,并设置仅转发 RPC 流量即可。参考命令为:
easytier-core --relay-network-whitelist --relay-all-peer-rpc
私有模式
如果你希望 EasyTier 仅在你的虚拟网络中提供服务,而不希望其他虚拟网的节点连接到你的节点,可以使用 --private-mode true
参数启动 EasyTier。
sudo easytier-core --private-mode true --network-name my-network --network-secret my-secret
这会仅允许网络名为 my-network
且密钥为 my-secret
的节点连接到该 EasyTier 节点。
配置 systemd 自启动
可以参考:安装为 Linux systemd 服务
值得注意的是,作为服务器运行时,由于 Linux 默认给用户配置的 fd 上限为 1024,可能会面临 fd 耗尽的问题。
此时应该配置 LimitNOFILE
在 serivce 文件中,如:
LimitNOFILE=1048576
配置好的 service unit 供参考:
# cat /etc/systemd/system/easytier.service
[Unit]
Description=EasyTier Service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
ExecStart=/usr/local/bin/easytier-core --hostname <your-hostname> --network-name <your-network> --network-secret <your-secret> -p tcp://public.easytier.top:11010
Restart=always
RestartSec=3
LimitNOFILE=1048576
Environment=TOKIO_CONSOLE=1
[Install]
WantedBy=multi-user.target
配置 fail2ban
如您贡献了公共服务器,可能会遇到这样的问题:大量的节点尝试连接到您的服务器,但是无法建立连接
connection error. local: udp://0.0.0.0:11010, remote: udp://***.***.***.***:14947, err: wait resp error: wait handshake timeout: Elapsed(())
此时建议配置 fail2ban
,以阻止这样的用户访问节点,可以有效的降低服务器的连接数,提高用户的访问质量。
以 Fedora 42 为例,配置方法如下:
# install fail2ban
sudo dnf install fail2ban
# enable and start
sudo systemctl enable --now fail2ban
配置日志过滤器:
# cat /etc/fail2ban/filter.d/easytier.conf
[Definition]
failregex = remote: \S+://<HOST>:\d+, err: wait resp error:.+
配置 jail:
# cat /etc/fail2ban/jail.local
[easytier]
enabled = true
filter = easytier
backend = systemd
journalmatch = '_SYSTEMD_UNIT=easytier.service'
maxretry = 3
bantime = 3600
findtime = 600
banaction = nftables-multiport
此处的策略代表:findtime=600s
内尝试 maxretry=3
次失败,则会被关进小黑屋(阻止访问)bantime=3600s
一小时。
配置好后,重载 fail2ban
sudo fail2ban-client reload
# OK
配置后,检查运行状态,可以看到已经阻止的客户端列表:
sudo fail2ban-client status easytier
Status for the jail: easytier
|- Filter
| |- Currently failed: 11
| |- Total failed: 4742
| `- Journal matches: _SYSTEMD_UNIT=easytier.service
`- Actions
|- Currently banned: 99
|- Total banned: 663
`- Banned IP list: ***
此时服务器连接数应该明显降低(可能需要等待一会儿才能看到效果):
netstat -ntp | grep easytier