Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)

背景:作为系统管理员,需要经常处理主机网络问题,而配置与管理网络的方法和工具也有好几种,这里整理分享一下网络配置与管理的几种方式。

1、NetworkManager 概述

在 Red Hat Enterprise Linux 7 中,默认网络服务由 NetworkManager 提供,后者是一个动态网络控制和配置守护进程,在网络设备和连接可用时保持启动和激活。传统的 ifcfg 类型配置文件仍受支持。

1.1、NetworkManager 优点

  • 更轻松地进行网络配置: NetworkManager 确保网络连接正常工作。当发现系统中没有网络配置但存在网络设备时,NetworkManager 会创建临时连接以提供连接。
  • 提供与用户的简单连接设置:NetworkManager 通过不同的工具(GUI、nmtui、nmcli - )提供管理。
  • 支持配置灵活性。例如:配置 WiFi 接口,NetworkManager 会扫描并显示可用的 wifi 网络。选择一个接口,NetworkManager 会显示在重启过程后提供自动连接所需的凭证。
  • NetworkManager 可以配置网络别名、IP 地址、静态路由、DNS 信息和 VPN 连接,以及许多特定于连接的参数。您可以修改配置选项以反应您的需要。
  • 重启过程后保持设备状态,并接管在重启过程中将其设定为受管模式的接口。
  • 处理没有被显式设置但由用户或者其他网络设备手动控制的设备。

1.2、NetworkManager 工具和应用程序概述

1.3、NetworkManager的安装和使用

 (1)安装NetworkManager

yum install NetworkManager

 (2)启动NetworkManager

systemctl start NetworkManager

(3)关闭NetworkManager

systemctl stop NetworkManager

(4)重启NetworkManager

systemctl restart NetworkManager

(5)查看NetworkManager是否开机启动

systemctl is-enabled NetworkManager

(6)开机启动 NetworkManager

systemctl enable NetworkManager

(7)禁止开机启动 NetworkManager

systemctl disable NetworkManager

(8)检查 NetworkManager 的状态

systemctl status NetworkManager
注意:
当 NetworkManager 正在运行时,systemctl status 命令会显示Active: active (running)
当 NetworkManager 没有运行时,systemctl status 命令会显示 Active: inactive (dead)

2、配置IP网络

2.1、使用nmtui配置IP网络

这个步骤描述了如何使用文本用户界面工具 nmtui 配置网络。

2.1.1、启动 nmtui 工具

nmtui

NetworkManager 文本用户界面起始菜单(左英右中),使用箭头键键前进 ,然后按Esc后退浏览选项。按 Enter 键选择一个选项。Space 空格键切换复选框的状态。

选择“Edit a connection”

Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP     Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

选择网卡,按Enter进行编辑

Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

2.1.2、配置并保存ipv4信息(配置静态ip选择Manual模式)

Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

2.1.3、要在修改后已激活的连接后应用更改,需要重新激活连接。

a.选择 Activate a connection 菜单条目,激活连接。

Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

b.选择修改的连接。在右侧,单击取消激活按钮,取消激活修改的连接。(注意:此时网络会断,ssh连接的也会断)

Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

c.再次选择连接并单击激活按钮,重新激活修改的连接

Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

2.1.4、命令方式操作

nmtui edit connection-name    #connection-name是网卡名称,例如上面的ens33

注意:如果没有提供连接名称,则会显示选择菜单。如果提供了连接名称并正确识别,则会出现相关的Edit 连接屏幕。

nmtui connect connection-name

注意:如果没有提供连接名称,则会显示选择菜单。如果提供连接名称并正确识别,则会激活相关的连接。

2.2、使用 nmcli 配置 IP 网络

  • nmcli (NetworkManager 命令行界面)命令行工具用于控制 NetworkManager 和报告网络状态,nmcli 用于创建、显示、编辑、删除、激活和停用网络连接,以及控制和显示网络设备状态。
  • nmcli 命令的基本格式如下:
    nmcli [OPTIONS] OBJECT { COMMAND | help }
  • 连接文件::把一个网络设备的配置的集合放在一个文件内,就叫连接文件,比如网卡的配置文件。

     Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

2.2.1 nmcli networking

