【问题标题】:Linux - generic network configurationLinux - 通用网络配置
【发布时间】:2014-01-26 16:14:16
【问题描述】:

我正在创建一组实用程序来为特定的网络和域配置配置 Linux 系统。此配置的步骤之一是配置网络接口。虽然我可以轻松配置 Samba 或 NTP 之类的东西(因为它们具有相同的配置文件语法,无论发行版如何),但联网似乎有点困难。

Debian 使用 /etc/network/interfaces,Fedora 和 Red Hat 使用 /etc/sysconfig/network-scripts,以及其他发行版使用各自的网络管理器(我个人在 Arch 上使用 netctl),获得能够配置网络接口的脚本似乎几乎是不可能的.是否有任何可移植的方式来配置网络接口?

如果做不到这一点,为各种发行版创建“模块”的好方法是什么?我的项目将使用 Autotools 来配置和安装实用程序,因此可以进行一些“编译”,但是如何检测正在使用的网络管理器?这种方法的问题包括当使用中的网络管理器不存在模块时要做什么。还是应该让编译用户决定启用哪个“模块”?

然后这个问题延伸到打包 - 当创建它作为一个包时,我如何支持现有的多个网络管理器,即使是在一个发行版上?例如,在 Arch 中,用户可能安装了 netctl,它使用一组配置文件,或者 Wicd 或 GNOME 网络管理器。

【问题讨论】:

  • wicd 和 network-manager 似乎都提供了 D-Bus 接口。因此,您可以检查您的软件,如果这些守护程序之一已在 D-Bus 下注册。
  • 或者您可以只定义 NM 或 Wicd 作为要求,因此用户必须使用这些工具之一来使用您的软件。在这种情况下,您有一个定义好的环境,所以您的软件不会那么复杂。
  • @yegorich 我应该决定在编译时启用哪个“模块”,还是在运行时启用?
  • 如果你的意思是 D-Bus 的东西,那么在运行时。您甚至可以使用某种插件 API 来设计您的软件。 NM 一个插件,Wicd 一个,netctl 一个等。API 描述了如何配置网络接口。然后,用户可以根据自己的系统配置选择要编译的插件。
  • @yegorich 想把它写成正式答案吗?这对我来说似乎是最好的方法

标签: linux networking configuration


【解决方案1】:

您可以在创建软件时考虑到插件 API。 API 描述了如何配置网络接口。然后,您将拥有一个用于 NM 的插件,一个用于 Wicd 的插件,一个用于 /etc/network/interfaces 等的插件。用户可以选择在./configure 阶段编译哪些插件,这样他就不需要安装不需要的依赖项。

对于多个启用的插件(例如 NM 和 Wicd),您可以使用 D-Bus 检查注册了哪些服务来管理网络接口。

【讨论】:

    猜你喜欢
    • 2018-03-28
    • 2019-12-03
    • 2017-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-13
    相关资源
    最近更新 更多