@@ -136,9 +136,178 @@ Error: Failed to add 'br-ext' connection: connection.autoconnect-ports: unknown
136136
137137安装完成后会生成一个 ** Token** ,用于在控制端(Admin 面板)中添加计算节点:
138138
139- 路径: ` Admin Panel > Computers > Add `
139+ 路径: ` Admin Panel > Computers > Add Computer `
140140
141- ### 给开设的虚拟机添加公网IP端口映射
141+ ` HostName ` 需要填写计算节点的公网IPV4地址
142+
143+ ` Token ` 填在计算节点上获取到的token密钥
144+
145+ ### 公网IPV4端口映射
146+
147+ ### 自动映射
148+
149+ - ** 自动监控** :实时监控虚拟机状态变化,自动应用或清理端口映射规则
150+ - ** 智能端口分配** :根据虚拟机IP地址自动计算和分配不冲突的端口
151+ - ** 规则持久化** :使用firewall-cmd确保端口映射规则在宿主机重启后依然有效
152+ - ** 映射记录** :自动维护映射信息记录文件,便于查看和管理
153+ - ** 冲突防护** :智能检测并避免端口冲突,确保每个虚拟机都有唯一的端口映射
154+
155+ #### 安装方法
156+
157+ 1 . 下载脚本到临时目录:
158+
159+ ``` bash
160+ wget -O /tmp/vm_port_mapping_setup.sh https://your-script-url.com/vm_port_mapping_daemon.sh
161+ ```
162+
163+ 2 . 添加执行权限:
164+
165+ ``` bash
166+ chmod +x /tmp/vm_port_mapping_setup.sh
167+ ```
168+
169+ 3 . 运行安装程序:
170+
171+ ``` bash
172+ /tmp/vm_port_mapping_setup.sh
173+ ```
174+
175+ 脚本会自动完成以下操作:
176+ - 将自身复制到系统目录 ` /usr/local/sbin/vm_port_mapping_daemon.sh `
177+ - 创建systemd服务单元文件
178+ - 启用并启动服务
179+
180+ #### 端口映射规则
181+
182+ 守护进程会为每个虚拟机分配以下端口:
183+
184+ 1 . ** SSH端口** :
185+ - 计算公式:` (IP最后一段) × 100 + 22 + 10000 `
186+ - 示例:对于IP地址 192.168.33.114,映射的SSH端口为 114×100+22+10000 = 21422
187+
188+ 2 . ** 额外端口** :
189+ - 每个虚拟机分配10个额外端口
190+ - 起始端口:20000 + (IP最后一段) × 100
191+ - 结束端口:起始端口 + 9
192+ - 示例:对于IP地址 192.168.33.114,额外端口范围为 20000+(114×100) 至 20000+(114×100)+9
193+
194+ 如果计算出的端口已被占用,程序会自动寻找下一个可用端口,确保不发生冲突。
195+
196+ #### 映射文件
197+
198+ 所有端口映射信息保存在 ` /etc/vm_port_mapping/mapping.txt ` 文件中,格式为:
199+
200+ ```
201+ 虚拟机名字 IP地址 MAC地址 SSH映射端口 额外端口起始 额外端口结束
202+ ```
203+
204+ 例如:
205+ ```
206+ Virtance-1 192.168.33.114 52:54:00:5f:77:92 21422 31400 31409
207+ ```
208+
209+ #### 服务管理
210+
211+ ##### 查看服务状态
212+
213+ ``` bash
214+ systemctl status vm-port-mapping
215+ ```
216+
217+ ##### 启动服务
218+
219+ ``` bash
220+ systemctl start vm-port-mapping
221+ ```
222+
223+ ##### 停止服务
224+
225+ ``` bash
226+ systemctl stop vm-port-mapping
227+ ```
228+
229+ ##### 禁用自启动
230+
231+ ``` bash
232+ systemctl disable vm-port-mapping
233+ ```
234+
235+ ##### 查看日志
236+
237+ ``` bash
238+ journalctl -u vm-port-mapping
239+ # 或
240+ cat /var/log/vm_port_mapping.log
241+ ```
242+
243+ ##### 手动触发规则更新
244+
245+ 如果需要手动触发规则更新,可以重启服务:
246+
247+ ``` bash
248+ systemctl restart vm-port-mapping
249+ ```
250+
251+ #### 常见问题
252+
253+ ##### 端口映射不生效
254+
255+ 检查以下内容:
256+ - 确认服务正在运行:` systemctl status vm-port-mapping `
257+ - 检查日志文件:` cat /var/log/vm_port_mapping.log `
258+ - 确认防火墙服务正常:` systemctl status firewalld `
259+ - 验证虚拟机网络接口配置:` virsh domiflist 虚拟机名称 `
260+
261+ ##### 手动添加映射规则
262+
263+ 通常不需要手动添加规则,但如果需要,可以这样操作:
264+
265+ 1 . 停止服务:
266+ ``` bash
267+ systemctl stop vm-port-mapping
268+ ```
269+
270+ 2 . 编辑映射文件:
271+ ``` bash
272+ nano /etc/vm_port_mapping/mapping.txt
273+ ```
274+
275+ 3 . 启动服务:
276+ ``` bash
277+ systemctl start vm-port-mapping
278+ ```
279+
280+ ##### 清理所有规则
281+
282+ 如需清理所有端口映射规则:
283+
284+ ``` bash
285+ systemctl stop vm-port-mapping
286+ iptables -t nat -F PREROUTING
287+ iptables -t nat -F POSTROUTING
288+ firewall-cmd --reload
289+ ```
290+
291+ ##### 安全建议
292+
293+ - 定期检查映射文件和日志,确保没有未授权的映射
294+ - 不要手动修改 ` /etc/vm_port_mapping/ ` 目录下的文件,除非你完全了解其影响
295+ - 确保 ` firewalld ` 服务正常运行,以便规则能够正确持久化
296+
297+ #### 卸载方法
298+
299+ 如需卸载此服务:
300+
301+ ``` bash
302+ systemctl stop vm-port-mapping
303+ systemctl disable vm-port-mapping
304+ rm -f /etc/systemd/system/vm-port-mapping.service
305+ rm -f /usr/local/sbin/vm_port_mapping_daemon.sh
306+ rm -rf /etc/vm_port_mapping
307+ systemctl daemon-reload
308+ ```
309+
310+ #### 手动映射
142311
143312假设此时你的虚拟机在用户端控制面板显示为
144313
0 commit comments