显示 NetworkManager 是否接管网络设置:

nmcli networking

networking 可以简写为 n、ne、net、netw…… 所以以上命令可以简写为:

nmcli n

查看网络连接状态:

nmcli n connectivity

网络连接状态共有五种:full、limited(连网,但无法上网)、portal(连网,但需要认证登录后才能上网)、none(没连网)和 unknown。

connectivity 可以简写为 c,所以以上命令可简写为:

nmcli n c

开启网络连接:

nmcli n on

关闭网络连接:

nmcli n off

2.2.2 nmcli general

显示系统网络状态:

nmcli general status

general 可以简写为 g、ge、gen、gene……

status 是 general 的默认项,可以省略不写。所以,以上命令可简写为:

nmcli g

命令返回结果如下:

Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

其中:

STATE 显示网络是否连接;

CONNECTIVITY 与前面介绍的 nmcli networking connectivity 相同;

WIFI-HW 表示 WIFI 硬件开关、WIFI 表示 WIFI 软件开关;

WWAN-HW 表示 WWAN 硬件开关、WWAN 表示 WWAN 软件开关。

HW 代表 HardWare,WWAN 代表 Wireless Wide Area Network。

显示主机名:

nmcli g hostname
nmcli g h

更改主机名:

nmcli g hostname newHostName
nmcli g h newHostName

newHostName是你设置的新主机名。

主机名存放在 /etc/hostname 文件中,修改主机名后,需要重启 NetworkManager。

2.2.3 nmcli connection

显示所有网络连接的信息:

nmcli connection show

connection 可以简写为 c、co、con、conn……

show 是 connection 的默认项,可以省略不写。所以,以上命令可简写为:

nmcli c

nmcli connection show 有一个 -active 参数,可以只显示当前启动的连接:

nmcli c s --active  # 或
nmcli c s -a        # 因为 show 后面有参数项,所以此时的 show 不能省

显示某一特定连接的详细信息(以 ens33 为例):

nmcli c s ens33

启动指定连接:

nmcli c up ens33

如果 ens33 本来就出于连接状态,那此命令会重启 ens33。

关闭指定连接:

nmcli c down ens33

关闭连接后,执行 nmcli c 命令, DEVICE 项将显示为 -- 。

修改连接文件:

nmcli c modify ens33  [ + | - ]选项 选项值  # 或
nmcli c m ens33  [ + | - ]选项 选项值

下面给出常用修改示例:

nmcli c m ens33 ipv4.address 192.168.80.10/24  # 修改 IP 地址和子网掩码
nmcli c m ens33 ipv4.method manual             # 修改为静态配置,默认是 auto
nmcli c m ens33 ipv4.gateway 192.168.80.2      # 修改默认网关
nmcli c m ens33 ipv4.dns 192.168.80.2          # 修改 DNS
nmcli c m ens33 +ipv4.dns 114.114.114.114      # 添加一个 DNS
nmcli c m ens33 ipv6.method ignore            # 将 IPv6 禁用,针对CentOS 8,三个可选项:disabled、auto、manual
nmcli c m ens33 connection.autoconnect yes     # 开机启动

注意,必须先修改 ipv4.address,然后才能修改 ipv4.method!

用空引号""代替选项的值,可将选项设回默认值(以 ipv4.method 为例):

nmcli c m ens33 ipv4.method ""

选项有很多,详细信息可以通过以下命令查看:

man 5 nm-settings-nmcli

主要可以看里面 connection setting 和 ipv4 setting 部分。

新增连接:

nmcli c add type 连接类型 选项 选项值  # 或
nmcli c a type 连接类型 选项 选项值

type 为必选项,我们通常用到的是 802-3-ethernet(别名 ethernet)。

选项与前面介绍的“修改连接”中的选项一样,其中重要的几个选项:

connection.id(别名 con-name):连接名;

connection.interface-name(别名 ifname):设备名;

connection.autoconnect(别名 autoconnect):是否开机自启,其值只能是 yes 或 no,默认 yes。

下面给出一个示例:

nmcli c a type ethernet ifname ens37 con-name ens37

删除指定连接:

nmcli c delete ens33  # 或
nmcli c de ens33      # delete 不可简写为 d,否则与 down 冲突,但可以简写为 de

