Linux - 通用网络配置

标签 linux networking configuration

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

Debian 使用 /etc/network/interfaces,Fedora 和 Red Hat 使用 /etc/sysconfig/network-scripts,其他发行版使用各自的网络管理器(我个人在 Arch 上使用 netctl),让脚本能够配置网络接口(interface)似乎几乎是不可能的。有没有配置网络接口(interface)的可移植方法?

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

这个问题随后扩展到打包 - 将其创建为包时,我如何支持现有的多个网络管理器,即使在一个发行版上也是如此?例如,在 Arch 中,用户可能安装了 netctl(它使用一组配置文件)、Wicd 或 GNOME 网络管理器。

最佳答案

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

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

关于Linux - 通用网络配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20997735/

相关文章:

linux - 组合条件编译参数

linux - 脚本在手动运行时完全运行,但在从另一个脚本运行时会丢失命令

linux - 使用 bash 遍历文件(和目录)名称

azure - 每个 Durable 函数实例之间的数据交换是否使用任务中心?

ios - `flatMap` 发布者出现不同的错误

Ruby 备份 gem - 共享配置?

python - 创建单个 python 可执行模块

javascript - 如何设置 ember-simple-google-maps 环境变量?

PowerShell IIS Set-WebConfigurationProperty - 锁定 ApplicationHost.config 部分

sockets - 从单个客户端到同一端口上同一服务器的最大连接数