如果您是一位经验丰富的系统管理员,并且专注于网络管理,那么您可能已经听说过NetworkManager

NetworkManager于 2004 年发布,由 Red Hat 开发,是一组不同的工具,主要是接口,旨在促进系统上的网络管理。

如果您想打开网络适配器,您可能会使用NetworkManager来实现。

同样,如果您想编辑现有网卡以更改分配给它的 IP 地址,您将再次使用NetworkManager。

在本教程中,我们将介绍如何使用NetworkManager套件中的各种工具来轻松管理您的网络。

在列出套件中嵌入的工具(nmcli、 nmtui、 nm-applet)之后,我们将查看NetworkManager的实际用例列表。

NetworkManager架构

在深入研究NetworkManager的功能之前,让我们首先描述它的架构以及它如何与内核相关模块进行通信。

NetworkManager API

要理解的第一个概念是NetworkManager作为API 来配置主机上的网络接口。

但是,NetworkManager不能单独工作:它是在称为网络套接字的端点上接收网络消息的过程的一部分。

网络套接字由连接到以太网电缆的以太网 NIC 物理表示,以便开始通过网络共享数据。

当插入以太网电缆时,udev 模块首先识别它,该模块将向NetworkManager发送信号以通知已插入新电缆。

通过这种方式,NetworkManager能够保持连接,但也能够向其他应用程序公开网络可用性。

如果您使用的是 Firefox,并且如果 Firefox 需要知道网络连接的状态,它可以通过 DBus 查询NetworkManager以获取此信息。

NetworkManager实际上是一个网络 API,它将提供有关可用网卡、有线或无线网络的详细信息。

它还将提供一种使用专用配置文件配置网卡和接口的简单方法。

NetworkManager与 ifupdown

历史上,Linux 操作系统使用不同的方式管理网络接口,主要使用位于 /etc/network 的配置文件。

在这个目录中,可以使用一个文件来配置网络接口:interfaces 文件。

但是,在最近的发行版中,没有使用 ifup 和 ifdown 实用程序使用的“接口”文件。

默认情况下,NetworkManager负责管理您的网络接口,但可以在NetworkManager配置文件中更改管理网络的方式。

准确地说,NetworkManager.conf 文件“ifupdown”部分中的“managed”参数描述了您的系统是否使用了NetworkManager。

注意:“false”表示NetworkManager管理您的连接和设备,“true”表示您更喜欢使用 ifup 和 ifdown 的旧方式。

关于 systemd-networkd

在较新的系统上,systemd 设置为处理几乎所有内容,网络也不例外。

在某些情况下,您的系统可能依赖systemd-network守护进程来管理接口。

请注意,为了避免与网络相关的配置冲突,一次只能启用一项网络服务:无论是 ifupdown、systemd-networkd 还是 Network Manager。

如果您习惯使用“interfaces”文件来管理您的网络,您可能希望继续这样做,否则建议切换到NetworkManager。

网络管理工具

现在您对网络管理器有了更深入的了解,让我们开始列举该套件中提供的工具。

NetworkManager提供以下工具:

  • nmcli:用于使用NetworkManager配置、添加、编辑和删除连接的专用命令行工具;
  • nmtui:图形用户界面,仅提供与 nmcli 兼容的功能子集。使用 nmtui,您可以编辑连接、激活连接或更改计算机的主机名;
  • nm-applet:在GNOME 桌面环境中可用,此小程序用作界面覆盖,可用于连接或断开网络。

请注意,某些发行版可能具有上述工具的NetworkManager“快捷方式”:nmtui-connect、nmtui-edit 或 nmtui-hostname。

大多数时候,这些实用程序实际上是到主要 nmtui 实用程序的简单软链接。

在以下部分中,我们将了解如何使用上面引用的不同工具来正确配置网络。

使用 nmcli 的网络配置

如上一节所述,nmcli 是一个命令行实用程序,可用于监视网络连接,还可以添加、编辑、删除连接以及获取有关系统上设备的详细信息。

您可以使用以下语法与 nmcli 交互

$ nmcli <options> <section> <action>

