十六、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 成为了默认的网络管理服务。它是一个动态的网络控制器,能够自动管理网络设备和连接。

bash 复制代码
# 查看 NetworkManager 服务状态
systemctl status NetworkManager

二、通用网络配置工具

nmclinmtuiNetworkManager 提供的标准配置工具,它们在所有使用 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):

bash 复制代码
# 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 命令并回车。

bash 复制代码
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 后,回到命令行,使用标准命令验证你的新网络配置是否已成功应用。

bash 复制代码
ip a
ping www.baidu.com

三、CentOS 7 传统网络配置

在 CentOS 7 中,除了使用 nmcli/nmtui,最常用的网络配置方式还是直接编辑传统的 ifcfg- 配置文件。

步骤一:定位并备份配置文件

  • 网络配置文件位于 /etc/sysconfig/network-scripts/ 目录下。
  • 文件名通常以 ifcfg- 开头,后面跟着你的网卡名称。
bash 复制代码
# 备份配置文件
cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens33.bak

步骤二:编辑配置文件

bash 复制代码
vim /etc/sysconfig/network-scripts/ifcfg-ens33

核心配置参数详解:

ini 复制代码
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 服务才能使配置生效。

bash 复制代码
systemctl restart network

四、CentOS 8配置文件

CentOS 8 虽然也兼容 ifcfg- 格式 (需要安装 network-scripts 包),但其原生且推荐的配置文件格式是 Keyfile

步骤一:定位配置文件

配置文件位于 /etc/NetworkManager/system-connections/ 目录下。

文件名通常是连接的名称,以 .nmconnection 结尾,如:

text 复制代码
ens33.nmconnection

步骤二:编辑配置文件

bash 复制代码
vim /etc/NetworkManager/system-connections/ens33.nmconnection

Keyfile 格式详解:

以下示例配置了一个静态 IP 的以太网连接:

ini 复制代码
[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 重新加载:

bash 复制代码
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 键。

步骤一:找到并备份配置文件

bash 复制代码
ls /etc/netplan/
# 假设找到 01-netcfg.yaml
cp /etc/netplan/01-netcfg.yaml /etc/netplan/01-netcfg.yaml.bak

步骤二:编辑配置文件

bash 复制代码
vim /etc/netplan/01-netcfg.yaml

DHCP (动态获取) 配置示例:

yaml 复制代码
network:
  version: 2
  ethernets:
    ens33:
      dhcp4: true

静态IP 配置示例 (将 ens33 配置为 192.168.1.100/24):

yaml 复制代码
network:
  version: 2
  ethernets:
    ens33:
      # 关闭 DHCP
      dhcp4: false
      # 设置 IP 地址和子网掩码 (CIDR 格式)
      addresses: [192.168.1.100/24]
      # 设置网关 (在新版 netplan 中,推荐使用 routes)
      routes:
        - to: default
          via: 192.168.1.1
      # 设置 DNS 服务器
      nameservers:
        addresses: [8.8.8.8, 114.114.114.114]

步骤三:应用 netplan 配置

修改并保存 YAML 文件后,使用 netplan apply 命令应用配置。

bash 复制代码
netplan apply

netplan apply 会验证配置的语法,如果有错误会提示,不会让你的网络立即中断。

六、主机名配置

为服务器设置一个有意义的主机名是良好的管理习惯。

方法一:使用 hostnamectl (推荐,所有现代发行版通用)

bash 复制代码
# 查看当前主机名信息
hostnamectl
# 设置新的主机名 (立即生效,无需重启)
hostnamectl set-hostname node1.example.com

方法二:直接修改配置文件 (传统方法)

bash 复制代码
# 修改主机名
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 的完整命令序列。

答案与解析

答案一:

bash 复制代码
ip a

答案二:

/etc/sysconfig/network-scripts/ifcfg-eth0

答案三:

ONBOOT=yes

答案四:

bash 复制代码
nmcli con show --active

答案五:

bash 复制代码
nmcli con mod ens34 ipv4.addresses 10.0.0.100/24

解析: /24 是 CIDR 表示法,等同于子网掩码 255.255.255.0

答案六:
空格 (通常是2个或4个,但必须保持一致),绝不能是 Tab 键。

答案七:

bash 复制代码
netplan apply

解析: netplan apply 会验证配置并将其应用到系统的网络后端。

答案八:

nmtui 提供了一个基于文本的用户界面 (TUI),用于简化 NetworkManager 的网络配置,对新手或不习惯命令行的用户非常友好。

答案九:

bash 复制代码
hostnamectl set-hostname web-server-01

答案十:

bash 复制代码
ip r | grep default

答案十一:

/etc/resolv.conf

解析: 这个文件包含了域名解析器 (resolver) 所使用的DNS服务器地址。

答案十二:

它很可能是一个 PCI § 总线 上的以太网 (en) 设备,位于总线3 (3)、插槽0 (s0)。

答案十三:

推荐使用 netplan apply

答案十四:

格式叫 Keyfile ,位于 /etc/NetworkManager/system-connections/ 目录下。

答案十五:

bash 复制代码
# 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教程

相关推荐
小小的木头人4 小时前
APT 安装方式(适合生产环境)Zabbix 6.4 LTS
运维·zabbix
就是ping不通的蛋黄派4 小时前
CentOS7 部署主从复制MariaDB数据库
网络·1024程序员节
j_xxx404_4 小时前
Linux:权限(完结)|权限管理|修改权限chmod chown charp|文件类型|拓展
linux·运维·服务器
独行soc4 小时前
2025年渗透测试面试题总结-215(题目+回答)
网络·安全·web安全·adb·渗透测试·1024程序员节·安全狮
☆璇4 小时前
【Linux】应用层协议HTTP
网络·网络协议·http·1024程序员节
板鸭〈小号〉4 小时前
应用层自定义协议与序列化
运维·服务器·网络·1024程序员节
报错小能手4 小时前
项目——基于C/S架构的预约系统平台(2)
linux·c语言·笔记·学习·架构
Wang's Blog5 小时前
Linux小课堂: CentOS 7 Minimal 服务器安装与网络配置实战详解
linux·服务器·centos
go_bai5 小时前
Linux_基础IO(2)
linux·开发语言·经验分享·笔记·学习方法·1024程序员节