十六、Linux网络配置
在 Linux 网络配置中,无论是 CentOS 7、CentOS 8 还是 Ubuntu等等,Linux 网络配置都直接关系到主机能否稳定提供 Web 服务、访问数据库、进行远程管理。
思维导图



一、网络基础概念与服务
1. Linux 网络接口名称规则
从 RHEL 7 / CentOS 7 开始,Linux 引入了一套可预测的网络接口命名方案,以取代传统的 eth0, eth1 等可能在重启后发生变化的名称。
新命名规则解析:
en: 代表以太网 (Ethernet)。
wl: 代表无线局域网 (WLAN)。
ww: 代表无线广域网 (WWAN)。
名称的第二部分表示设备类型:
o<N>: 板载设备 (on-board),N是索引号。
s<N>: 热插拔插槽 (hotplug slot),N是槽位号。
p<B>s<S>: PCI总线设备,B是总线号,S是插槽号。
示例:
eno1(第一个板载网卡),enp2s0(PCI总线2、插槽0上的网卡)
2. NetworkManager 服务
在大多数现代 Linux 桌面和服务器发行版中 (包括 CentOS 7/8, Ubuntu),NetworkManager 成为了默认的网络管理服务。它是一个动态的网络控制器,能够自动管理网络设备和连接。
# 查看 NetworkManager 服务状态
systemctl status NetworkManager

二、通用网络配置工具
nmcli 和 nmtui 是 NetworkManager 提供的标准配置工具,它们在所有使用 NetworkManager 的系统上 (如 CentOS 7/8, Fedora, Ubuntu Desktop) 用法一致。
1. nmcli:强大的命令行接口
nmcli (NetworkManager Command-Line Interface) 是功能最强大、最高效且最适合脚本化的网络配置工具。
核心 nmcli 命令
| 命令 | 作用 | 示例 |
|---|---|---|
nmcli connection show | 显示所有网络连接。 | nmcli con show |
nmcli device status | 显示所有网络设备的状态。 | nmcli dev status |
nmcli con mod <conn> | 修改一个连接的配置。 | nmcli con mod ens33 ... |
nmcli con up <conn> | 激活一个连接。 | nmcli con up ens33 |
nmcli con down <conn> | 停用一个连接。 | nmcli con down ens33 |
nmcli con reload | 重新加载所有连接配置文件。 | nmcli con reload |
实战步骤 (将 ens33 配置为静态IP 192.168.1.91/24):
# 1. 设置IP地址和子网掩码 (/24 等同于 255.255.255.0)
nmcli con mod ens33 ipv4.addresses 192.168.121.170/24# 2. 设置网关
nmcli con mod ens33 ipv4.gateway 192.168.121.2# 3. 设置DNS服务器 (可以设置多个,用空格隔开)
nmcli con mod ens33 ipv4.dns "8.8.8.8 114.114.114.114"# 4. 将获取IP的方式从自动(dhcp)改为手动(manual)
nmcli con mod ens33 ipv4.method manual# 5. (可选) 设置连接开机自启
nmcli con mod ens33 connection.autoconnect yes# 6. 应用更改
nmcli con up ens33
验证配置:ip a, ip r, cat /etc/resolv.conf。


2. nmtui:友好的文本图形界面
对于不熟悉 nmcli 命令的用户,nmtui (NetworkManager Text User Interface) 提供了一个非常友好的文本图形界面,大大降低了网络配置的门槛。你无需记忆复杂的命令参数,只需通过键盘方向键和 Tab 键即可完成所有基本配置。
启动 nmtui
在任何命令行终端中,直接输入 nmtui 命令并回车。
nmtui
操作流程详解:
步骤一:选择操作
启动后,你会看到一个简洁的主菜单。使用上下方向键移动光标,选择 “编辑连接”,然后按回车键确认。
编辑连接: 修改现有连接或创建新连接。
启用连接: 激活或停用一个连接。
设置系统主机名: 修改主机名。

步骤二:选择要编辑的网络接口
进入 “编辑连接” 菜单后,系统会列出所有 NetworkManager 当前管理的网络连接 (通常对应你的物理网卡)。
使用上下方向键选择你想要配置的以太网接口 (例如
ens33)
然后使用 Tab 键将光标移动到右侧的<编辑...>按钮上,按回车键进入详细配置界面

步骤三:配置静态 IP 地址
这是最核心的配置步骤。
1.切换为手动模式: 在 “编辑连接” 界面中,找到 “IPv4 配置” 行。按回车键将其修改为 <手动>。
2.添加 IP 地址、网关和 DNS:
使用 Tab 键或方向键移动光标到相应输入框
在 “地址 (Addresses)” 旁选择<添加...>并输入 IP地址/掩码 (如192.168.121.131/24)
在 “网关 (Gateway)” 输入框中填入网关地址
在 “DNS 服务器 (DNS servers)” 处添加DNS服务器地址


