第四章 Linux 网络基础(Rocky Linux 8.10)
适用环境:Rocky Linux 8.10、NetworkManager、VMware Workstation
主线原则:使用
nmcli和ip管理网络;ifconfig、netstat、ifcfg仅作为旧课程内容对照。
学习目标
- 理解 IP 地址、子网掩码、网关和 DNS 的作用。
- 能查看网卡、IP 地址、路由和端口状态。
- 能使用
nmcli或nmtui配置静态 IP 和 DHCP。 - 能配置并验证主机名、DNS 与网络连通性。
- 能区分 VMware 的桥接、NAT 和仅主机模式。
- 能按固定顺序定位常见网络故障。
一、网络参数基础
1. IP 地址
IP 地址用于在网络中标识一台主机,例如:
text
192.168.10.100/24
其中 192.168.10.100 是主机地址,/24 等价于子网掩码 255.255.255.0。
2. 子网掩码
子网掩码用于区分"网络地址"和"主机地址"。
192.168.10.100/24所在网络为192.168.10.0/24。- 同一子网内的主机通常可以直接通信。
- 不同子网之间的通信需要经过网关和路由。
3. 默认网关
当目标地址不在本机直连网络中时,数据包交给默认网关转发。
text
本机:192.168.10.100/24
网关:192.168.10.1
如果网关不可达,通常表现为"能访问同网段主机,但不能访问互联网"。
4. DNS
DNS 负责把域名解析为 IP 地址,例如把 www.example.com 解析为具体 IP。
- IP 和网关正确,但 DNS 错误:可以
ping公共 IP,不能按域名访问。 - DNS 配置错误也是"网页打不开"但"网络看似正常"的常见原因。
5. 静态 IP 与 DHCP
| 方式 | 特点 | 适用场景 |
|---|---|---|
| 静态 IP | 地址固定,需要手动指定掩码、网关和 DNS | 服务器、实验环境 |
| DHCP | 由 DHCP 服务器自动分配网络参数 | 普通客户端、虚拟机 NAT 网络 |
6. 连接配置和物理网卡不是一回事
Rocky 8.10 使用 NetworkManager 管理网络。
device:实际网卡,例如ens160、ens33。connection:保存网络参数的配置档案,例如Wired connection 1、lan-static。
同一块网卡可以保存多个连接配置,但同一时间通常只激活其中一个。
二、Rocky Linux 8.10 网络配置方式
1. 查看网卡名称和设备状态
bash
# 查看 NetworkManager 管理的设备及其连接状态
nmcli device status
# 查看网卡名称、管理状态、链路层状态和 MAC 地址
ip -br link
ip -br link 的常见状态如下:
| 标记 | 含义 |
|---|---|
UP |
网卡已在管理层面启用 |
LOWER_UP |
链路层通信正常,通常表示物理链路或虚拟机链路已经连通 |
缺少 LOWER_UP |
可能未连接网线、虚拟机网络未连接或链路异常 |
NO-CARRIER |
未检测到载波信号 |
DOWN |
网卡处于管理关闭状态 |
BROADCAST、MULTICAST 等属于网卡支持的能力标记,并不代表当前一定能够通信。
nmcli device status 中常见的设备状态:
| 状态 | 含义 |
|---|---|
connected |
网卡已激活一个连接配置 |
disconnected |
网卡未激活连接配置 |
unmanaged |
网卡不受 NetworkManager 管理 |
unavailable |
设备当前不可用 |
查看已有连接配置:
bash
# 查看全部连接配置
nmcli connection show
# 查看当前已经激活的连接配置
nmcli connection show --active
需要区分:
device是实际网卡,例如ens160。connection是保存 IP、网关、DNS 等参数的配置档案。
2. 使用 ip 命令临时配置 IP
先查看当前地址:
bash
ip addr show
# 简要显示网卡状态、IPv4 地址和 IPv6 地址
ip -br addr
临时添加地址:
bash
sudo ip addr add 192.168.171.190/24 dev ens160
# 网卡已启用时不需要重复执行此命令
sudo ip link set ens160 up
查看配置结果:
bash
ip addr show dev ens160
ip route

