如何在Debian系统里使用Redhat(CentOS)的方式配置网络

对于习惯了 Redhat 族系统的用户来说,使用/etc/sysconfig/network-scripts 已经非常习惯,猛然切换到 Debian 会有些不适应。

如何才能在Debian族系统中,使用Redhat中的方法配置网络呢?

其实很简单。NetworkManager就可以做到。

NetworkManager支持各个操作系统的网络配置的方式,是通过插件化的方式。对于Redhat系统来说,是ifcfg-rh插件;而对于Debian族来说,则是ifupdown插件。

所以,我们只需要让NetworkManager不使用ifupdown插件,而是使用ifcfg-rh插件,就可以实现Redhat系统里那种用/etc/sysconfig/network-scripts文件来配置网络。

步骤分两步:

在NetworkManager的配置文件里关闭/开启相应插件

NetworkManager的配置文件为/etc/NetworkManager/NetworkManager.conf,其中[main]块可以配置使用的插件。

复制代码
[main]
plugins=keyfile,ifupdown

首先把这里换成

复制代码
[main]
plugins=ifcfg-rh

,之后保存。

编译ifcfg-rh插件

配置里打开以后,要确定系统里有没有ifcfg-rh插件。

NetworkManager加载插件的路径为/usr/lib64/NetworkManager/VERSION/libnm-settings-plugin-ifcfg-rh.so,其中VERSION为当前系统的NetworkManager版本。

如果这个路径没有相应的插件so,则需要自己编译。

ifcfg-rh插件是NetworkManager内置的插件,只要下载标准的NetworkManager代码就可以编译。

对于Debian系统,可以使用如下命令下载并且完成编译:

复制代码
apt build-dep network-manager
apt source network-manager
cd network-manager-*
dpkg-buildpackage -us -uc #或者 ./debian/rules binary

编译完,把src/settings/plugins/ifcfg-rh/.libs目录下面的libnm-settings-plugin-ifcfg-rh.so复制到/usr/lib64/NetworkManager/$VERSION 目录去就可以了。

增加dbus配置

此时,使用NetworkManager会有一条安全方面的告警提示,是

复制代码
...... couldn't acquire D-Bus service: GDBus.Error:org.freedesktop.DBus.Error.AccessDenied: Connection ":1.20" is not allowed to own the service "com.redhat.ifcfgrh1" due to security policies in the configuration file

解决办法是把network-manager源代码目录src/settings/plugins/ifcfg-rh目录下面的dbus配置文件:nm-ifcfg-rh.conf复制到/etc/dbus-1/system.d里面去。

这个文件的内容是:

复制代码
<!DOCTYPE busconfig PUBLIC
 "-//freedesktop//DTD D-BUS Bus Configuration 1.0//EN"
 "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
<busconfig>
        <policy context="default">
                <allow send_destination="com.redhat.ifcfgrh1"/>
        </policy>
        <policy user="root">
                <allow own="com.redhat.ifcfgrh1"/>
        </policy>
</busconfig>
相关推荐
白帽黑客沐瑶2 天前
【网络安全就业】信息安全专业的就业前景(非常详细)零基础入门到精通,收藏这篇就够了
网络·安全·web安全·计算机·程序员·编程·网络安全就业
树码小子2 天前
Java网络编程:(socket API编程:TCP协议的 socket API -- 回显程序的服务器端程序的编写)
java·网络·tcp/ip
绿箭柠檬茶2 天前
Ubuntu 服务器配置转发网络访问
服务器·网络·ubuntu
real 12 天前
传输层协议UDP
网络·网络协议·udp
hashiqimiya2 天前
centos配置环境变量jdk
linux·运维·centos
百锦再2 天前
[特殊字符] Python在CentOS系统执行深度指南
开发语言·python·plotly·django·centos·virtualenv·pygame
路由侠内网穿透2 天前
本地部署 GPS 跟踪系统 Traccar 并实现外部访问
运维·服务器·网络·windows·tcp/ip
喵手2 天前
玩转Java网络编程:基于Socket的服务器和客户端开发!
java·服务器·网络
徐子元竟然被占了!!2 天前
实验-基本ACL
网络
ftpeak2 天前
从零开始使用 axum-server 构建 HTTP/HTTPS 服务
网络·http·https·rust·web·web app