3.确保开机自启:
检查并确保 “自动连接” 前面的 [X] 被勾选。
步骤四:保存配置
所有信息填写完毕后,使用 Tab 键 将光标一直移动到屏幕最下方的 <确定 (OK)> 按钮上,然后按回车保存配置。

步骤五:返回并激活连接
保存后,会返回到连接列表界面。
使用 Tab 键移动到
<返回 (Back)>按钮并按回车,回到主菜单
在主菜单选择 “启用连接”
在连接列表中,先选中你的网卡连接 (如ens33) 并按回车 停用 (Deactivate) 它,然后再重新选中并按回车 启用 它
最后,返回主菜单选择 “退出”
步骤六:验证配置
退出 nmtui 后,回到命令行,使用标准命令验证你的新网络配置是否已成功应用。
ip a
ping www.baidu.com
三、CentOS 7 传统网络配置
在 CentOS 7 中,除了使用 nmcli/nmtui,最常用的网络配置方式还是直接编辑传统的 ifcfg- 配置文件。
步骤一:定位并备份配置文件
- 网络配置文件位于
/etc/sysconfig/network-scripts/目录下。 - 文件名通常以
ifcfg-开头,后面跟着你的网卡名称。
# 备份配置文件
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak
步骤二:编辑配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
核心配置参数详解:
TYPE=Ethernet
BOOTPROTO=static
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.142.131
NETMASK=255.255.255.0
GATEWAY=192.168.142.2
DNS1=192.168.142.2
DNS2=8.8.8.8
步骤三:重启网络服务
修改完成后,必须重启 network 服务才能使配置生效。
systemctl restart network
四、CentOS 8配置文件
CentOS 8 虽然也兼容 ifcfg- 格式 (需要安装 network-scripts 包),但其原生且推荐的配置文件格式是 Keyfile。
步骤一:定位配置文件
配置文件位于
/etc/NetworkManager/system-connections/目录下。
文件名通常是连接的名称,以.nmconnection结尾,如:
ens33.nmconnection
步骤二:编辑配置文件
vim /etc/NetworkManager/system-connections/ens33.nmconnection
Keyfile 格式详解:
以下示例配置了一个静态 IP 的以太网连接:
[connection]
id=ens33
uuid=12345678-90ab-cdef-1234-567890abcdef
type=ethernet
interface-name=ens33
autoconnect=true[ethernet]
mac-address=00:0c:29:1a:2b:3c
cloned-mac-address=preserve[ipv4]
# 将 method 从 auto 修改为 manual
method=manual
# address1 的格式是 IP/掩码,网关
address1=192.168.1.91/24,192.168.1.1
# dns 的格式是 IP;IP;...
dns=8.8.8.8;114.114.114.114;
ignore-auto-dns=true[ipv6]
method=auto
addr-gen-mode=stable-privacy[proxy]
关键字段说明
[connection]: 连接的基本信息
id: 连接名称(对应文件名,保持一致)。
uuid: 唯一标识符,可以使用nmcli con show获取。
type: 网络类型,这里是ethernet。
interface-name: 网卡设备名称,例如ens33。
[ethernet]: 以太网相关配置
mac-address: 指定网卡的MAC地址。
cloned-mac-address=preserve: 保持默认,不做 MAC 地址克隆。
[ipv4]: 核心配置部分。
method=manual: 必须设置为手动。
address1=...: 同时定义了 IP、子网掩码和网关。
dns=...: 定义 DNS 服务器,用分号隔开。
ignore-auto-dns=true: 禁用 DHCP 提供的 DNS。
[ipv6]: IPv6 设置。
method=auto: 自动获取 IPv6 地址。
addr-gen-mode=stable-privacy: 启用隐私地址。
[proxy]: 代理配置,通常留空。
步骤三:重新加载配置
修改文件后,必须让 NetworkManager 重新加载:
nmcli con reload
nmcli con up ens33
五、Ubuntu Server 网络配置
从 Ubuntu 17.10 开始,服务器版本默认采用 netplan 作为网络配置的前端工具。netplan 使用简洁的 YAML 格式来描述网络接口。
a. netplan 配置文件
配置文件位于
/etc/netplan/目录下
文件名通常是01-netcfg.yaml,50-cloud-init.yaml或类似
YAML 语法:非常严格,必须使用 空格 (通常是2个) 进行缩进,不能使用 Tab 键。
步骤一:找到并备份配置文件
ls /etc/netplan/
# 假设找到 01-netcfg.yaml
cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak
步骤二:编辑配置文件
vim /etc/netplan/01-netcfg.yaml
DHCP (动态获取) 配置示例:
network:version: 2ethernets:ens33:dhcp4: true
静态IP 配置示例 (将 ens33 配置为 192.168.1.100/24):
network:version: 2ethernets:ens33:# 关闭 DHCPdhcp4: false# 设置 IP 地址和子网掩码 (CIDR 格式)addresses: [192.168.1.100/24]# 设置网关 (在新版 netplan 中,推荐使用 routes)routes:- to: defaultvia: 192.168.1.1# 设置 DNS 服务器nameservers:addresses: [8.8.8.8, 114.114.114.114]
步骤三:应用 netplan 配置
修改并保存 YAML 文件后,使用 netplan apply 命令应用配置。
netplan apply
netplan apply 会验证配置的语法,如果有错误会提示,不会让你的网络立即中断。
六、主机名配置
为服务器设置一个有意义的主机名是良好的管理习惯。
方法一:使用 hostnamectl (推荐,所有现代发行版通用)
# 查看当前主机名信息
hostnamectl
# 设置新的主机名 (立即生效,无需重启)
hostnamectl set-hostname node1.example.com
方法二:直接修改配置文件 (传统方法)
# 修改主机名
vim /etc/hostname
# (将文件内容替换为新的主机名)
# 此方法通常需要重启系统才能完全生效
reboot
练习题
题目一:查看网络信息
写出一条命令,只显示你系统中所有网络接口的名称和IP地址 (IPv4 和 IPv6)。
题目二:CentOS 7 配置文件
在 CentOS 7 系统中,网卡 eth0 的配置文件的完整路径是什么?
题目三:ifcfg 关键参数
在 ifcfg- 文件中,哪个参数决定了网卡是否在系统启动时自动激活?
题目四:nmcli 查看
使用 nmcli 命令查看所有活动的网络连接。
题目五:nmcli 修改IP
使用 nmcli 将连接 ens34 的IPv4地址修改为 10.0.0.100,子网掩码为 255.255.255.0。
题目六:Ubuntu netplan 语法
在 netplan 的 YAML 配置文件中,用于表示缩进的字符是什么?
题目七:Ubuntu netplan 应用
在 Ubuntu Server 中修改了 /etc/netplan/*.yaml 文件后,应该执行什么命令来让配置生效?
题目八:nmtui 的作用
nmtui 工具的主要用途是什么?
题目九:主机名
使用 hostnamectl 命令将主机名永久设置为 web-server-01。
题目十:查看默认路由
写出一条只显示默认路由 (网关) 信息的命令。
题目十一:查看DNS配置 (通用)
哪个文件通常存储了系统当前使用的 DNS 服务器地址?
题目十二:接口命名规则
一个名为 enp3s0 的网络接口,根据命名规则,它很可能是什么类型的设备?
题目十三:重启网络服务 (CentOS 7 vs Ubuntu)
在 CentOS 7 中,我们使用 systemctl restart network。在 Ubuntu Server 中,使用 netplan 修改配置后,推荐使用什么命令来应用更改?
题目十四:CentOS 8 配置文件格式
在 CentOS 8 中,NetworkManager 原生使用的配置文件格式叫什么,它们通常位于哪个目录下?
题目十五:综合应用 (CentOS 8)
请按顺序写出使用 nmcli 将连接 ens37 从DHCP 修改为静态IP 172.16.10.10/16、网关 172.16.0.1、DNS 172.16.0.1 的完整命令序列。
答案与解析
答案一:
ip a
答案二:
/etc/sysconfig/network-scripts/ifcfg-eth0
答案三:
ONBOOT=yes
答案四:
nmcli con show --active
答案五:
nmcli con mod ens34 ipv4.addresses 10.0.0.100/24
解析:
/24是 CIDR 表示法,等同于子网掩码255.255.255.0。
答案六:
空格 (通常是2个或4个,但必须保持一致),绝不能是 Tab 键。
答案七:
netplan apply
解析:
netplan apply会验证配置并将其应用到系统的网络后端。
答案八:
nmtui 提供了一个基于文本的用户界面 (TUI),用于简化 NetworkManager 的网络配置,对新手或不习惯命令行的用户非常友好。
答案九:
hostnamectl set-hostname web-server-01
答案十:
ip r | grep default
答案十一:
/etc/resolv.conf
解析: 这个文件包含了域名解析器 (resolver) 所使用的DNS服务器地址。
答案十二:
它很可能是一个 PCI § 总线上的以太网 (en) 设备,位于总线3 (3)、插槽0 (s0)。
答案十三:
推荐使用 netplan apply。
答案十四:
格式叫 Keyfile,位于 /etc/NetworkManager/system-connections/ 目录下。
答案十五:
# 1. 设置IP地址
nmcli con mod ens37 ipv4.addresses 172.16.10.10/16
# 2. 设置网关
nmcli con mod ens37 ipv4.gateway 172.16.0.1
# 3. 设置DNS
nmcli con mod ens37 ipv4.dns "172.16.0.1"
# 4. 切换为手动模式
nmcli con mod ens37 ipv4.method manual
# 5. 应用配置
nmcli con up ens37

日期:2025年10月23日
专栏:Linux教程