重载所有连接的配置文件:

nmcli c reload  # 或
nmcli c r

重载某一指定连接的配置文件:

nmcli c load ifcfg-ens33  # 或
nmcli c l ifcfg-ens33    

网络配置文件默认保存在 /etc/sysconfig/network-scripts/ 路径下,如果配置文件在其它位置,则需要填写完整路径。

网络配置文件的命名方式就是ifcfg-连接名,例如 ens33 的配置文件名为ifcfg-ens33

网络配置文件说明:

TYPE=Ethernet           # 以太网
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none          # 静态配置,等同于 ipv4.method manual
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=ens33              # 连接名
UUID=16862343-b55e-4248-b05d-a3ea662a84a4
DEVICE=ens33            # 设备名
ONBOOT=yes              # 开机自启
IPADDR=192.168.80.10    # IP 地址
PREFIX=24               # 子网掩码
GATEWAY=192.168.80.2    # 网关
DNS1=192.168.80.2       # DNS1
DNS2=114.114.114.114    # DNS2

2.2.4 nmcli device

显示所有网络接口设备的状态:

nmcli device status

device 可以简写为 d、de、dev……

status 是 device 的默认项,可以省略不写。所以,以上命令可简写为:

nmcli d

显示所有设备的详细信息:

nmcli d show  # 或
nmcli d sh         # show 不可简写为 s,否则与 status 冲突,但可以简写为 sh

显示某一特定设备的详细信息:

nmcli d sh ens33

连接设备:

nmcli d connect ens33  # 或
nmcli d c ens33  

如果 ens33 本来就出于连接状态,那此命令会重启 ens33。

断开设备:

nmcli d disconnect ens33  # 或
nmcli d d ens33  

更新设备信息:

nmcli d reapply ens33  # 或
nmcli d r ens33  

只有在设备处于连接状态,才可以更新设备,更新设备相当于重启连接。

这部分引用:https://zhuanlan.zhihu.com/p/395236748

2.2.5 服务器新增网卡的配置和使用

ip addr show 查看网卡信息(ens37是我刚刚新增的网卡),但并没有连接。

Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

nmcli device status 查看所有网络接口设备的状态,可以看到ens37是disconnected状态

Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

修改新网卡连接的方式有两种

方式一:

nmcli device connect ensXXX:

disconnected→connected 自动创建连接文件(前提:DHCP启用)

Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

方式二:

手动添加连接对设备进行关联(在DHCP没有启用的时候可以用这个方法)

nmcli connection add type ethernet ifname ens37 con-name ens37    #或
nmcli c a type ethernet ifname ens37 con-name ens37

手动添加连接对设备进行关联后,/etc/sysconfig/network-scripts下会生成连接文件 ifcfg-ens37,但是此时连接文件还是不可用的。

Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

修改连接文件 ifcfg-ens37

Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

nmcli device status 再次查看网卡设备已处于connected状态。

Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

2.3、使用 GNOME GUI 配置 IP 网络

在 Red Hat Enterprise Linux 7 中,NetworkManager 本身没有图形用户界面(GUI)。桌面右上角的网络连接图标作为 GNOME Shell 的一部分提供,网络设置配置工具作为支持有线、无线和 vpn 连接的新 GNOME 控制中心 GUI 的一部分提供。nm-connection-editor 是 GUI 配置的主要工具。除了control-center 的功能外,它还应用并非由 GNOME 控制中心提供的功能,如配置绑定、团队、网桥连接。

2.3.1、 使用 control-center GUI 连接到网络

  1. 单击屏幕右上角的 GNOME Shell 网络连接图标,以打开其菜单。

  Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

  当您点击 GNOME Shell 网络连接图标时,您会看到:

  • 当前连接的分类网络列表(如 Wired 和 Wi-Fi)
  • NetworkManager 检测到的所有可用网络的列表
  • 连接任何已配置的虚拟专用网络(VPN)的选项
  • 选择 Network Settings 菜单条目的选项

  2.如下图,打开 Network Settings 窗口

  Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

  单击加号按钮来添加新连接。

  • 有线连接,单击 Wired 条目旁边的加号按钮
  • VPN 连接,单击 VPN 条目旁边的加号按钮
  • 对于 Wi-Fi 连接,点 Settings 菜单中的 Wi-fi 条目

  3.使用 control-center 编辑现有连接

  点击 Network settings 窗口中现有连接配置集的 gear wheel 图标将打开 Details 窗口,从中可以执行大部分网络配置任务,如 IPv4、DNS 和路由配置。

  Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

  Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

  要在连接修改后应用更改,您可以点击连接窗口右上角的 Apply 按钮。