nmcli 有一组八个部分:

  • help : 用于获取有关 nmcli 用法的一般帮助;
  • general:用于获取网络管理器本身的状态和全局配置;
  • networking:公开方法以关闭网络管理器或重新启动它;
  • radio:用于管理无线传输协议,如WIFI或WAN;
  • connection:顾名思义,此部分用于启动和关闭接口以及添加和删除现有连接;
  • device:主要用于修改与给定设备相关的参数(例如接口名称)或使用现有连接连接设备;
  • agent & monitor:这些部分分别用于处理机密和观察网络变化。

描述的每个部分都有一组预定义的操作,可以在阅读 nmcli 文档(显示、添加、删除、修改、加载等)中找到这些操作

例如,如果您要列出当前活动的所有连接,您将使用“connection”部分和“show”操作执行“nmcli”。

$ nmcli connection show

在这种情况下,我的主机在名为“eth0”的网络适配器上具有有线以太网连接。

在以下部分中,我们将了解如何与网卡和连接交互以正确配置系统。

连接管理

使用NetworkManager时,一个连接可以被看作是一个“网络配置”。

因此,“连接”具有与第 2 层(数据链路层)和第 3 层(可能与 IP 地址相关)相关的所有信息。

当设备使用连接时,即主机上的网络适配器,它被设置为“活动”或“启动”。

另一方面,连接可以是“空闲”的,现在可以被任何网络接口使用:在这种情况下,它被设置为“非活动”或“关闭”

这里的第一个关键点是,每当我们在 Linux 主机上配置网络时,我们本质上都是在配置连接,稍后将绑定到设备。

列出网络连接

为了列出主机上可用的网络连接,您可以运行“连接”部分的“显示”操作。

$ nmcli connection show

或者,您可以提供“–active”标志以将结果限制为活动连接(即由网络适配器使用)

nmcli connection show --active

添加网络连接

在某些情况下,配置多个连接可能会很方便。

假设您在两个不同的地方工作:一个使用 DHCP 来分配您的 IP 地址(动态 IP 地址),另一个使用静态 IP 分配给您的计算机。

为了实现这一点,您可以创建可以根据您的位置打开的其他网络连接。

要使用网络管理器添加新的网络连接,您可以:

  • 将您的配置文件添加到 位于 /etc/NetworkManager的 system-connections目录中
  • 添加带有“add”选项的“ nmcli connection ”命令;
  • 使用提供 GUI的nm-connection-editor实用程序来添加、修改和删除现有连接。

使用 nmcli 命令行,您可以通过运行以下命令来创建新连接

$ sudo nmcli connection add type ethernet ifname eth2

使用 nmcli,一个新的 UUID 连接将分配给您新创建的连接,例如,您将能够开始使用它连接到 Internet。

修改连接参数

nmcli 实用程序的一项重要功能是修改现有连接的参数

如果您想修改您的 IP 地址并从 DHCP 切换到手动 IP 寻址,您还可以使用 nmcli 实用程序来更改这些参数。

为了修改现有的连接参数,您将使用以下语法

$ nmcli connection modify <connection_id> <parameter> <value>

例如,假设您希望 IP 地址为静态并设置为值“192.168.1.19”

为此,您将运行以下命令

$ nmcli connection modify <uuid> ipv4.method manual$ nmcli connection modify <uuid> ipv4.address 192.168.1.19/24

注意:更改IP地址时,不要忘记设置子网掩码(此处为/24),否则您可能会获得分配的默认掩码,这在大多数情况下是错误的。

为了使您的更改生效,您需要使用“连接”部分的“向上”和“向下”操作重新启动连接。

$ nmcli connection down <uuid>$ nmcli connection up <uuid>

现在您的接口已重新启动,您的 IP 更改应该有效。

$ hostname -I192.168.1.19

设备管理

设备”是 nmcli 实用程序的部分之一,可用于管理主机上的网络适配器。

列出网络适配器

为了在您的主机上列出网络适配器,您可以在“设备”部分运行“显示”操作。

$ nmcli device show

此命令广泛地描述了您的网络适配器,它列出了:

  • 设备名称:当设备插入您的计算机时由 udev 分配(在本例中为 eth0);
  • 设备 MAC 地址:这里称为硬件地址;
  • 设备状态:它是否连接到网络或不;
  • IPv4 地址:使用 CIDR 表示法(192.168.1.16/24);
  • IPv4网关: (192.168.1.1);
  • IPv4主 DNS: (192.168.1.1)

