背景:作为系统管理员,需要经常处理主机网络问题,而配置与管理网络的方法和工具也有好几种,这里整理分享一下网络配置与管理的几种方式。
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 工具和应用程序概述
应用程序或工具 | 描述 |
nmcli | 命令行工具可让用户和脚本与 NetworkManager 交互。请注意,nmcli 可以在没有 GUI 的系统上使用,如服务器来控制 NetworkManager 的所有方面。它的功能与 GUI 工具相同。 |
nmtui | NetworkManager的基于 curses 的简单文本用户界面(TUI) |
nm-connection-editor | 控制中心实用程序尚未处理的特定任务 (如配置绑定和成组连接)的图形用户界面工具。您可以添加、删除和修改 NetworkManager 存储的网络连接。要启动它,在终端中输入 nm-connection-editor : ~]$ nm-connection-editor |
control-center | GNOME Shell 提供的图形用户界面工具,可供桌面用户使用。它整合了网络设置工具。要启动它,请按 Super 键进入 Activities Overview,键入Network,然后按 Enter 键。此时会出现网络设置工具。 |
网络连接图标 | GNOME Shell 提供的图形用户界面工具代表网络连接状态,如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”
选择网卡,按Enter进行编辑
2.1.2、配置并保存ipv4信息(配置静态ip选择Manual模式)
2.1.3、要在修改后已激活的连接后应用更改,需要重新激活连接。
a.选择 Activate a connection 菜单条目,激活连接。
b.选择修改的连接。在右侧,单击取消激活按钮,取消激活修改的连接。(注意:此时网络会断,ssh连接的也会断)
c.再次选择连接并单击激活按钮,重新激活修改的连接
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 } - 连接文件::把一个网络设备的配置的集合放在一个文件内,就叫连接文件,比如网卡的配置文件。
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
命令返回结果如下:
其中:
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是我刚刚新增的网卡),但并没有连接。
nmcli device status 查看所有网络接口设备的状态,可以看到ens37是disconnected状态
修改新网卡连接的方式有两种
方式一:
nmcli device connect ensXXX:
disconnected→connected 自动创建连接文件(前提:DHCP启用)
方式二:
手动添加连接对设备进行关联(在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,但是此时连接文件还是不可用的。
修改连接文件 ifcfg-ens37
nmcli device status 再次查看网卡设备已处于connected状态。
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 连接到网络
- 单击屏幕右上角的 GNOME Shell 网络连接图标,以打开其菜单。
当您点击 GNOME Shell 网络连接图标时,您会看到:
- 当前连接的分类网络列表(如 Wired 和 Wi-Fi)
- NetworkManager 检测到的所有可用网络的列表
- 连接任何已配置的虚拟专用网络(VPN)的选项
- 选择 Network Settings 菜单条目的选项
2.如下图,打开 Network Settings 窗口
单击加号按钮来添加新连接。
- 有线连接,单击 Wired 条目旁边的加号按钮
- VPN 连接,单击 VPN 条目旁边的加号按钮
- 对于 Wi-Fi 连接,点 Settings 菜单中的 Wi-fi 条目
3.使用 control-center 编辑现有连接
点击 Network settings 窗口中现有连接配置集的 gear wheel 图标将打开 Details 窗口,从中可以执行大部分网络配置任务,如 IPv4、DNS 和路由配置。
要在连接修改后应用更改,您可以点击连接窗口右上角的 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
- 添加,可以选择多种连接类型(Ethernet、wifi、Bluetooth、bond 等)
- 删除,可以选择删除不需要的连接设备
- 配置,与control-center GUI方式配置大同小异,功能要多一些。
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 命令在系统重启后不会保留。