输出说明:default via 192.168.171.2说明所有源IP走默认网关.2,包括刚刚新建的190,不需要临时配置网关 同网段内会走192.168.171.0/24, /24 就等于 255.255.255.0。
把它放在 IP 地址后面,意思是 "这个网段里,前 24 位是网络地址,剩下的 8 位是留给主机的地址"
如果有需要,可以临时配置默认网关:
bash
# 已有默认路由时使用 replace,避免出现"路由已存在"
sudo ip route replace default via 192.168.171.1 dev ens160
删除临时默认路由:
bash
sudo ip route del default via 192.168.171.1 dev ens160
删除临时地址:
bash
sudo ip addr del 192.168.171.148/24 dev ens160
这种方式具有以下特点:
- 执行后立即生效,不需要重启网络。
- 重启系统或重新激活 NetworkManager 连接后可能失效。
- 不会自动配置默认网关和 DNS。
- 适合测试和排错,不适合作为服务器的长期配置。
如果提示 RTNETLINK answers: File exists,通常说明该地址或相同前缀的地址已经存在,应先使用 ip addr show 检查。
3. 添加第二个地址与 label
现有笔记中的添加和删除示例地址不一致:添加的是 .148,删除的却是 .190。第二个地址应使用一个没有被占用的不同地址,并保证添加、删除时完全一致:
bash
sudo ip addr add 192.168.171.149/24 dev ens160 label ens160:1
查看地址:
bash
ip addr show dev ens160
删除第二个地址:
bash
sudo ip addr del 192.168.171.149/24 dev ens160
为什么使用 label
label 是附加在 IP 地址上的传统别名标签,例如:
text
inet 192.168.171.148/24 scope global ens160
inet 192.168.171.149/24 scope global secondary ens160:1
这里的 ens160:1 不是第二块网卡,也不是新的网络接口,而是一个便于识别和兼容旧工具的名称。
所有地址最终都属于同一块 ens160,因此共享:
- 同一个 MAC 地址。
- 同一个链路状态。
- 同一个 MTU。
- 同一块网卡的带宽。
- 同一套 ARP 和二层通信机制。
label 的主要作用是:
- 兼容类似
ifconfig ens160:1的旧式写法。 - 区分主地址和辅助地址。
- 让
ip addr show的输出更容易辨认。
现代 Linux 中可以在一张网卡上直接配置多个 IP。label 不是地址能够工作的必要条件,也不代表独立网卡、独立链路或独立带宽。使用 ip -br addr 时通常只能看到简要地址,完整标签需要执行 ip addr show 查看。
4. 临时 IP 的应用场景
临时 IP 适合验证、测试和过渡操作,常见场景包括:
-
测试静态 IP
在不修改永久配置的前提下,验证某个地址是否可通信。
-
虚拟机实验
临时增加一个同网段地址,测试路由、ARP、服务绑定和访问范围。
-
增加辅助地址
为服务迁移、接口切换或应用程序绑定测试临时增加一个地址。
-
定位网络故障
临时更换 IP,判断问题来自地址配置、网关、DNS 还是防火墙。
-
模拟虚拟 IP
临时验证某个服务能否绑定到指定地址,例如数据库、Web 服务或中间件。
-
实验环境中的手动切换
在不具备高可用组件时,临时把服务地址加到另一台虚拟机上。
临时 IP 不适合直接承担长期服务,因为系统重启或网络重新激活后可能丢失。如果需要永久增加第二个地址,应使用 NetworkManager 保存到连接配置中。
5. ifconfig 命令(旧工具)
Rocky 8.10 最小化安装通常没有 ifconfig,需要先安装:
bash
sudo dnf install -y net-tools
临时设置地址:
bash
sudo ifconfig ens160 192.168.10.200 netmask 255.255.255.0 up
注意:
ifconfig只修改当前运行状态,重启后失效。- 它不能完整配置网关和 DNS。
- 现代 Rocky 系统应优先使用
ip和nmcli。
6. 使用 nmcli 永久配置静态 IP
先确认连接名称和设备名称:
bash
nmcli -t -f NAME,DEVICE connection show
假设连接名为 Wired connection 1,网卡为 ens160:
bash
sudo nmcli connection modify "Wired connection 1" \
ipv4.method manual \
ipv4.addresses 192.168.10.100/24 \
ipv4.gateway 192.168.10.1 \
ipv4.dns "223.5.5.5 114.114.114.114" \
ipv4.ignore-auto-dns yes \
connection.autoconnect yes
# 各参数说明:
# ipv4.method manual manual 切换dhcp自动为主动
# ipv4.addresses 静态IP
# ipv4.gateway 网关
# ipv4.dns DNS解析
# ipv4.ignore-auto-dns 防止手动的DNS被dhcp覆盖
# connection.autoconnect 开机自动激活
激活配置:
bash
sudo nmcli connection up "Wired connection 1"
也可以新建一个命名更清晰的连接:
bash
sudo nmcli connection add type ethernet ifname ens160 con-name lan-static \
ipv4.method manual \
ipv4.addresses 192.168.10.100/24 \
ipv4.gateway 192.168.10.1 \
ipv4.dns "223.5.5.5 114.114.114.114" \
ipv4.ignore-auto-dns yes \
connection.autoconnect yes
sudo nmcli connection up lan-static
7. 切回 DHCP
bash
sudo nmcli connection modify "Wired connection 1" \
ipv4.method auto \
ipv4.addresses "" \
ipv4.gateway "" \
ipv4.dns "" \
ipv4.ignore-auto-dns no
sudo nmcli connection up "Wired connection 1"
8. 使用 nmtui 图形化配置
如果最小化系统没有该工具:
bash
sudo dnf install -y NetworkManager-tui
sudo nmtui
在界面中依次选择:
text
Edit a connection → 选择网卡 → IPv4 → Manual → 填写地址、网关和 DNS → OK → Activate a connection
nmtui 修改的是 NetworkManager 连接配置,效果可以持久保存。
9. 旧式 ifcfg 文件(课程对照)
Rocky 8.10 默认不再以 network-scripts 作为主要管理方式。若实验要求使用旧式文件,可以创建:
bash
sudo vim /etc/sysconfig/network-scripts/ifcfg-ens160
静态地址示例:
ini
TYPE=Ethernet
NAME=ens160
DEVICE=ens160
BOOTPROTO=none
ONBOOT=yes
IPADDR=192.168.10.100
PREFIX=24
GATEWAY=192.168.10.1
DNS1=223.5.5.5
DNS2=114.114.114.114
重新加载并激活:
bash
sudo nmcli connection reload
sudo nmcli connection up ens160
如果在 Rocky 8.10 中上述方式不可用,不要继续照搬 CentOS 6 的 service network restart,统一改用 nmcli 配置。
三、Rocky Linux 8.10 静态 IP 配置实例
假设实验环境如下:
| 参数 | 示例值 |
|---|---|
| 网卡 | ens160 |
| IP 地址 | 192.168.10.100 |
| 子网掩码/前缀 | 255.255.255.0 / 24 |
| 网关 | 192.168.10.1 |
| DNS1 | 223.5.5.5 |
| DNS2 | 114.114.114.114 |
| 连接名称 | lan-static |
1. 创建配置
bash
sudo nmcli connection add type ethernet ifname ens160 con-name lan-static \
ipv4.method manual \
ipv4.addresses 192.168.10.100/24 \
ipv4.gateway 192.168.10.1 \
ipv4.dns "223.5.5.5 114.114.114.114" \
ipv4.ignore-auto-dns yes \
connection.autoconnect yes
2. 激活配置
bash
sudo nmcli connection up lan-static
3. 检查配置是否生效
bash
nmcli connection show --active
nmcli device status
ip -br addr
ip route
cat /etc/resolv.conf #查看DNS
4. 分层测试连通性
bash
# 本机链路和地址
ip -br link
# 网关是否可达
ping -c 4 192.168.10.1
# 公网 IP 是否可达,用来判断路由和互联网出口
ping -c 4 223.5.5.5
# 域名解析是否正常
getent hosts www.baidu.com
dig +short www.baidu.com
判断思路:
- 网关不通:先检查 IP、掩码、网关和虚拟机网络模式。
- 网关通但公网 IP 不通:检查网关、路由、防火墙和宿主机网络。
- 公网 IP 通但域名不通:重点检查 DNS。
- 地址和网关都正确但连接配置未激活:运行
nmcli connection up。
四、常用网络命令
1. 查看地址、链路和路由
bash
ip addr
ip -br addr
ip link
ip route
ip route get 8.8.8.8
ip neigh
旧命令对照:
| 功能 | 旧命令 | Rocky 8.10 推荐命令 |
|---|---|---|
| 查看 IP | ifconfig |
ip addr |
| 查看路由 | route -n |
ip route |
| 启停网卡 | ifup/ifdown |
nmcli device connect/disconnect 或 ip link |
| 查看邻居表 | arp -n |
ip neigh |
2. 测试连通性
bash
ping -c 4 192.168.10.1
ping -c 4 -W 2 223.5.5.5
参数说明:
-c 4:发送 4 个 ICMP 包。-W 2:等待响应的超时时间,单位为秒。
即使 ping 失败,也不一定代表目标主机关机,因为目标防火墙可能禁止 ICMP。
3. 路由跟踪
bash
sudo dnf install -y traceroute
traceroute -n 8.8.8.8
-n 表示直接显示 IP,不进行反向域名解析,速度更快。
4. 查看监听端口和网络连接
bash
ss -tulnp
ss -tuln
ss -tan
常用选项:
-t:TCP。-u:UDP。-l:仅显示监听状态。-n:以数字形式显示 IP 和端口。-p:显示进程信息,通常需要root权限。
旧课程中的命令对照:
bash
netstat -tulnp
Rocky 8.10 应优先使用 ss。
5. 探测远程端口
bash
sudo dnf install -y nmap-ncat
nc -vz 192.168.10.100 80
也可以使用:
bash
curl -I http://192.168.10.100 #默认走80
telnet 已不安全,主要用于旧课程演示。端口测试更推荐 nc 或 curl。
6. DNS 查询
安装查询工具:
bash
sudo dnf install -y bind-utils
常用命令:
bash
dig www.baidu.com
dig +short www.baidu.com
dig @223.5.5.5 www.baidu.com
getent hosts www.baidu.com
dig @服务器地址 可以直接测试指定 DNS 服务器,便于判断是本机 DNS 配置错误还是 DNS 服务不可用。
7. 下载文件
bash
wget -P /tmp https://example.com/file.tar.gz
wget -O /tmp/file.tar.gz https://example.com/file.tar.gz
curl -O https://example.com/file.tar.gz
-P:指定下载目录。-O:指定保存文件名。- 下载目录受用户权限限制。
五、主机名和 DNS 配置
1. 查看主机名
bash
hostname
hostnamectl status
2. 永久修改主机名
bash
sudo hostnamectl set-hostname rocky-node01
重新登录终端后,提示符通常会自动更新。
3. 临时修改主机名
bash
sudo hostname rocky-temp
临时修改不会持久保存,实验完成后应使用 hostnamectl 恢复正确名称。
4. 配置本机名称映射
编辑 /etc/hosts:
bash
sudo vim /etc/hosts
添加:
text
192.168.10.100 rocky-node01 rocky-node01.local
/etc/hosts 适合配置内部实验主机名映射,不替代公共 DNS。
5. 查看 DNS 配置
bash
cat /etc/resolv.conf
nmcli connection show "lan-static" | grep ipv4.dns
Rocky 8.10 中建议通过 NetworkManager 配置 DNS:
bash
sudo nmcli connection modify "lan-static" \
ipv4.dns "223.5.5.5 114.114.114.114" \
ipv4.ignore-auto-dns yes
sudo nmcli connection up "lan-static"
不要直接把 /etc/resolv.conf 当作唯一永久配置,因为该文件可能被网络管理程序重新生成。
六、VMware 虚拟机网络模式
1. 三种网络模式
| 模式 | VMware 设备 | 地址来源 | 能否访问互联网 | 局域网设备能否访问虚拟机 |
|---|---|---|---|---|
| 桥接 | VMnet0/真实网卡 | 局域网 DHCP 或静态地址 | 通常可以 | 通常可以 |
| NAT | VMnet8 | VMware DHCP 或 NAT 子网静态地址 | 通常可以 | 通常不可以,需端口转发 |
| 仅主机 | VMnet1 | 仅主机网络 DHCP 或静态地址 | 默认不可以 | 只可访问宿主机 |
2. 桥接模式
虚拟机会像局域网中的另一台计算机一样工作。
- 可以使用所在局域网的 DHCP。
- 静态 IP 应与宿主机所在物理网络同一网段。
- 企业网络或无线网络可能启用了客户端隔离,导致桥接模式无法正常通信。
示例:
text
宿主机:192.168.10.20/24
虚拟机:192.168.10.100/24
网关:192.168.10.1
3. NAT 模式
虚拟机通过 VMware 的 NAT 服务访问外部网络,常用设备为 VMnet8。
- 推荐实验时使用 DHCP,配置简单。
- 如果需要静态地址,必须使用
VMnet8对应子网的地址。 - VMware NAT 网关通常是对应网段中的
.2地址,应以虚拟网络编辑器中的实际配置为准。 - 外部设备通常不能主动访问虚拟机;必要时配置端口转发。
4. 仅主机模式
常用设备为 VMnet1。
- 默认只能在虚拟机和宿主机之间通信。
- 静态地址应配置在
VMnet1子网内。 - 默认没有互联网出口;需要额外配置宿主机网络共享或路由。
5. 配置后的检查顺序
bash
nmcli device status
ip -br addr
ip route
ping -c 4 网关
先确认虚拟机的 IP、掩码和网关与 VMware 网络模式匹配,再测试外部连通性。
七、虚拟机克隆后的网络处理
克隆虚拟机后,最常见的问题是 MAC、连接配置、IP 或主机名冲突。
1. 克隆后的检查步骤
- 在 VMware 中为克隆机重新生成 MAC 地址。
- 启动克隆机,查看设备名称和地址。
- 修改主机名。
- 配置唯一的静态 IP。
- 删除或重建指向旧网卡、旧 MAC、旧连接名称的 NetworkManager 配置。
bash
nmcli device status
ip -br link
ip -br addr
nmcli connection show
hostnamectl status
2. 重建连接配置
如果旧连接无法绑定新网卡,可以删除旧连接并新建:
bash
sudo nmcli connection delete "旧连接名"
sudo nmcli connection add type ethernet ifname ens160 con-name lan-static \
ipv4.method manual \
ipv4.addresses 192.168.10.101/24 \
ipv4.gateway 192.168.10.1 \
ipv4.dns "223.5.5.5 114.114.114.114" \
ipv4.ignore-auto-dns yes \
connection.autoconnect yes
sudo nmcli connection up lan-static
3. 旧课程命令的版本差异
CentOS 6 时代常用以下方式处理克隆网卡:
bash
rm -rf /etc/udev/rules.d/70-persistent-net.rules
Rocky 8.10 通常没有这个文件,不能把它当作标准处理步骤。克隆后的网络问题应重点检查:
- VMware 中的 MAC 地址是否重复。
- NetworkManager 连接是否仍绑定旧网卡。
- 静态 IP 是否冲突。
- 主机名和连接名称是否重复。
- 旧式
ifcfg文件中的UUID是否仍被复用。
八、网络故障排查
1. 固定排查顺序
text
网卡是否被识别
→ 网卡是否启用
→ 是否取得 IP
→ 是否配置默认网关
→ 网关是否可达
→ 公网 IP 是否可达
→ DNS 是否正常
→ 目标端口是否监听
→ 防火墙是否放行
2. 按现象判断
| 现象 | 优先检查 | 常用命令 |
|---|---|---|
| 没有网卡或显示 disconnected | 网卡驱动、VMware 连接、连接配置 | nmcli device status |
| 有网卡但没有 IP | IPv4 方法、DHCP、配置是否激活 | nmcli connection show、ip -br addr |
| 有 IP 但没有默认路由 | 网关配置 | ip route |
| 网关不通 | IP/掩码/网关是否同网段、VMware 模式 | ping、ip -br addr |
| 能 ping IP 但不能访问域名 | DNS | cat /etc/resolv.conf、dig |
| 本机服务无法访问 | 服务监听地址和端口、防火墙 | ss -tulnp、firewall-cmd |
3. 查看 NetworkManager 状态和日志
bash
systemctl status NetworkManager
journalctl -u NetworkManager --since "10 minutes ago"
重新加载连接:
bash
sudo nmcli connection reload
激活指定连接:
bash
sudo nmcli connection up "连接名"
如果正在通过 SSH 远程管理服务器,请谨慎重启 NetworkManager。重启过程可能短暂断开网络连接,最好保留控制台访问方式。
4. 检查本机服务端口
bash
sudo ss -tulnp
ss -lntp
curl -I http://127.0.0.1
如果服务只监听 127.0.0.1,远程主机无法访问。需要让服务监听 0.0.0.0 或指定网卡地址。
5. 检查防火墙
bash
sudo firewall-cmd --state
sudo firewall-cmd --list-all
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --reload
只有确认服务正常监听后,才需要继续排查防火墙。
6. DNS 故障的快速验证
bash
ping -c 4 223.5.5.5
dig @223.5.5.5 www.baidu.com
cat /etc/resolv.conf
getent hosts www.baidu.com
如果 ping 223.5.5.5 正常,但 dig www.baidu.com 失败,通常问题在 DNS 配置或 DNS 服务器。
九、命令速查表
| 任务 | Rocky 8.10 命令 |
|---|---|
| 查看网卡状态 | nmcli device status |
| 查看连接配置 | nmcli connection show |
| 激活连接 | nmcli connection up 连接名 |
| 查看 IP | ip -br addr |
| 查看路由 | ip route |
| 查看邻居表 | ip neigh |
| 临时添加 IP | ip addr add IP/前缀 dev 网卡 |
| 测试连通性 | ping -c 4 目标 |
| 路由跟踪 | traceroute -n 目标 |
| 查看端口 | ss -tulnp |
| 测试远程端口 | nc -vz IP 端口 |
| 查询域名 | dig +short 域名 |
| 永久修改主机名 | hostnamectl set-hostname 名称 |
| 查看防火墙 | firewall-cmd --list-all |
| 查看网络日志 | journalctl -u NetworkManager |
十、实验任务
实验一:静态 IP 配置
- 使用
nmcli device status找到网卡名称和连接名称。 - 为虚拟机配置静态 IP、网关和两个 DNS。
- 激活连接。
- 使用
ip addr和ip route验证地址及路由。 - 依次测试网关、公网 IP 和域名。
实验二:临时地址验证
- 使用
ip addr add临时添加第二个地址。 - 使用
ip addr del删除该地址。 - 重启或重新激活网络,观察地址是否消失。
实验三:服务端口检查
- 启动一个网络服务。
- 使用
ss -tulnp查看监听地址和端口。 - 使用
curl或nc测试访问。 - 配置防火墙放行端口并再次验证。
实验四:虚拟机网络模式对比
- 分别在 NAT 和桥接模式下查看虚拟机 IP、网关。
- 记录两种模式下的连通性差异。
- 切换到仅主机模式,观察是否还能访问互联网。
易错点总结
- Rocky 8.10 的主线是 NetworkManager,不是
network.service。 ifconfig是临时工具,不能代替完整连接配置。- 网卡名不一定是
eth0,配置前必须先确认device。 connection是配置档案,device是实际网卡,两者要区分。- 配置 IP 后必须确认连接已激活,并检查默认路由。
/etc/resolv.conf可能被自动生成,不应把它当作唯一 DNS 配置入口。ping通只能说明 ICMP 可达,不能说明目标端口开放。- 服务监听
127.0.0.1时,远程主机无法访问。 - VMware 的 NAT、桥接和仅主机模式使用不同网段,静态 IP 必须与模式匹配。
- 克隆虚拟机后,MAC、IP、主机名和 NetworkManager 连接都需要重新检查。