注意:这里,网关充当主要 DNS,但您的公司可能有专用的名称服务器。

如果您想列出主机上可用的网卡并确定它们是否连接,这些特性非常有用。

更改设备配置

在某些情况下,直接更改设备配置可能很有用。

但是,您需要记住一个关键点:您可以实时更改设备,但如果您希望保留更改,则需要修改连接配置。

简而言之,设备配置更改是暂时的。

为了更改您的设备配置,您需要执行带有“修改”选项的“nmcli device”命令并指定要更改的参数。

$ nmcli device modify <interface_name> <parameter> <value>$ nmcli dev mod <interface_name> <parameter> <value>

例如,假设您想更改“eth0”网络接口的 IP 地址。您还希望 IP 归属是静态的而不是动态的。

为了实现这一点,您将执行以下命令

$ nmcli dev mod eth0 ipv4.address 192.168.1.19/24Connection successfully reapplied to 'eth0'$ nmcli device modify eth0 ipv4.gateway 192.168.1.1Connection successfully reapplied to 'eth0'$ nmcli device modify eth0 ipv4.dns 192.168.1.1Connection successfully reapplied to 'eth0'$ nmcli device modify eth0 ipv4.method manualConnection successfully reapplied to 'eth0'

重新应用参数

只是为了展示更改是暂时的,如果您将参数“重新应用”到您的界面,您的所有更改都将丢失。

相反,将重新应用在您的连接配置文件(在 /etc/NetworkManager/system-connections 中)中定义的参数。

$ nmcli dev reapply eth0Connection successfully reapplied to 'eth0'

重新检查 IP 地址将为您提供另一个 IP 地址,而不是您在上一节中静态分配的 IP 地址。

$ hostname -I192.168.1.18/24

网络管理器图形工具

在本节中,我们将看看网络管理器套件中包含的图形工具:nmtui 和 nm-applet。

Nmtui 实用程序

nmtui 顾名思义,是一个文本用户界面,旨在通过易于使用的用户界面促进网络操作。

要从 nmtui 开始,只需在终端 shell 中执行“nmtui”。

$ nmtui

在此图形菜单中,您有三个选项:

  • 编辑连接:您可以在其中选择网络接口并修改分配给它们的参数(例如 DNS、IP 地址或网关地址);
  • 激活连接:同时取消激活现有连接。提醒一下,连接仅在分配给特定设备时才处于活动状态或启用状态;
  • 设置系统主机名:像“hostnamectl”或“hostname”一样,您可以通过网络设置PC名称。

在 nmtui 工具中导航非常简单:您可以使用键盘键进行导航,使用“Enter”键确认您的选择,使用“Escape”键取消并返回上一屏幕。

GNOME 上的 Nm 小程序

最后一个与网络管理器相关的应用程序是 nm-applet :一个可用于 GNOME 用户界面的 GUI 小程序。

nm-applet 工具是一个覆盖用户界面,位于桌面菜单的右上角。

使用 nm-applet,您可以:查看现有连接,随意添加、编辑和删除它们。

您可以查看有关有线连接设置的详细信息并对其进行编辑以更改您的 IP 地址或更改 IP 归属方法(例如从 DHCP 到手动)

结论

在本教程中,您了解了网络管理器:现代发行版上的一种工具,用于创建、修改和管理网络连接。

您已经发现了与网络管理器相关的工具(即nmcli、nmtui 和 nm-applet),并且您已经了解了如何使用这些工具来修改现有连接。

