如何通过 SSH 在 Ubuntu 中配置网络?

如何通过 SSH 在 Ubuntu 中配置网络?

我正在开发一个用于管理远程设备的工具。该工具包括 2 个部分:

  • 服务器:仪表板管理器,用于查看和管理连接设备的 GUI
  • 客户端:作为代理,从服务器获取任务并执行

当管理员想要更改设备的网络设置时,他将该设备指定为任务目标,新设置将成为任务的参数。例如:

{
  target: DEVICE_ID,
  action: 'CONFIGURE_NETWORK',
  params: {
    ip_addr: '192.168.1.77',
    default_gateway: '192.168.1.1',
    primary_dns: '8.8.8.8',
    ...
  }
}

一旦目标设备获得此任务,客户端机构将尝试将新的设置值应用到操作系统。

过去,我们只支持Raspberry PI设备,因此也使用DHCPCD解决任务。更先进的是,如果网络设置失败,它还能够恢复。

现在我们期望支持更多种类的设备,基于 Ubuntu 16.04 及更高版本的设备,也许可以运行任何桌面环境。以及问题产生的原因。 Ubuntu家族中有很多管理网络的方法和工具。一些发行版使用 netplan,而其他发行版则附带 NetworkManager、wicd 和 DHCPCD5 等。

完成上述任务的最佳方法是什么?哪种方法适合所有变体?你能给我一些建议吗?

答案1

我能想到的最通用的方法是禁用/卸载所有这些管理工具,并使用基本的命令行工具/操作系统机制执行网络配置。

  1. ifupifdown如果在所有支持的平台上可用(ifupdownUbuntu 上的软件包),请使用/etc/network/interfaces.

  2. ifconfig( net-tools) 和一些使用提供的值调用它的自定义脚本应该是最基本的方法(除了实现您自己的工具,我不推荐这样做),但需要一些努力才能使其适合重要的设置。

要获取当前设置,您可以解析(不推荐)的输出ifconfig <interface>,或者解析ip命令(来自iproute2),这应该更方便和确定。

相关内容