总体方案
1. 目标
开发一个 Windows 桌面客户端,用于通过 LAN2 直连 Ubuntu 24 设备,对 Linux 的网络进行发现、管理和配置。
2. 当前约束
- Linux 发行版:
Ubuntu 24
- 网络管理方式:
netplan
- 通信协议:
UDP + HTTP
- 鉴权方式:固定初始化密码
LAN1、LAN2 仅作为逻辑标识,便于界面展示和硬件对应
- 实际配置与操作对象为 Linux 本机真实接口名,例如
eno1、enp1s0
LAN2 长期保留固定维护地址,同时支持接 4G 路由器联网
- 首版以新机器初始化为主,不重点处理复杂历史网络配置兼容
3. 总体架构
3.1 网口角色
LAN1
- 角色:业务口逻辑标识
- 用途:接客户业务网络
- 地址模式:仅静态 IP
- 网关按用户填写内容正常写入
LAN2
- 角色:控制口 + 外联网口逻辑标识
- 用途:
- 固定维护地址:
169.254.100.2/16
- 可叠加 DHCP 地址
- 可通过 DHCP 获取网关等网络参数
3.2 组件划分
Windows 客户端
建议技术:C# + WPF
负责:
- 选择本机网卡
- 将本机网卡切换到
169.254/16
- 通过 UDP 发现设备
- 调用 HTTP API
- 展示设备状态
- 配置选中的目标网络接口
- 执行关机、重启等操作
Linux Server
建议技术:Go + systemd service
负责:
- 监听当前被识别为
LAN2 的真实接口上的固定维护地址
- 响应 UDP 发现请求
- 提供 HTTP 管理接口
- 读取当前网络状态
- 写入和应用
netplan
- 验证配置结果
- 失败后自动回滚
- 执行关机、重启
首版边界:
- 以新机器初始化为主
- 核心目标是把选中的真实接口配置好
- 默认修改系统现有 netplan 文件,并在修改前完整备份
- 不重点处理复杂旧 netplan 文件接管和多文件冲突兼容
4. 地址与路由策略
4.1 LAN2 地址策略
LAN2 同时允许存在两个 IPv4 地址:
- 固定维护地址:
169.254.100.2/16
- DHCP 地址:由 4G 路由器分配,例如
192.168.8.x/24
规则:
169.254.100.2 不配置网关
- DHCP 地址可带默认网关
- DHCP 地址可带网关等网络参数
- Server 只通过
169.254.100.2 提供服务
4.2 LAN1 地址策略
LAN1 仅支持静态配置。
可配置字段:
- IP:必填
- 前缀长度:必填
- 网关:选填,填写后正常写入
- 首选 DNS:选填
- 备用 DNS:选填
4.3 LAN1 特殊规则
LAN1 允许配置 169.254.x.x
- 当
LAN1 配置为 169.254.x.x 时:
- 应提示这是链路本地地址
- 建议网关留空
- 建议 DNS 留空
- 一般只适合同链路通信
LAN1 的 IP、网关、DNS 按用户填写内容正常写入,具体路由优先级由系统实际路由表决定
5. 安全边界
5.1 网络访问限制
- Server 仅监听
169.254.100.2
- 当前阶段暂不限制来源 IP,仅通过密码校验控制访问
LAN2 接入 4G 路由器后,4G 网络侧理论上可达 Server,因此当前阶段要依赖密码保护
5.2 鉴权方式
当前采用固定初始化密码,暂时直接写死在 Server 代码中。
规则:
- 不使用 Token
- 不使用 Session
- 不单独设计登录接口
- 所有 HTTP 接口都必须校验密码
- 密码通过 HTTP Header 传递
建议 Header:
X-Admin-Password: <固定密码>
注意事项:
- 不要通过 URL 传递密码
- 不要在日志中记录密码 Header
- 当前阶段密码写死在代码中,后续再升级为配置文件或每机唯一密码
- 可增加简单的密码错误次数限制