网络管理有两种常见的网络管理器,一种是传统的 network-scripts,另一种是满足新时代网络需求的 NetworkManager。TencentOS Server V4版本,默认采用 NetworkManager。
使用 NetworkManager 配置网络(推荐方式)
NetworkManager 是默认的网络管理器,支持多种网络配置方式,本文为您介绍通过命令行工具 nmcli、文本界面配置工具 nmtui 和 ifcfg 文件配置网络。
1.1 使用 nmcli 配置网络
1.1.1 查看网络设备
使用以下命令查看网络设备信息:
nmcli device status
该命令将显示当前网络设备的名称、类型、状态、以及对应的网络连接。
状态为 unmanaged 的网络设备,不受 NetworkManager 管理,使用 NetworkManager 配置改设备无法生效。
1.1.2 查看网络连接
使用以下命令查看所有的网络连接:
nmcli connection show
该命令将显示当前的网络连接列表,包括连接名称、类型、设备信息。
多个网络连接可以对应一个网络设备,但只有激活的连接会显示设备信息。
使用以下命令查看某个网络连接的详细信息:以 ens18-connection 为例。
nmcli connection show ens18-connection
1.1.3 创建动态 IP 地址的网络连接
使用以下命令创建一个新的动态网络连接:以 ens18-connection 为例。
nmcli connection add con-name ens18-connection ifname ens18 type ethernet ipv4.method auto
该命令将创建一个名为 ens18-connection 的新连接,该连接使用 ens18 设备和以太网类型,自动获取 IP 信息。
1.1.4 创建静态 IP 地址的网络连接
使用以下命令创建一个新的静态网络连接:以 ens18-connection 为例。
nmcli connection add con-name ens18-connection ifname ens18 type ethernet ipv4.method manual ipv4.addr 192.168.1.2/24 ipv4.gateway 192.168.1.1 ipv4.dns 192.168.1.1
该命令将创建一个名为 ens18-connection 的新连接,该连接使用 ens18 设备和以太网类型。它还将配置 IPv4 地址为 192.168.1.2,子网掩码为 /24,网关为 192.168.1.1,DNS 服务器地址为 192.168.1.1。
1.1.5 编辑网络连接
方案一:
使用以下命令打开交互式编辑器来编辑网络连接:
nmcli connection edit ens18-connection
该命令将打开一个交互式编辑器,让用户编辑连接的详细信息,例如 IP 地址、网关、DNS 、路由等,如:
nmcli> set ipv4.addr 192.168.1.2/24nmcli> set ipv4.gateway 192.168.1.1nmcli> set ipv4.dns 192.168.1.1nmcli> set ipv4.routes 192.168.2.0/24 10.0.0.1nmcli> savenmcli> quit
编辑完成后需要通过
nmcli
命令应用配置更改,请参见 应用配置更改。将修改 ens18 设备的 IPv4 地址为 192.168.1.2,子网掩码为 /24,网关为 192.168.1.1,DNS 服务器地址为 192.168.1.1,ens18 上 192.168.2.0/24 子网的流量定向到网关 10.0.0.1。方案二:
用户也可以使用以下非交互式命令编辑网络连接:
nmcli connection modify ens18-connection ipv4.addr 192.168.1.2/24nmcli connection modify ens18-connection ipv4.gateway 192.168.1.1nmcli connection modify ens18-connection ipv4.dns 192.168.1.1nmcli connection modify ens18-connection +ipv4.routes "192.168.2.0/24 10.0.0.1"
方案三:
用户也可以直接编辑网络配置文件来编辑网络连接(
nmcli
命令创建的网络配置文件在 /etc/NetworkManager/system-connections
目录下),编辑完成后通过 nmcli
命令,进行应用配置更改,请参见 应用配置更改。
1.1.6 删除网络连接
使用以下命令删除网络连接:
nmcli connection delete ens18-connection
该命令将删除名为 ens18-connection 的连接。
1.1.7 应用配置更改
如果修改网络配置后(创建或更改),需要先使用以下命令重新载入网络连接:
nmcli connection reload
此命令只会让 NetworkManager 知道用户对配置的任何更改,但它不会将更改应用到已经建立的连接。
可以通过断开和激活网络连接或使用如下命令应用配置更改:以 ens18为例。
nmcli dev reapply ens18
ens18 是要应用配置更改的网络设备名称。
1.1.8 激活/断开网络连接
使用以下命令将连接激活,连接到网络:
nmcli connection up ens18-connection
该命令将激活名为 ens18-connection 的网络连接配置。
使用以下命令断开连接:
nmcli connection down ens18-connection
该命令将断开名为 ens18-connection 的网络连接。
1.1.9 配置 NetworkManager 管理或忽略设备
对于不受 NetworkManager 管理的设备,可以使用以下命令临时配置设备为 NetworkManager 管理:
nmcli device set ens18 managed yes
ens18 是配置的网络设备名称。
对于 NetworkManager 管理的设备,可以使用以下命令将设备临时配置为 NetworkManager 非受管设备:
nmcli device set ens18 managed no
ens18 是配置的网络设备名称。此命令配置为临时配置,重启 NetworkManager 服务或系统后,配置会丢失。
1.2 使用 nmtui 配置网络
nmtui 提供了一个基于文本的 UI 界面,用户可以使用 nmtui 创建和修改网络连接,而不必记住复杂的命令或选项。
操作系统默认不安装 nmtui ,使用 nmtui 需要先安装 NetworkManager-tui 软件包:
dnf instll -y NetworkManager-tui
nmtui 基本操作:
使用光标键导航。
选择按钮并按 Enter 键来按按钮。
使用 Space 选择或取消选择复选框。
1.2.1 创建动态 IP 地址的网络连接
1. 如果不知道新添加网络连接需要使用的网络设备名称,可以先使用 nmcli 查看网络设备信息,找到可用的设备。
2. 在命令行中执行
nmtui
。3. 在界面中按
Edit a connection
。4. 按
Add
。5. 从网络类型列表中选择并按
Ethernet
。 6. (可选)为要创建的网络连接输入一个自定义名称。
7. 在
Device
字段中输入网络设备名称。8. 按
OK
按钮创建并自动激活新连接。9. 按
Cancal
按钮返回到主菜单。10. 按
Quit
关闭 nmtui 应用程序。
1.2.2 创建静态 IP 地址的网络连接
1. 如果不知道新添加网络连接需要使用的网络设备名称,可以先使用 nmcli 查看网络设备信息,找到可用的设备。
2. 在命令行中执行
nmtui
。3. 在界面中按
Edit a connection
。4. 按
Add
。5. 从网络类型列表中选择并按
Ethernet
。6. (可选)为要创建的网络连接输入一个自定义名称。
7. 在
Device
字段中输入网络设备名称。8. 在
IPv4 CONFIGURATION
和 IPv6 CONFIGURATION
中配置 IPv4 和 IPv6 地址:8.1 按
Automatic
,然后从显示的列表中选择 Manual
。8.2 按要配置的协议旁边的
show
按钮,已显示其他字段。8.3 在
Address
输入 IP 地址和子网掩码。如果没有指定子网掩码,NetworkManager 会为 IPv4 地址设置 /32 子网掩码,为 IPv6 地址设置/64子网掩码。8.4 在
Gateway
输入默认网关的地址。8.5 在
DNS Servers
输入 DNS 服务器地址。8.6 在
Search domains
输入 DNS 搜索域。9. 按
OK
按钮创建并自动激活新连接。10. 按
Cancal
按钮返回到主菜单。11. 按
Quit
关闭 nmtui 应用程序。
1.2.3 编辑网络连接
1. 在命令行中执行
nmtui
。2. 在界面中按
Edit a connection
。3. 选择需要编辑的网络连接。
4. 编辑网络连接。
5. 按
OK
按钮更新并自动激活新连接。6. 按
Cancal
按钮返回到主菜单。7. 按
Quit
关闭 nmtui 应用程序
1.2.4 激活和断开网络连接
1. 在命令行中执行
nmtui
。2. 在界面中按
Activate a connection
。3. 选择需要激活或者断开的网络连接,并按右侧的
Activate
激活,或按 Deactivate
断开。4. 按
Back
按钮返回到主菜单。5. 按
Quit
关闭 nmtui 应用程序。
1.3 使用 ifcfg 文件配置网络
NetworkManager 还兼容 network-scripts 的 ifcfg 类型配置文件。
使用 ifcfg 文件配置的网络连接,也可以被 nmcli 和 nmtui 识别并进行配置。
1.3.1 创建动态 IP 地址的网络连接
用户可以在
/etc/sysconfig/network-scripts/
目录下编辑网络配置文件为某个网络设备配置静态 IP 地址。以编辑 ifcfg-ens18 文件为例,需添加以下内容:
DEVICE=ens18BOOTPROTO=dhcpPEERDNS=yesONBOOT=yes
其中,ens18 是网络设备的名称,dhcp 表示为通过 dhcp 获取动态地址,PEERDNS=yes 表示将使用从 DHCP 服务器获得的 DNS 服务器地址,ONBOOT=yes 表示网络接口将在系统引导期间自动打开。
如果要使用特定 DNS 服务器地址,而不是从 DHCP 服务器获得的 DNS 服务器地址,请将 PEERDNS 修改为 PEERDNS=no,并添加以下行到 ifcfg 文件中:
DNS1=192.168.1.1DNS2=192.168.2.1
其中,192.168.1.1 是要配置的首选DNS服务器,192.168.2.1是要配置的可选DNS服务器(可不配置)。
文件保存后,使用
nmcli
命令应用网络配置,或重启 NetworkManager 以应用网络配置。
1.3.2 创建静态 IP 地址的网络连接
用户可以在
/etc/sysconfig/network-scripts/
目录下创建网络配置文件为某个网络设备配置静态 IP 地址。如编辑 ifcfg-ens18 文件,并添加以下内容:
DEVICE=ens18BOOTPROTO=staticIPADDR=192.168.1.2NETMASK=255.255.255.0GATEWAY=192.168.1.1DNS1=192.168.1.1DNS2=192.168.2.1ONBOOT=yes
其中,ens18 是网络设备的名称,static 表示为静态 IP,192.168.1.2 是要配置的静态 IP 地址,255.255.255.0 是网络掩码,192.168.1.1 是网关地址,ONBOOT=yes 表示网络接口将在系统引导期间自动打开,192.168.1.1 是要配置的首选DNS服务器,192.168.2.1 是要配置的可选DNS服务器(可不配置)。
文件保存后,使用
nmcli
命令应用网络配置,或重启 NetworkManager 以应用网络配置。
1.3.3 配置静态路由
若想要将静态路由配置为在系统重启后永久保留,用户可以在
/etc/sysconfig/network-scripts/
下创建路由配置文件,文件名格式为 route-xxx
,route- 后的字符需要与网络配置文件名 ifcfg- 后的字符保持一致,如网络配置文件名 ifcfg-ens18,路由配置文件名则为 route-ens18。在路由配置文件中添加如下行:
ADDRESS0=192.168.2.1NETMASK0=255.255.255.255GATEWAY0=10.0.0.1ADDRESS1=192.168.2.0NETMASK1=255.255.255.0GATEWAY1=10.0.0.1
将网络设备上192.168.2.1 主机的流量定向到网关 10.0.0.1。
将网络设备上192.168.2.0/24子网的流量定向到网关 10.0.0.1。
ADDRESS0=192.168.2.1 是要访问的远程网络或主机的网络地址。
注意:
ADDRESS0=192.168.2.1 是要访问的远程网络或主机的网络地址。
NETMASK0=255.255.255.255 是使用 ADDRESS0=192.168.2.1 定义的网络地址的子网掩码。
GATEWAY0=10.0.0.1 是网关。
后续静态路由必须按顺序编号,且不得跳过任何值。例如:ADDRESS0、ADDRESS1、ADDRESS2等。
1.4 NetworkManager 服务配置
1.4.1 网络设备管理
除 lo 设备和 udev 设备管理器配置 NM_UNMANAGED 为 "1" 或 "true" 的特殊网络设备外,其他网络设备均默认由 NetworkManager 管理。由 NetworkManager 管理的设备使用 NetworkManager 配置网络才会生效。
NM_UNMANAGED 配置信息在
/usr/lib/udev/rules.d/85-nm-unmanaged.rules
文件中。注意:lo 设备通常用于本地通信,不需要网络配置。udev 设备管理器默认配置为非受 NetworkManager 管理的特殊设备也各有原因。不建议将默认的 NetworkManager 非受管设备修改为 NeworkManager 管理。如果明确确认需要修改,可以通过
nmcli
命令临时配置。对于 NetworkManager 管理的设备,可以通过
nmcli
命令临时配置为非受 NetworkManager 管理。若需要永久配置,用户可以使用以下内容创建 /etc/NetworkManager/conf.d/99-unmanaged-devices.conf
文件:
要将特定网络设备配置为非受管,请添加:
[keyfile]unmanaged-devices=interface-name:xxxxx
要将特定 MAC 地址的网络设备配置为非受管,请添加:
[keyfile]unmanaged-devices=mac:xx:xx:xx:xx:xx:xx
要将特定类型的所有网络设备配置为为非受管,请添加:
[keyfile]unmanaged-devices=type:ethernet
要将多个设备设置为非受管,请使用分号分隔
unmanaged-devices
参数中的条目。创建完成后使用
systemctl reload NetworkManager
命令重新载入NetworkManager服务。
使用
nmcli
命令查看网络设备信息时发现应默认由 NetworkManager 管理的设备的状态为 unmanaged,则可能是 nmcli
命令临时配置或 NetworkManager 的配置文件永久配置此设备非受 NetworkManager 管理,可以通过以下方法将其修改回 NetworkManager 管理:1. 使用
systemctl restart NetworkManager
重启 NetworkManager 服务。2. 如果重启若设备后自动修改回 NetworkManager 管理,则说明是临时配置导致。
3. 如果重启后仍为 unmanaged 状态,则需要查找并删除 NetworkManager 配置文件中的永久配置。
4. 在以下目录和文件中查找将设备配置为非受管的永久配置,并将其删除后使用
systemctl reload NetworkManager
重新载入 NetworkManager 服务。/etc/NetworkManager/conf.d//usr/lib/NetworkManager/conf.d//etc/NetworkManager/NetworkManager.conf
1.4.2 DNS 管理
NetworkManager 服务运行时将根据
/etc/resolv.conf
文件的情况来选择谁来管理 DNS:/etc/resolv.conf
是指向 /run/systemd/resolve/stub-resolv.conf
或 /run/systemd/resolve/resolv.conf
的软链接,由 systemd-resolved 管理 DNS。 当系统安装了 systemd-resolved 且 /etc/resolv.conf
不存在时,会默认生成此指向的软链接。/etc/resolv.conf
是指向 /run/NetworkManager/resolv.conf
的软链接,由 NetworkManager 管理 DNS。/etc/resolv.conf
不存在或为普通文件,由 NetworkManager 管理 DNS。
DNS 由 systemd-resolved 管理时,DNS 解析路径为用户向 systemd-resolved 提供的本地 DNS 服务发起 DNS 解析请求,systemd-resolved 再根据 NetworkManager 网络连接的 DNS 配置信息将解析请求转发给对应 DNS 服务器进行解析。
DNS 由 NetworkManager 管理时,还可以配置将 DNS 交给 dnsmasq 服务管理或
/etc/resolv.conf
文件管理。
交给 dnsmasq 服务管理:
1. 使用以下命令安装 dnsmasq:
dnf install dnsmasq
2. 将
/etc/NetworkManager/NetworkManager.conf
文件的 [main] 部分中的 dns 参数设置为 dnsmasq:[main]dns=dnsmasq
3. 确认
/etc/resolv.conf
是指向 /run/NetworkManager/resolv.conf
的软链接,若不是,请使用如下命令生成软链接:ln -sf /var/run/NetworkManager/resolv.conf /etc/resolv.conf
4. 使用
systemctl restart NetworkManager
重启 NetworkManager 服务。通过以上设置,用户网络访问将向 dnsmasq 提供的本地 DNS 服务发起 DNS 解析请求,dnsmasq 根据 NetworkManager 网络连接的 DNS 配置将解析请求转发给对应的 DNS 服务器。
交给/etc/resolv.conf 文件管理:
1. 将
/etc/NetworkManager/NetworkManager.conf
文件的 [main] 部分中的 dns 参数设置为 none:[main]dns=none
2. 确认
/etc/resolv.conf
是否为软链接,若为软链接则将其删除。3. 编辑
/etc/resolv.conf
文件配置系统全局 DNS 服务器地址信息。4. 使用
systemctl restart NetworkManager
重启 NetworkManager 服务。通过以上设置,DNS 解析请求将发送到
/etc/resolv.conf
文件配置的 DNS 服务器。与此同时,使用 NetworkManager 配置 DNS 将不生效。
使用 network-scripts 配置网络
相比于提供全功能网络管理的 NetworkManager,network-scripts 更准确的描述是用于配置网络接口的一套基本工具,而非网络管理器。
network-scripts 不提供图形用户界面,不支持 VPN 连接,也不支持网络设备的自动检测和配置,难以满足新时代网络需求。且 NetworkManager 也兼容支持 network-scripts 的 ifcfg 类型配置文件,不推荐用户使用 network-scripts 来配置网络。
系统默认安装 NetworkManager,不安装 network-scripts,如果确定要使用 network-scripts,用户可以在已安装 NetworkManager 的情况下安装和使用 network-scripts。
2.1 确定运行模式
network-scripts 有以下两种运行模式:
使用 NetworkManager 兼容 network-scripts 模式配置网络:
在已安装 NetworkManager 的情况下安装和使用 network-scripts,系统默认不会生成 network 服务,网络还是由 NetworkManager 服务管理,NetworkManager 服务会兼容支持 network-scripts 的脚本命令。用户可以使用 network-scripts 的脚本命令配置网络。
完全使用 network-scripts 配置网络:
如果确认要完全使用 network-scripts,而非 NetworkManager,可以使用以下命令将网络管理服务切换为 network-scripts 的 network 服务。禁用 NetworkManager 管理服务后,NetworkManager 的网络配置会失效。
systemctl stop NetworkManagersystemctl disable NetworkManagersystemctl enable networksystemctl start network
2.2 配置网络
配置文件保存后,使用以下 network-scripts 命令禁用网络设备后重新启用网络设备,以应用网络配置。
ifdown ens18ifup ens18
使用 ip 命令配置网络
可以使用 ip 命令配置临时网络连接,但其配置的网络连接信息会在系统重启后丢失,请谨慎使用。
3.1 查看网络设备的 IP 地址
使用以下命令查看网络设备的 IP 地址:
ip addr show dev ens18
ens18 是要查看的网络设备名称。
3.2 为网络设备分配 IP 地址
使用以下命令为网络设备分配 IP 地址:
ip addr add 192.168.1.2/24 dev ens18
ens18 是网络设备的名称,192.168.1.2 是要配置的静态 IP 地址,/24是子网掩码。分配地址的 ip 命令可以重复多次,以分配多个地址。
3.3 删除网络设备上的 IP 地址
使用以下命令删除网络设备上的 IP 地址:
ip addr del 192.168.1.2/24 dev ens18
ens18 是网络设备的名称,192.168.1.2 是要删除的静态 IP 地址,/24是子网掩码。
3.4 配置默认网关和静态路由
使用以下命令配置默认网关:
ip route add default via 192.168.1.1 dev ens18
ens18 是网络设备的名称,192.168.1.1 是要配置的默认网关地址。
使用以下命令添加静态路由:
ip route add 192.168.2.1 via 10.0.0.1 dev ens18ip route add 192.168.2.0/24 via 10.0.0.1 dev ens18
将 ens18 上 192.168.2.1 主机的流量定向到网关 10.0.0.1。
将 ens18 上 192.168.2.0/24 子网的流量定向到网关 10.0.0.1。
使用以下命令删除静态路由:
ip route del 192.168.2.1ip route del 192.168.2.0/24
3.5 启用/禁用网络设备
使用以下命令启用网络设备:
ip link set ens18 up
ens18 是要启用网络设备的名称。
使用以下命令禁用网络设备:
ip link set ens18 down
ens18 是要禁用的网络设备的名称。
使用 ifconfig 命令配置网络
用户可以使用 ifconfig 配置临时网络连接,但其配置的网络连接信息会在系统重启后丢失,请谨慎使用。
ip 命令具有更多的功能和选项,建议使用 ip 命令进行配置临时网络连接,不推荐使用 ifconfig。
4.1 查看网络设备的 IP 地址:
使用以下命令查看网络设备的 IP 地址:
ifconfig ens18
ens18 是要查看的网络设备名称。
4.2 设置网络设备的 IP 地址
使用以下命令设置网络设备的IP地址:
ipconfig ens18 192.168.1.2 netmask 255.255.255.0
ens18 是网络设备的名称,192.168.1.2 是要配置的静态IP地址,255.255.255.0 是子网掩码。
4.3 配置默认网关或静态路由
使用以下命令配置默认网关:
route add default gw 192.168.1.1 dev ens18
ens18 是网络设备的名称,192.168.1.1 是要配置的默认网关地址。
使用以下命令添加静态路由:
route add -host 192.168.2.1 gw 10.0.0.1 dev ens18route add -net 192.168.2.0/24 gw 10.0.0.1 dev ens18
将 ens18 上 192.168.2.1 主机的流量定向到网关 10.0.0.1。
将 ens18 上 192.168.2.0/24 子网的流量定向到网关 10.0.0.1。
使用以下命令删除静态路由:
route del 192.168.2.1route del 192.168.2.0/24
4.4 启用/禁用网络设备
使用以下命令启用网络设备:
ifconfig ens18 up
ens18 是要启用网络设备的名称。
使用以下命令禁用网络设备:
ifconfig ens18 down
ens18 是要禁用网络设备的名称。