一、NetworkManager 简介
NetworkManager 是 CentOS/RHEL 系统中默认的网络管理服务,提供以下功能:
- 管理有线、无线、VPN 等各种网络连接
- 自动检测和配置网络
- 提供命令行(nmcli)和图形界面(TUI/GUI)管理工具
- 支持动态网络配置更改
二、NetworkManager 服务管理
1. 查看服务状态
systemctl status NetworkManager
2. 启动/停止/重启服务
systemctl start NetworkManager # 启动
systemctl stop NetworkManager # 停止
systemctl restart NetworkManager # 重启
3. 设置开机自启
systemctl enable NetworkManager # 启用自启
systemctl disable NetworkManager # 禁用自启
systemctl --now enable NetworkManager
等价于:
systemctl start NetworkManager
systemctl enable NetworkManager
三、nmcli 命令行工具
Network Manager Command Line
1. 查看网络设备
状态
[root@yangge ~]# nmcli device status
DEVICE TYPE STATE CONNECTION
ens33 ethernet connected ens33
lo loopback unmanaged --
[root@yangge ~]# nmcli device show ens33
GENERAL.DEVICE: ens33
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:93:92:66
GENERAL.MTU: 1500
GENERAL.STATE: 100 (connected)
GENERAL.CONNECTION: ens33
GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/1
WIRED-PROPERTIES.CARRIER: on
IP4.ADDRESS[1]: 192.168.92.131/24
IP4.GATEWAY: 192.168.92.2
IP4.ROUTE[1]: dst = 0.0.0.0/0, nh = 192.168.92.2, mt = 100
IP4.ROUTE[2]: dst = 192.168.92.0/24, nh = 0.0.0.0, mt = 100
IP4.DNS[1]: 192.168.92.2
IP4.DOMAIN[1]: localdomain
IP6.ADDRESS[1]: fe80::b57:b45:9e22:fe47/64
IP6.GATEWAY: --
IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 100
IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
2. 查看所有连接
配置
[root@yangge ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 3dc71aa4-c4c3-4411-b5b9-18cc45569826 ethernet ens33
[root@yangge ~]# nmcli connection show ens33
[root@yangge ~]# ls /etc/sysconfig/network-scripts/
ifcfg-ens33 ifdown-ippp ifdown-routes ifup ifup-ipv6 ifup-ppp ifup-tunnel
ifcfg-lo ifdown-ipv6 ifdown-sit ifup-aliases ifup-isdn ifup-routes ifup-wireless
ifdown ifdown-isdn ifdown-Team ifup-bnep ifup-plip ifup-sit
[root@yangge ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33 # ens33连接对应的配置文件
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp" # 动态IP,从DHCP服务器获取
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
IPV6_ADDR_GEN_MODE="stable-privacy"
NAME="ens33" # 连接名
UUID="3dc71aa4-c4c3-4411-b5b9-18cc45569826"
DEVICE="ens33" # 该连接对应的设备
ONBOOT="yes" # 开机自动激活该连接
3. 查看详细网络信息
nmcli connection show <连接名称>
[root@yangge ~]# nmcli connection show ens33 # 查看连接的详细信息
connection.id: ens33
connection.uuid: 3dc71aa4-c4c3-4411-b5b9-18cc45569826
connection.stable-id: --
connection.type: 802-3-ethernet
connection.interface-name: ens33
connection.autoconnect: yes
ipv4.method: manual
ipv4.dns: 114.114.114.114
ipv4.dns-search: --
ipv4.dns-options: ""
ipv4.dns-priority: 0
ipv4.addresses: 192.168.92.133/24
ipv4.gateway: 192.168.92.2
四、常见网络配置实战
案例1:配置静态IP地址
- 固定IP地址:手动指定,不会自动改变
- 稳定性高:适合服务器、网络设备等需要固定地址的场景
- 需手动配置:需要管理员设置IP、子网掩码、网关、DNS等信息
# 查看原有的网络信息
1. 查IP地址的获取方法
[root@yangge ~]# nmcli connection show ens33 |grep ipv4.method
ipv4.method: auto # auto或dhcp表示自动获取
2. IP地址:
[root@yangge ~]# ip addr # 192.168.92.132/24(255.255.255.0)
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:a7:7d:eb brd ff:ff:ff:ff:ff:ff
inet 192.168.92.132/24 brd 192.168.92.255 scope global noprefixroute dynamic ens33
3. 默认网关:
[root@yangge ~]# ip route # 默认网关为192.168.92.2
default via 192.168.92.2 dev ens33 proto dhcp metric 100
192.168.92.0/24 dev ens33 proto kernel scope link src 192.168.92.132 metric 100
4. DNS服务器: # 当前DNS服务器为192.168.92.2
[root@yangge ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search localdomain
nameserver 192.168.92.2
5. 主机名: # 当前主机名为yangge
[root@yangge ~]# hostname
yangge
# 要求【根据自己当前的情况】:
ipv4.method: Manual(手动,静态)
IP Addr: 192.168.92.133
子网掩码: 255.255.255.0(/24)
默认网关: 192.168.92.2
DNS Server: 114.114.114.114
hostname: tianyun.qfedu.com
[root@yangge ~]# nmcli connection show # 查看当前的连接
NAME UUID TYPE DEVICE
ens33 3dc71aa4-c4c3-4411-b5b9-18cc45569826 ethernet ens33
# 修改以太网静态IP连接
[root@yangge ~]# nmcli connection modify ens33 \
> ipv4.method manual \
> ipv4.addresses 192.168.92.133/24 \
> ipv4.gateway 192.168.92.2 \
> ipv4.dns 192.168.92.2 \ # "8.8.8.8,4.4.4.4,114.114.114.114"
> autoconnect yes # 当初安装系统时,没有勾选网卡自动连接
# 激活连接
[root@yangge ~]# nmcli connection up ens33
# 查看修改后的网络信息
[root@yangge ~]# ip a
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:a7:7d:eb brd ff:ff:ff:ff:ff:ff
inet 192.168.92.133/24 brd 192.168.92.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::2e01:8a2b:153c:d9a6/64 scope link noprefixroute
valid_lft forever preferred_lft forever
[root@yangge ~]# ip route
default via 192.168.92.2 dev ens33 proto static metric 100
192.168.92.0/24 dev ens33 proto kernel scope link src 192.168.92.133 metric 100
[root@yangge ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.92.2
[root@yangge ~]# nmcli connection show ens33 |grep meth
ipv4.method: manual
其实还可以这么查:
[root@yangge ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none # none表示静态,dhcp表示动态
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33 # 连接名
UUID=3dc71aa4-c4c3-4411-b5b9-18cc45569826
DEVICE=ens33 # 设备名【网卡名】
ONBOOT=yes # 自动连接 autoconnect yes
IPADDR=192.168.92.133 # IP地址
PREFIX=24 # 子网掩码
GATEWAY=192.168.92.2 # 默认网关
DNS1=192.168.92.2 # DNS服务器
扩展:当初安装系统时,没有勾选网卡自动连接
[root@yangge ~]# nmcli connection modify ens33 autoconnect yes
[root@yangge ~]# nmcli connection up ens33
添加一个新的连接(配置)
[root@yangge ~]# nmcli connection add \ # 增加一个连接(配置)
> type ethernet \ # 网络的类型,以太网
> ifname ens33 \ # if(interface),接口(设备)的名称
> con-name zhuzhuxia \ # 新建连接(配置)的名称
> ipv4.method manual \
> ipv4.addresses 1.1.1.10/8 \
> ipv4.gateway 1.1.1.1 \
> ipv4.dns 1.1.1.1
[root@yangge ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 3dc71aa4-c4c3-4411-b5b9-18cc45569826 ethernet ens33
zhuzhuxia eca4bd98-a2f7-45f4-9ba4-3cabc823dd25 ethernet --
[root@yangge ~]# nmcli device status
DEVICE TYPE STATE CONNECTION
ens33 ethernet connected ens33
lo loopback unmanaged --
[root@yangge ~]# ls /etc/sysconfig/network-scripts/
ifcfg-ens33 ifdown-ippp ifdown-sit ifup-bnep ifup-plusb ifup-TeamPort
ifcfg-lo ifdown-ipv6 ifdown-Team ifup-eth ifup-post ifup-tunnel
ifcfg-zhuzhuxia ifdown-isdn ifdown-TeamPort ifup-ippp ifup-ppp ifup-wireless
[root@yangge ~]# cat /etc/sysconfig/network-scripts/ifcfg-zhuzhuxia
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=1.1.1.10
PREFIX=8
GATEWAY=1.1.1.1
DNS1=1.1.1.1
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=zhuzhuxia
UUID=eca4bd98-a2f7-45f4-9ba4-3cabc823dd25
DEVICE=ens33
ONBOOT=yes
[root@yangge ~]# nmcli connection up zhuzhuxia # 激活连接zhuzhuxia
# 删除连接
[root@yangge ~]# nmcli connection delete zhuzhuxia
Connection 'zhuzhuxia' (eca4bd98-a2f7-45f4-9ba4-3cabc823dd25) successfully deleted.
[root@yangge ~]#
[root@yangge ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 3dc71aa4-c4c3-4411-b5b9-18cc45569826 ethernet ens33
[root@yangge ~]#
[root@yangge ~]# ls /etc/sysconfig/network-scripts/
ifcfg-ens33 ifdown-ippp ifdown-routes ifup ifup-ipv6 ifup-ppp ifup-tunnel
ifcfg-lo ifdown-ipv6 ifdown-sit ifup-aliases ifup-isdn ifup-routes ifup-wireless
# 增加或修改新的DNS 8.8.8.8
[root@yangge ~]# cat /etc/resolv.conf # 查看原有的DNS服务器,就1个
# Generated by NetworkManager
nameserver 192.168.92.2
[root@yangge ~]# nmcli connection modify ens33 +ipv4.dns 8.8.8.8 # +表示增加
[root@yangge ~]# nmcli conn up ens33 # 凡是修改某个连接,必须重新UP该连接
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)
[root@yangge ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.92.2
nameserver 8.8.8.8
[root@yangge ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=3dc71aa4-c4c3-4411-b5b9-18cc45569826
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.92.133
PREFIX=24
GATEWAY=192.168.92.2
DNS1=192.168.92.2
DNS2=8.8.8.8
[root@yangge ~]# nmcli connection modify ens33 ipv4.dns "8.8.8.8,114.114.114.114,202.106.0.20"
[root@yangge ~]# nmcli connection up ens33
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/8)
[root@yangge ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 114.114.114.114
nameserver 202.106.0.20
修改主机名:
[root@yangge ~]# hostname
yangge
[root@yangge ~]# hostnamectl set-hostname tianyun.qfedu.com
[root@yangge ~]# hostname
tianyun.qfedu.com
[root@yangge ~]# cat /etc/hostname
tianyun.qfedu.com
远程重新连接:
[root@tianyun ~]# # 提示符主机名显示为tianyun
案例2:配置DHCP自动获取IP
- 自动获取IP:从DHCP服务器动态获取IP配置
- 管理方便:适合客户端设备,减少手动配置工作
- 地址可能变化:租约到期后可能获取不同IP
[root@yangge ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 3dc71aa4-c4c3-4411-b5b9-18cc45569826 ethernet ens33
# 添加DHCP连接
nmcli connection add con-name "dhcp-ens33" ifname ens33 type ethernet \
ipv4.method auto autoconnect yes
# 激活连接
nmcli connection up "dhcp-ens33"
# 扩展知识(DHCP客户端手动释放release和获取的方法)
[root@yangge ~]# dhclient -r ens33 # release释放
[root@yangge ~]# dhclient -v ens33
Internet Systems Consortium DHCP Client 4.2.5
Copyright 2004-2013 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/
Listening on LPF/ens33/00:0c:29:93:92:66
Sending on LPF/ens33/00:0c:29:93:92:66
Sending on Socket/fallback
DHCPDISCOVER on ens33 to 255.255.255.255 port 67 interval 4 (xid=0x30333a1d) 1. 发现
DHCPREQUEST on ens33 to 255.255.255.255 port 67 (xid=0x30333a1d) 2. 请示
DHCPOFFER from 192.168.92.254 3. 收到
DHCPACK from 192.168.92.254 (xid=0x30333a1d) 4. 确认
bound to 192.168.92.130 -- renewal in 788 seconds.
[root@yangge ~]# ip addr # 查看IP地址
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:a7:7d:eb brd ff:ff:ff:ff:ff:ff
inet 192.168.92.132/24 brd 192.168.92.255 scope global noprefixroute dynamic ens33
valid_lft 1779sec preferred_lft 1779sec
inet6 fe80::2e01:8a2b:153c:d9a6/64 scope link noprefixroute
valid_lft forever preferred_lft forever
lo网卡: 本地回环接口,虚拟接口,IP 127.0.0.1,它表示是自己
[root@yangge ~]# ping 127.0.0.1
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.047 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.051 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.039 ms
ens33网卡:物理网卡,对外通信
[root@yangge ~]# ping www.qfedu.com # 测试和目标主机的连通信
PING evrwoxqc.slt.sched.tdnsv8.com (60.220.213.75) 56(84) bytes of data.
64 bytes from 75.213.220.60.adsl-pool.sx.cn (60.220.213.75): icmp_seq=1 ttl=128 time=34.9 ms
64 bytes from 75.213.220.60.adsl-pool.sx.cn (60.220.213.75): icmp_seq=2 ttl=128 time=18.7 ms
[root@yangge ~]# ping -c2 www.qfedu.com
PING evrwoxqc.slt.sched.tdnsv8.com (60.220.213.75) 56(84) bytes of data.
64 bytes from 75.213.220.60.adsl-pool.sx.cn (60.220.213.75): icmp_seq=1 ttl=128 time=18.6 ms
64 bytes from 75.213.220.60.adsl-pool.sx.cn (60.220.213.75): icmp_seq=2 ttl=128 time=18.1 ms
DNS: 域名解析服务 www.qfedu.com ---DNS Server---> 60.220.213.75
五、连接管理命令
1. 激活/停用连接
nmcli connection up <连接名称> # 激活
nmcli connection down <连接名称> # 停用
2. 修改现有连接
# 修改IP地址
nmcli connection modify "ens33" ipv4.addresses "192.168.1.200/24"
# 修改网关
nmcli connection modify "ens33" ipv4.gateway "192.168.1.254"
# 修改DNS
nmcli connection modify "ens33" ipv4.dns "192.168.1.1 8.8.8.8"
3. 删除连接
nmcli connection delete "zhuzhuxia"
六、网络故障排查
1. 查看网络设备详细信息
nmcli device show ens33
2. 重新加载所有连接
nmcli connection reload
3. 查看NetworkManager日志
journalctl -u NetworkManager -f
七、图形界面工具
1. 文本用户界面(TUI)
nmtui
2. 图形界面(GUI)
- CentOS桌面环境右上角网络图标
- 或通过
nm-connection-editor
命令启动
八、注意事项
- NetworkManager会覆盖手动修改的
/etc/sysconfig/network-scripts/
下的配置文件 - 对于服务器,建议使用NetworkManager的文本模式(nmcli/nmtui)