2.3.2、 使用 nm-connection-editor 配置新的和编辑现有连接

使用 nm-connection-editor GUI 应用程序,您可以使用 control-center 提供的附加功能来配置您想要的任何连接。此外,nm-connection-editor 应用并非由 GNOME 控制中心提供的功能,如配置绑定、网桥、VLAN 和组连接。

  1.使用 nm-connection-editor 添加或配置新连接

  在终端中输入 nm-connection-editor 

  Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

  • 添加,可以选择多种连接类型(Ethernet、wifi、Bluetooth、bond 等)
  • 删除,可以选择删除不需要的连接设备
  • 配置,与control-center GUI方式配置大同小异,功能要多一些。

  Redhat7/CentOS7 网络配置与管理(nmtui、nmcli、GNOME GUI、ifcfg文件、IP命令)-LMLPHP

2.4、 使用 IFCFG 文件配置 IP 网络

  我们还可以通过编辑 ifcfg 文件手动配置网络接口。

  接口配置(ifcfg)文件可控制不同网络设备的软件接口。当系统引导时,它使用这些文件来决定启动哪些界面以及如何进行配置。这些文件通常命名为 ifcfg-name ,后缀名称指的是配置文件控制的设备的名称。按照惯例,ifcfg 文件的后缀与配置文件中 DEVICE 指令提供的字符串相同。


1.使用 ifcfg 文件配置带有静态网络设置的接口
例如,若要使用 ifcfg 文件配置带有静态网络设置的接口,请为名为 ens37 的接口,在/etc/sysconfig/network -scripts/ 目录中创建一个名为 ifcfg- ens37 的文件,该文件包含:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens37
UUID=0b7dff57-945d-4b63-bf53-69dd2e0f2e99
DEVICE=ens37
ONBOOT=yes
IPADDR=192.168.8.26
PREFIX=24
GATEWAY=192.168.8.2
DNS1=114.114.114.114

2.应用配置

a.重新载入更新的连接文件:

nmcli connection reload

b.重新激活连接:

nmcli connection up connection_name

2.5、 使用 IP 命令配置 IP 网络

 我们还可以使用 ip 命令临时配置网络接口,但更改在重新引导后不会保留;重新引导后,将丢失任何更改。

ip 工具可以用来为接口分配 IP 地址,格式如下:
ip addr [ add | del ] address dev ifname

使用 ip 命令分配静态地址
要为接口分配 IP 地址,请执行以下操作:

~]# ip address add 10.0.0.3/24 dev ens37
You can view the address assignment of a specific device:
~]# ip addr show dev ens37
2: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
qlen 1000
link/ether f0:de:f1:7b:6e:5f brd ff:ff:ff:ff:ff:ff
inet 10.0.0.3/24 brd 10.0.0.255 scope global global enp1s
valid_lft 58682sec preferred_lft 58682sec
inet6 fe80::f2de:f1ff:fe7b:6e5f/64 scope link
valid_lft forever preferred_lft forever

使用 ip 命令配置多个地址

由于 ip 实用程序支持将多个地址分配到同一接口,因此不再需要使用别名接口方法将多个地址绑定到
同一接口。分配地址的 ip 命令可以重复多次,以便能分配多个地址。例如:

~]# ip address add 192.168.2.223/24 dev ens37
~]# ip address add 192.168.4.223/24 dev ens37
~]# ip addr
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP
qlen 1000
link/ether 52:54:00:fb:77:9e brd ff:ff:ff:ff:ff:ff
inet 192.168.2.223/24 scope global enp1s0
inet 192.168.4.223/24 scope global enp1s0

注意:命令行中给定的 IP 命令在系统重启后不会保留。 

04-05 08:17