在 CentOS 7 系统中,网络服务的启动与管理是服务器运维的基础,相较于之前的版本,CentOS 7 引入了 systemd 作为初始化系统,因此网络服务的启动方式也发生了根本性的变化,本文将详细介绍在 CentOS 7 中启动网络的多种方法、核心配置文件以及常见问题的排查思路,帮助用户全面掌握 centos 7 启动网络 的相关技能。

使用 systemctl 管理网络服务
systemctl 是 systemd 的主命令行工具,用于管理系统服务,在 CentOS 7 中,网络服务由 network 服务(传统网络脚本)和 NetworkManager 服务(动态网络管理)共同管理,对于大多数服务器环境,使用 systemctl 来管理 network 服务是最直接和推荐的方式。
启动网络服务
要立即启动网络服务,可以执行以下命令,该命令会读取 /etc/sysconfig/network-scripts/ 目录下的配置文件,并激活所有配置为开机启动(ONBOOT=yes)的网络接口。
sudo systemctl start network
设置网络服务开机自启
为了让服务器在重启后网络能够自动连接,必须将网络服务设置为开机自启,这是确保服务器远程可管理性的关键一步。
sudo systemctl enable network
执行后,系统会创建相应的符号链接,确保在下次启动时自动运行此服务。
查看网络服务状态
检查网络服务是否正在运行,以及查看最近的日志输出,可以使用 status 子命令。
systemctl status network
输出结果会显示服务是否处于 active (running) 状态,并会列出加载的单元文件以及最近的几行日志,这对于快速判断问题非常有帮助。
使用 nmcli 管理网络连接
NetworkManager 是一个强大的网络管理工具,它提供了命令行接口 nmcli,允许用户更精细地控制网络连接。nmcli 直接操作连接配置,比 systemctl start network 更具针对性。

查看所有网络连接
列出系统中所有可用的网络连接配置。
nmcli connection show
该命令会显示一个列表,其中包括连接的名称(NAME)、UUID、类型(TYPE)和设备(DEVICE)。
启动(UP)一个特定的网络连接
如果只想启动某一个特定的网络接口(名为 ens33 的以太网连接),可以使用以下命令,这种方式不会影响其他已停止的连接。
sudo nmcli connection up ens33
这里 ens33 是连接的名称,你可以通过 nmcli connection show 命令查找到确切的名称。
关闭(DOWN)一个网络连接
同样,可以关闭一个特定的网络连接。
sudo nmcli connection down ens33
网络配置文件详解
无论是使用 systemctl 还是 nmcli,其根本都是读取和写入网络配置文件,理解这些文件是进行高级配置和故障排查的基础,配置文件位于 /etc/sysconfig/network-scripts/ 目录下,文件名通常格式为 ifcfg-<接口名称>,ifcfg-ens33。
以下是一个典型的静态 IP 配置文件的关键参数说明:

| 参数 | 描述 | 示例值 |
|---|---|---|
TYPE |
网络接口类型 | Ethernet |
BOOTPROTO |
启动协议。none 或 static 表示静态IP,dhcp 表示动态获取IP。 |
static |
DEFROUTE |
是否将此接口设置为默认路由。 | yes |
NAME |
连接的名称,与 nmcli 中显示的名称一致。 |
Wired connection 1 |
UUID |
连接的唯一标识符。 | |
DEVICE |
网络设备的名称。 | ens33 |
ONBOOT |
核心参数,设置为 yes 表示在系统启动时激活此接口。 |
yes |
IPADDR |
静态 IP 地址。 | 168.1.100 |
NETMASK |
子网掩码。 | 255.255.0 |
GATEWAY |
默认网关地址。 | 168.1.1 |
DNS1 |
首选 DNS 服务器地址。 | 8.8.8 |
DNS2 |
备用 DNS 服务器地址。 | 114.114.114 |
IPV6_FAILURE_FATAL |
IPv6 配置失败,是否禁用该接口。 | no |
修改完这些配置文件后,需要重启网络服务或使用 nmcli 来重新加载配置使其生效。
故障排查
当网络无法启动时,可以按照以下步骤进行排查:
- 检查配置文件:确认
/etc/sysconfig/network-scripts/ifcfg-<接口>文件中的ONBOOT参数是否为yes,这是最常见的问题。 - 检查服务状态:使用
systemctl status network和systemctl status NetworkManager查看服务是否有报错信息。 - 查看详细日志:使用
journalctl -u network.service或journalctl -u NetworkManager查看服务的详细日志,通常会包含失败的具体原因。 - 检查物理连接:确保网线已插好,网卡指示灯正常。
- 防火墙与 SELinux:在极端情况下,防火墙或 SELinux 的错误配置也可能影响网络初始化,可以临时关闭它们进行测试。
通过以上方法的组合使用,可以有效地在 CentOS 7 中管理网络服务,解决 centos 7 启动网络 过程中遇到的大部分问题。
相关问答FAQs
问题1:为什么我重启服务器后,网络没有自动连接,每次都需要手动启动?
解答: 这个问题的根本原因几乎总是网络配置文件中的 ONBOOT 参数设置不正确,请检查 /etc/sysconfig/network-scripts/ 目录下对应你的网络接口的配置文件(ifcfg-ens33),找到 ONBOOT 这一行,确保其值为 yes。ONBOOT=yes 的作用是告诉系统在启动过程中自动激活这个网络接口,如果设置为 no,系统启动时就会跳过它,导致需要手动执行 systemctl start network 或 nmcli connection up <接口名> 来启动网络,修改后保存文件,下次重启时网络就会自动连接了。
问题2:systemctl start network 和 nmcli connection up <接口名> 这两个命令有什么区别?
解答: 这两个命令的主要区别在于作用范围和管理对象。
systemctl start network:这是一个服务级别的命令,它启动的是network.service这个系统服务,这个服务会遍历/etc/sysconfig/network-scripts/目录下的所有配置文件,并尝试激活所有ONBOOT=yes的网络接口,它是一个“批量”操作,影响的是整个网络服务子系统。nmcli connection up <接口名>:这是一个连接级别的命令,它直接操作NetworkManager中的特定连接配置,它只会启动你指定的那一个网络连接(ens33或eno1),而不会影响其他任何网络接口,这种方式更精确、更灵活,适合在需要单独控制某个网络接口(如重启一个网卡、切换网络连接)时使用。
systemctl 管理的是“网络服务”这个整体,而 nmcli 管理的是“网络连接”这个个体,在日常运维中,推荐使用 systemctl 来管理服务的开机自启,使用 nmcli 来进行临时的、精细化的网络接口操作。