22
33用户可以使用自己的公网节点自建用于无公网 IP 组网的公共共享节点,方便其他无公网 IP 的用户组网。 需要不带任何参数启动 EasyTier,该节点就可作为公共服务器使用(不需要 root 权限):
44
5- ```
5+ ``` shell
66easytier-core
77```
88
@@ -18,16 +18,126 @@ easytier-core
1818
1919EasyTier 可以做到不转发其他虚拟网的网络包,而是只帮助他们建立 P2P 链接,只需将白名单置空,并设置仅转发 RPC 流量即可。参考命令为:
2020
21- ```
21+ ``` shell
2222easytier-core --relay-network-whitelist --relay-all-peer-rpc
2323```
2424
2525## 私有模式
2626
2727如果你希望 EasyTier 仅在你的虚拟网络中提供服务,而不希望其他虚拟网的节点连接到你的节点,可以使用 ` --private-mode true ` 参数启动 EasyTier。
2828
29- ```
29+ ``` shell
3030sudo easytier-core --private-mode true --network-name my-network --network-secret my-secret
3131```
3232
33- 这会仅允许网络名为 ` my-network ` 且密钥为 ` my-secret ` 的节点连接到该 EasyTier 节点。
33+ 这会仅允许网络名为 ` my-network ` 且密钥为 ` my-secret ` 的节点连接到该 EasyTier 节点。
34+
35+ ## 配置 systemd 自启动
36+
37+ 可以参考:[ 安装为 Linux systemd 服务] ( install-as-a-systemd-service )
38+
39+ 值得注意的是,作为服务器运行时,由于 Linux 默认给用户配置的 fd 上限为 1024,可能会面临 fd 耗尽的问题。
40+
41+ 此时应该配置 ` LimitNOFILE ` 在 serivce 文件中,如:
42+
43+ ``` shell
44+ LimitNOFILE=1048576
45+ ```
46+
47+ 配置好的 service unit 供参考:
48+
49+ ``` shell
50+ # cat /etc/systemd/system/easytier.service
51+
52+ [Unit]
53+ Description=EasyTier Service
54+ After=network.target syslog.target
55+ Wants=network.target
56+
57+ [Service]
58+ Type=simple
59+ ExecStart=/usr/local/bin/easytier-core --hostname < your-hostname> --network-name < your-network> --network-secret < your-secret> -p tcp://public.easytier.top:11010
60+ Restart=always
61+ RestartSec=3
62+ LimitNOFILE=1048576
63+ Environment=TOKIO_CONSOLE=1
64+
65+ [Install]
66+ WantedBy=multi-user.target
67+ ```
68+
69+ ## 配置 fail2ban
70+
71+ 如您贡献了公共服务器,可能会遇到这样的问题:大量的节点尝试连接到您的服务器,但是无法建立连接
72+
73+ ``` plain
74+ connection error. local: udp://0.0.0.0:11010, remote: udp://***.***.***.***:14947, err: wait resp error: wait handshake timeout: Elapsed(())
75+ ```
76+
77+ 此时建议配置 ` fail2ban ` ,以阻止这样的用户访问节点,可以有效的降低服务器的连接数,提高用户的访问质量。
78+
79+ 以 Fedora 42 为例,配置方法如下:
80+
81+ ``` shell
82+ # install fail2ban
83+ sudo dnf install fail2ban
84+
85+ # enable and start
86+ sudo systemctl enable --now fail2ban
87+ ```
88+
89+ 配置日志过滤器:
90+
91+ ``` ini
92+ # cat /etc/fail2ban/filter.d/easytier.conf
93+ [Definition]
94+ failregex = remote: \S+://<HOST>:\d+, err: wait resp error:.+
95+ ```
96+
97+ 配置 jail:
98+
99+ ``` ini
100+ # cat /etc/fail2ban/jail.local
101+ [easytier]
102+ enabled = true
103+ filter = easytier
104+ backend = systemd
105+ journalmatch = ' _SYSTEMD_UNIT=easytier.service'
106+ maxretry = 3
107+ bantime = 3600
108+ findtime = 600
109+ banaction = nftables-multiport
110+ ```
111+
112+ 此处的策略代表:` findtime=600s ` 内尝试 ` maxretry=3 ` 次失败,则会被关进小黑屋(阻止访问)` bantime=3600s ` 一小时。
113+
114+ 配置好后,重载 ` fail2ban `
115+
116+ ``` shell
117+ sudo fail2ban-client reload
118+ # OK
119+ ```
120+
121+ 配置后,检查运行状态,可以看到已经阻止的客户端列表:
122+
123+ ``` shell
124+ sudo fail2ban-client status easytier
125+ ```
126+
127+ ``` plain
128+ Status for the jail: easytier
129+ |- Filter
130+ | |- Currently failed: 11
131+ | |- Total failed: 4742
132+ | `- Journal matches: _SYSTEMD_UNIT=easytier.service
133+ `- Actions
134+ |- Currently banned: 99
135+ |- Total banned: 663
136+ `- Banned IP list: ***
137+ ```
138+
139+ 此时服务器连接数应该明显降低(可能需要等待一会儿才能看到效果):
140+
141+ ``` shell
142+ netstat -ntp | grep easytier
143+ ```
0 commit comments