← 返回信息流
AI 资讯Hacker News·5 天前

因怀念Windows网络集成工具,开发者打造Linux等效方案

原标题:I missed Network integrated tools on Windows so I built a Linux equivalent

速览

该资讯讲述了一位开发者因在Linux系统中找不到类似Windows的网络集成工具,从而决定自行开发一款等效工具的故事。这一举动反映了Linux用户在网络管理工具方面的需求,以及开源社区对提升用户体验的持续贡献。

AI 深度解读

NMLinux:Windows 下 NETworkManager 的 Linux 原生重构与深度解析

背景

在 Windows 生态系统中,由 BornToBeRoot 开发的 NETworkManager 是系统管理员和高级用户不可或缺的网络管理利器。它提供了一个统一的图形用户界面(GUI),集成了 Ping、DNS 查询、端口扫描、SSH 客户端等常用网络工具,极大地简化了网络故障排查和配置流程。

然而,这一强大的工具长期缺乏官方的 Linux 版本。尽管 Linux 拥有强大的命令行网络工具链,但缺乏一个将这些分散工具整合为统一 GUI 应用的成熟方案。许多用户不得不依赖终端操作,或者寻找功能单一、界面陈旧的替代品。

在此背景下,开发者 thongor77 推出了 NMLinux。这是一个完全独立的项目,并非对原版 C# 代码的简单移植,而是基于 Python 和 PySide6 (Qt 6) 从零开始构建的 Linux 原生应用。其初衷是将 NETworkManager 的设计理念引入 Linux 桌面环境,为 SysAdmin 和 Power User 提供一个现代化、跨发行版兼容的网络管理中枢。

值得注意的是,NMLinux 与 Red Hat/GNOME 维护的系统级守护进程 NetworkManager 没有任何关系,其命名灵感仅来源于 Windows 版的 NETworkManager。

核心内容

NMLinux 旨在通过现代化的 Qt 6 技术栈,提供与 Windows 版 NETworkManager 相似甚至更优的 Linux 原生体验。以下是其核心功能模块与技术实现的详细解读:

1. 核心架构与技术栈

  • 技术基础:基于 Python 3.11+ 和 PySide6 (Qt 6) 开发,确保了跨平台的现代 UI 渲染能力。
  • 图标系统:摒弃了对系统图标主题(如 Breeze, Adwaita, Papirus)的依赖,内置了 21 个 Lucide SVG 图标,通过 QSvgRenderer 在运行时渲染,确保在任何桌面环境(包括 NixOS/KDE 或 GNOME)下图标显示一致且美观。
  • 国际化 (i18n):全面支持法语、英语、西班牙语和德语,所有导航提示、标签和模块描述均已本地化。

2. 网络管理模块

  • Dashboard (仪表盘):提供网络概览,包括接口状态、子网掩码显示(从 CIDR 前缀转换为点分十进制,如 255.255.255.0)。
  • Interfaces (接口管理):查看和管理网络接口。
  • Wi-Fi:管理无线连接。
  • Subnet Calculator (子网计算器):辅助计算子网掩码和 IP 范围。
  • DNS Lookup & Ping Monitor:标准的 DNS 查询和持续 Ping 监控。
  • IP Scanner
    • 利用 getentavahinmblookup 进行主机名解析。
    • 显示 MAC 地址、厂商信息(基于 IEEE OUI 39K 数据库)。
    • 支持 CSV/TXT 导出。
  • Port Scanner & Nmap:集成 Nmap 扫描功能,支持结果导出。
  • Whois & SNMP / SNTP/NTP:提供 WHOIS 查询及 SNMP/NTP 时间同步管理。

3. 高级连接与远程管理

  • SSH Terminal (SSH 终端)
    • 完全重写:使用 pyte (VT100/xterm 模拟器) 和 QPainter 渲染器。
    • 特性:支持 2000 行滚动缓冲区、光标闪烁、256 色支持,提供比传统终端更稳定的图形化体验。
  • Remote Desktop (RDP)
    • 管理 Windows RDP 连接配置文件(支持分组/子分组)。
    • 调用 xfreerdp 作为外部进程。
    • 连接时提示输入密码,绝不存储密码
    • 支持主机、端口、用户名、域、分辨率、全屏等配置,并自动检测缺失的 xfreerdp 并提供各发行版安装指南。
  • VNC
    • 管理 VNC 连接配置文件。
    • 调用 vncviewer (TigerVNC)。
    • 兼容 macOS ARD (DH30 认证由 vncviewer 原生处理)。
    • 密码不存储,自动检测缺失组件并提供安装指引。
  • Wake on LAN (WoL)
    • 纯 Python 实现 Magic Packet (UDP 广播)。
    • 支持持久化的主机簿(JSON 存储)。

4. 诊断与监控工具

  • MTR (My Traceroute)
    • 嵌入式 MTR 模块,运行 mtr --report 并解析文本输出。
    • 显示实时表格,包含每跳的丢包率 (Loss %)、RTT (Last/Avg/Best/Worst/Jitter)。
    • 按丢包严重程度进行颜色编码,支持连续模式和 CSV/TXT 导出。
  • Visual Traceroute (可视化路由追踪)
    • 基于 Natural Earth 110m 世界地图。
    • 利用 ip-api.com 进行每跳实时地理定位。
    • 支持交互式缩放/平移,双解析器支持 (traceroute / tracepath 回退)。
  • Speed Test (速度测试)
    • 无依赖设计:仅使用 curl 和 Cloudflare (speed.cloudflare.com)。
    • 测试下载 (25 MB)、上传 (10 MB) 及到 1.1.1.1 的 Ping。
    • 最多保存 5 次运行记录于 JSON,提供历史折线图(下载/上传)。
  • Bandwidth Monitor (带宽监控)
    • 实时显示每个接口的吞吐量。
    • 60 秒滑动窗口图表,显示实时速度、会话总量和峰值。
    • 提供明确的“开始/停止”按钮,取代不可靠的自动启动。
  • Firewall Viewer (防火墙查看器)
    • 只读规则集查看器,无需 root 权限即可解析 /etc/nftables.conf/etc/iptables/*.rules
    • 通过 pkexec nft list ruleset 提供实时规则集视图。
    • 列包括:Table / Chain / Rule / Port / Action / Comment,操作按颜色编码,支持实时过滤。

5. 用户体验与兼容性优化

  • Sidebar Hints:每个导航条目显示微妙的 ? 徽章,悬停时显示模块功能描述。
  • Theme Adaptation (主题适配)
    • 支持全运行时亮/暗模式切换。
    • 自定义 painter 小部件(如 _Graph, _MapWidget)在绘制时读取调色板。
    • 所有硬编码的 Catppuccin Mocha 颜色已替换为语义化 Qt 调色板角色。
  • 跨桌面环境兼容
    • GNOME/Adwaita:修复非 KDE 桌面环境下的图标问题,main.py 通过 gsettings 自动检测 GTK 图标主题并应用至 Qt。
    • NixOS/KDE:修复 NixOS 上的图标问题(Breeze 6.x 仅提供 SVGZ 图标)。Nix 包装器自动添加 qt6.qtsvgQT_PLUGIN_PATH,并强制使用 breeze 主题以适配 22px 图标尺寸。

关键要点

  • 独立项目,非移植:NMLinux 是基于 Python/PySide6 的独立重写项目,灵感源自 Windows 版 NETworkManager,而非代码移植。
  • 安全性设计
查看原文 →github.com