Linux 上的NetworkManager示例相关推荐

  1. 如何实现在Windows上运行Linux程序,附示例代码

    如何实现在Windows上运行Linux程序,附示例代码 微软在去年发布了Bash On Windows, 这项技术允许在Windows上运行Linux程序, 我相信已经有很多文章解释过Bash On ...

  2. Zynq UltraScale + MPSoC示例设计 - 在64位Linux上执行32位应用程序

    目录 官方说明连接:https://china.xilinx.com/support/answers/66636.html 描述 解决方案 官方说明连接:https://china.xilinx.co ...

  3. Linux的md64进程,在Linux上安装Elasticsearch Kibaba.md(示例代码)

    在Linux上安装Elasticsearch Kibaba Kibana是一个开源为elasticsearch 引擎提供数据和数据分析 1.下载安装 切换到root账户,按顺序依次执行以下命令 rpm ...

  4. linux ghost功能,在linux上用dd命令实现ghost功能(示例代码)

    转自:http://blog.jobbole.com/90978/ ghost和g4l 安装操作系统,速度太慢,整个过程太冗长乏味了. 安装过程中,需要回答若干问题,系统需要安装无数个软件,创建和写入 ...

  5. linux重新初始化网络命令,如何在Ubuntu 18.04 Bionic Beaver Linux上重新启动网络

    目的 以下文章将介绍在Ubuntu 18.04 Bionic Beaver Linux上如何从命令行以及图形用户界面(GUI)重新启动网络的各种方法. 操作系统和软件版本 操作系统:-Ubuntu 1 ...

  6. 如何在Linux上找到包含特定文本的所有文件?

    我正在尝试找到一种方法来扫描整个Linux系统,查找包含特定文本字符串的所有文件. 只是为了澄清,我在文件中寻找文本,而不是文件名. 当我查找如何做到这一点时,我遇到了两次这个解决方案: find / ...

  7. linux kvm百度云,如何在 Ubuntu Linux 上使用 KVM 云镜像

    如何下载并使用运行在 Ubuntu Linux 服务器上的 KVM 云镜像?如何在 Ubuntu Linux 16.04 LTS 服务器上无需完整安装即可创建虚拟机?如何在 Ubuntu Linux ...

  8. 如何在 Linux 上用 SQL 语句来查询 Apache 日志

    Linux 有一个显著的特点,在正常情况下,你可以通过日志分析系统日志来了解你的系统中发生了什么,或正在发生什么.的确,系统日志是系统管理员在解决系统和应用问题时最需要的第一手资源.我们将在这篇文章中 ...

  9. 在Linux上安装Python 3

    搭建环境 1.Ubuntu14.04.5 Server,其他版本也可以. 2.Python3.5.2. 3.Centos系统安装Python3在本教程也做了相应的讲解. 搭建准备 1.到 Python ...

  10. Linux上的WebSphere MQ开发快速入门

    本文将通过用于向队列发送消息和从队列接收消息的示例应用程序说明如何在 Linux 上着手安装和配置 WebSphere MQ,以及如何为 MQ 环境开发 Java 应用程序. 引言 本文的目标是让您轻 ...

最新文章

  1. python根目录_Pycharm使用嵌入式Python
  2. FFmpeg流媒体处理-收流与推流
  3. 奇怪的.strip(alir) #()里面有东西 待问老师........
  4. python脚本语言是什么意思_python为什么是脚本语言
  5. FreeRTOS空闲任务
  6. html5的常用标签,HTML5常用标签
  7. VS2012一打开就停止工作的解决方法
  8. VC++开发学习三(对话框之间的信息传递的方法总结)
  9. iOS底层探索之多线程(十五)—@synchronized源码分析
  10. 目录_视觉SLAM十四讲_0
  11. Atitit各种SDM 软件SDP sdm的ddd tdd bdd设计
  12. Altium Designer的元件库
  13. APP测试—专项测试概念
  14. 14AMESIM安装教程
  15. 《伯克毕生发展心理学2》
  16. java制造业生产管理系统源码
  17. Android网络编程基础(第一弹)
  18. 正则表达式基本符号_如何使用基本正则表达式更好地搜索并节省时间
  19. 埃斯顿机器人 王杰高_埃斯顿机器人总经理王杰高受邀出席2018中国机器人产业发展大会...
  20. spring cloud contract的应用实现与概念理解-服务提供者一侧的落地

热门文章

  1. 纯原生js自定义弹窗
  2. 年会抽奖 - 牛客网题解
  3. The Tangled Web: A Guide to Securing Modern Web Applications 原版pdf
  4. 办公技巧:腾讯文档怎么固定表头?
  5. VOIP系统开源实现PCMA/PCMU/AMR/G729常用格式解码服务
  6. 关于深度学习的研究综述
  7. NXP K60单片机Altium Designer电路设计教程(智能车)
  8. ODOO_posbox_打印出的小票(收据)如何修改?
  9. JS实现继承的几种方式
  10. Wso2 api manager 帮助文档