码上问学问代码之理,学编程之道
教材同步›项目 6
① 概念全景 ② 网络案例室 ③ 两套管法与总管 ④ 一次访问的旅程 6.1 看懂网络 6.2 配置网络 6.3 连通与解析 6.4 故障排查 拓展训练
教材同步 · 叶廷东《Linux 操作系统管理(第 2 版)》航空工业出版社 · “十四五”国家规划教材

项目6 Linux 服务器网络配置

服务器联网这件事,拆开其实只有五个要素:网卡、IP 与掩码、网关、DNS、主机名。每个概念都按费曼方式讲——把入网比作「让一台机器在小区里安家落户」:网卡是房子、IP 是门牌号、网关是小区大门、DNS 是查号台、主机名是户主名;再用「删掉它会怎样」反证每一件为什么缺一不可。理解了这张图,再看 ip / nmcli / dig / ss 才知道每条命令在解决什么问题。改网络最容易把自己踢下线,操作前先读安全须知。

概念篇

先看懂这张图:一台服务器是怎么「安家入网」的

不背命令,先建立整体关系
0.1五要素:网络配置的「安家流程」

把一台服务器接入网络,就是帮它在小区里安家落户

想象服务器是一户人家:① 网卡是小区里那套房子本身(物理上插着网线的位置,还没有门牌);② IP 地址和掩码是门牌号加上小区边界——「192.168.1.10,在 192.168.1.x 这个小区里」;③ 网关是小区大门,寄往边界之外的包裹一律先交给它;④ DNS是查号台,你只记得住「百度」,记不住它的门牌号,查号台负责把名字翻译成门牌;⑤ 主机名是户主名,方便别人称呼你这台机器。

配网络 = 让机器:有房子 → 有门牌 → 认得大门 → 记住查号台电话 → 报上户主名。五步缺一步,都会以「连不上」的形式表现出来。

后面所有命令,都只是在这五步的某一步上「看一眼」或「改一笔」。先看图,再对表,最后进案例室。

①认房子网卡设备 ens33——配什么都得先知道改的是谁 ②上门牌IP + 掩码——掩码划定「哪些邻居可以喊话」 ③认大门网关——去外界的唯一出口,走路由表 ④存查号台DNS——名字翻译成 IP,写在 resolv.conf ⑤报名字主机名——提示符、日志、邮件里都靠它
服务器入网五要素:安家流程图 每一层都是一类「参数」;每类参数都有自己的「看它」和「配它」 ① 网卡设备 网卡 ens33(虚拟机里常见 ens33,老系统叫 eth0) 链路层的「房子」:插着网线的物理口,还没有任何门牌 看它:ip link show 配它:nmcli / ifcfg-ens33 ② IP 与掩码 inet 192.168.1.10/24(IPADDR=… PREFIX=24) /24 = 小区边界:同段邻居直接喊话,跨段一律托大门 看它:ip addr show ens33 配它:IPADDR= / ipv4.addresses ③ 网关路由 default via 192.168.1.1 dev ens33 路由表里的一条「默认规则」:边界之外的包裹全交给它 看它:ip route 配它:GATEWAY= / ipv4.gateway ④ 域名解析 nameserver 8.8.8.8(写在 /etc/resolv.conf) 查号台:把 baidu.com 翻译成门牌号;本机通讯录 /etc/hosts 优先 看它:cat /etc/resolv.conf 配它:DNS1= / ipv4.dns ⑤ 主机名 server.example.com 户主名:提示符、日志、邮件头里都靠它认机器 看它:hostname / hostnamectl 配它:hostnamectl set-hostname 主线:认网卡 → 配 IP/掩码 → 指网关 → 配 DNS → 起名字;配完按 0.5 的「四测」验证
图 1 · 网络五要素:每一步都依赖上一步的参数。命令只是某一要素的「看它」或「配它」。

这五个比喻不是修辞,每一条都对应系统里真实的文件和参数。下表把「生活比喻 → Linux 真实概念 → 怎么亲眼看到它」对齐:

要素生活比喻Linux 里对应的真实概念怎么亲眼看到它
① 网卡小区里的房子物理/虚拟网络接口 ens33,设备信息在 /sys/class/net/ens33/ip link show;ls /sys/class/net/
② IP/掩码门牌号 + 小区边界接口上的 IPv4 地址与前缀长度;/24 即掩码 255.255.255.0ip addr show ens33 的 inet 行
③ 网关小区大门内核路由表中的默认路由(default via …)ip route;ip route get 8.8.8.8 看一个包会走哪
④ DNS查号台/etc/resolv.conf 的 nameserver 行;优先查 /etc/hosts(顺序由 /etc/nsswitch.conf 决定)cat /etc/resolv.conf;dig baidu.com 看谁在回答
⑤ 主机名户主名内核主机名,持久化在 /etc/hostnamehostname;hostnamectl status
对不上的典型症状有人说「配了 IP 就能上网」——追问一句:那 DNS 配在哪儿?IP 只解决「有门牌」,出小区(网关)和认名字(DNS)是另外两件事。说不出这两件事的人,遇到「能 ping 通 IP、打不开网页」必然束手无策。

下面五张概念卡,每个概念按同一顺序讲:说人话(不用术语的一句话)→ 打个比方 → 为什么有这件(删掉它出什么事)→ 术语对照。

网卡(network interface)

说人话机器上插网线的那个口,在 Linux 里也是个「文件」——/sys/class/net/ 下每个目录就是一块网卡。

打个比方小区里那套房子。房子还没上户口(没配 IP)之前,快递员根本不知道往哪送。

为什么有这件没有网卡,机器就是孤岛。命名规则:虚拟机里常见 ens33(PCI 热插拔槽位命名),老教材的 eth0 是旧命名法。

术语对照:接口(interface)、链路层(link);ip link 只看链路层状态,ip addr 连地址一起看。

IP 地址与子网掩码

说人话门牌号 + 小区范围。192.168.1.10/24 的意思是:我在 192.168.1.x 小区,编号 10。

打个比方掩码就是小区围墙:/24 围出 254 户邻居,墙内串门直接喊,墙外寄包裹走大门。

为什么有这件没有掩码,机器不知道对方是不是邻居——把外网地址也当本地喊话,永远等不到回应;把邻居当外网寄包裹,白绕大门一圈。

术语对照:PREFIX=24 与 NETMASK=255.255.255.0 是同一件事的两种写法;CIDR 记法即 /24。

网关(gateway)与路由

说人话「不是本小区的包裹,统一交给 192.168.1.1 代发」——这就是默认网关。

打个比方小区大门。全小区只此一个对外出口,路由表就是保安的派件规则手册。

为什么有这件没有网关,机器永远只能访问同小区的邻居,外网一概不通——这正是「ping 网关通、ping 外网不通」的病因。

术语对照:默认路由 default route;ip route 的第一行就是它;一个网卡配多个网关会冲突,只认一个。

DNS(域名解析)

说人话你只记得住 baidu.com,机器只认得 IP——DNS 负责「报名字,报回门牌号」。

打个比方查号台 114。查号台电话没存(resolv.conf 没配 nameserver),名字问不出口,只能背门牌号。

为什么有这件没有它,浏览器、yum install、git clone 全部报「无法解析域名」——即使网关和 IP 都是对的。

术语对照:nameserver / 解析器 resolver;本机通讯录 /etc/hosts 优先级高于 DNS(见 0.2 案例 3)。

主机名(hostname)

说人话机器的名字。装系统时随手起的 localhost,等你有 50 台机器时就是灾难。

打个比方户主名。快递单可以只写门牌号,但物业公告栏总得写「张三收」才好找。

为什么有这件没有它,日志里分不清谁是谁、集群节点互访靠 IP 背书、邮件服务器直接被拒收。

术语对照:hostnamectl set-hostname 一步到位(改内核 + 写 /etc/hostname);老的 hostname 临时名 重启即失效。

DHCP 与静态 IP

说人话门牌号可以自己定(静态),也可以每次找房管处领(DHCP)。

打个比方租房(DHCP):省心但合同到期可能换房;买房(静态):写进文件,开机就在。

为什么有这件服务器用 DHCP 是隐患:租约一到期 IP 一换,所有客户端全部失联。所以服务器几乎都配静态。

术语对照:BOOTPROTO=dhcp|static|none;nmcli 里对应 ipv4.method auto|manual。

0.2网络案例室:10 个能当场验证的现象

概念看三遍不如现象见一遍。下面 10 个现象都能在虚拟机里亲手做出来,每个现象背后都是图 1 五要素中的一件在起作用。

01网关能 ping 通,外网 IP ping 不通
ping -c2 192.168.1.1 && ping -c2 223.5.5.5

门牌和大门都好,坏在大门之外。网关回应说明本机配置的 IP/掩码没毛病;到不了外网,问题在网关的上联线路或路由器本身——你的机器无能为力。

对应图 1 ③:网关只负责「出小区」,出了小区是运营商的事
02ping 外网 IP 通,ping 域名不通
ping -c2 223.5.5.5 && ping -c2 baidu.com

这是最经典的 DNS 故障。网络本身完全正常(IP 都通),坏的是「查号台」:resolv.conf 没有 nameserver,或 DNS 服务器不可达。

对应图 1 ④:IP 通 = 网络通;域名通 = DNS 才正常,两者是两件事
03/etc/hosts 加一条,名字立刻能解析
echo "1.2.3.4 t.local" >> /etc/hosts && ping -c1 t.local

本机通讯录优先于查号台。名字解析先查 /etc/hosts(顺序由 /etc/nsswitch.conf 的 hosts: files dns 决定),查不到才去问 DNS。内网服务、临时测试的最快手段。

对应图 1 ④:解析链是 hosts → DNS 两级,不是只有 DNS
04手改的 resolv.conf,重启后变回去了
cat /etc/resolv.conf

这个文件不是你的,是 NetworkManager 的。NM 会按连接配置里的 ipv4.dns 重新生成它。想改 DNS 要走正规入口(nmcli con mod ens33 ipv4.dns …),详见 0.3。

对应图 1 ④:resolv.conf 是「结果」不是「原因」
05开机网卡没 IP,手动 up 一下就有了
nmcli con show ens33 | grep autoconnect

ONBOOT=no / autoconnect 关了。开机时 NM 不激活这条连接,自然没 IP。nmcli con mod ens33 connection.autoconnect yes 一劳永逸。

对应图 1 ①:房子还在,只是每次开机都没人给它上门牌
06127.0.0.1 是什么?为什么每台机器都有
ping -c1 127.0.0.1

环回地址:自己找自己。lo 接口不走物理网卡,包在自己内存里转一圈就回来。测试本机服务(如 Web 是否在听)先用它,与网线无关。

对应图 1 ①:lo 也是一块网卡,只是不出小区门
07DHCP 的 IP,重启后可能就变了
ip -4 addr show ens33

租约到期,房管处收回重租。DHCP 分配的 IP 有租期,服务器 IP 漂移会让所有客户端失联——所以服务器要 ipv4.method manual 改静态。

对应图 1 ②:门牌号是租的还是买的,决定了服务稳不稳
08ip addr 里那串 inet6 是什么
ip -4 addr show ens33

IPv6 地址,别慌也别删。现代系统默认双栈(v4 + v6)。做实验嫌它碍事,加 -4 只看 IPv4 即可,不需要去「关掉 IPv6」。

对应图 1 ②:一个接口可以同时挂两套门牌(v4/v6)
09两台机器配了同一个 IP:时通时断
arping -D -I ens33 192.168.1.10

IP 冲突。两个相同的门牌号,快递随机送错门,表现就是「一会儿通一会儿断」。arping -D(duplicate detect)在正式启用 IP 前探测地址是否已被占用。

对应图 1 ②:门牌号必须唯一,这是掩码世界的铁律
10ping 不通 ≠ 服务坏了
curl -sI http://目标IP | head -1

很多服务器禁 ICMP 防扫描。ping 被拒不代表 HTTP/SSH 不通——判断「服务活没活」要用对应协议测(curl / ss -tlnp 看本机监听),ping 只证明「网络层可达」。

对应图 1 ②:ping 测的是网络层,服务在传输层往上
bash · 实验 A:亲手劫持一次域名解析
# 1) 在「本机通讯录」加一条假记录(名字随便起,全网不存在)
echo "1.2.3.4 test.local" >> /etc/hosts

# 2) 解析这个名字——它不在任何 DNS 服务器上
ping -c 1 test.local
# PING test.local (1.2.3.4) 56(84) bytes of data.
#                    └─ 命中的是 /etc/hosts,根本没问 DNS

# 3) 能不能 ping 通不重要,重要的是「名字 → IP」这一步生效了。
#    内网服务、测试环境的 host 绑定,都是这么干的。

# 4) 用完删掉,别给自己埋坑
sed -i '/test.local/d' /etc/hosts
结论:域名解析是两级流水线——先翻本机通讯录(hosts),再问查号台(DNS)。改 hosts 是运维改解析的第一入口。
0.3两套「管法」与一个总管:ifcfg 文件派 vs nmcli 派

教材同时讲了「改配置文件」和「nmcli 命令」两条路,学生最容易糊涂:到底听谁的?答案是——两条路通往同一个人。看图:

改网络的两个入口,最终都交给同一个总管 手改文件派与命令行派殊途同归——知道这一点,很多「玄学问题」就通了 手改文件派 /etc/sysconfig/network-scripts/ifcfg-ens33 (RHEL 9 起改为 /etc/NetworkManager/system-connections/*.nmconnection) 改完必须 nmcli con reload 才会被读到 命令行派 nmcli con mod ens33 ipv4.addresses … nmtui:同样的操作,换成菜单界面,改完即存 nmcli con up ens33 立即生效 NetworkManager(总管) 真正动手配置内核接口、生成 /etc/resolv.conf 所以:手改 resolv.conf 迟早被覆盖;两个入口改的其实是同一份连接配置。
图 2 · NetworkManager 是唯一的执行者:文件和 nmcli 只是它的两种「下命令」方式。

为什么 resolv.conf 手改会被覆盖?因为那是总管的「工作成果」,不是「输入」

把 NetworkManager 想象成物业管家:你说「给我家配门牌 192.168.1.10、查号台存 8.8.8.8」(nmcli 或 ifcfg 文件),管家去办,办完在门上贴一张便签(/etc/resolv.conf)。你直接跑去改便签,管家下次路过(重启、重连、换网络)就按自己的账本重新贴一张——便签是输出,不是输入。所以「手改 resolv.conf 一重启就丢」不是玄学,是体系设计的必然。

判断口诀:想改的东西由 NetworkManager 生成(resolv.conf、路由),就必须从入口改;想改的东西不属于它(比如 /etc/hosts),随便改。

手改 ifcfg 文件nmcli 命令nmtui 菜单
适合谁习惯读文件、写脚本批量部署远程运维、自动化脚本(推荐)初学者、临时改一次
生效方式nmcli con reload + con upnmcli con up 立即生效菜单里保存即生效
风险字段拼错不易发现;忘 reload 改了像没改参数名长,但报错明确功能面窄,复杂参数配不了
本课要求☆ 理解六字段含义★ 必会完整流程○ 会打开会用
0.4一次网页访问的完整旅程:把五要素串起来

学完五要素,把它们串成一条链:你在浏览器输入一个网址,到看见页面,五件套依次登场。

一次访问的旅程:五要素依次登场 任何一环缺失,链路就在那一环断掉 ① 输入名字 www.example.com ② 问查号台 nameserver 译出 93.184.216.34 ③ 查路由表 非本网段 → default ④ 出大门 via 192.168.1.1 ⑤ 到达 建立连接 删掉 DNS:名字没人翻译 只能背 IP 访问,所有软件报「无法解析」 删掉网关:出不了小区 邻居能访问,外网一概不通 掩码配错:内外颠倒 把外网当邻居喊话,永远等不到回应
图 3 · 一条链走完五要素。链上任何一环缺失,都在那一环断——排查时按 ①→⑤ 顺序问,比乱试快得多。
可定位

故障只会断在五环之一。「ping 网关通、域名不通」直接锁定第 ④ 环,不用翻配置文件大海捞针。

可替换

IP 从静态换成 DHCP(第 ② 环),其余四环一概不动。分层让每次改动的影响面最小化。

可验证

每一环都有自己的「单测」命令:ip link / ip addr / ip route / dig / hostname——逐环打勾,配错无从遁形。

0.5场景对照:我要做什么 → 用哪条命令

先记住这张表,后面每条命令的细节再按需展开。注意顺序:永远先「看」,再动手。

我要解决的问题第一步看动手命令对应小节
刚拿到一台服务器,先摸清网络现状ip addr + ip routehostnamectl 顺手看主机名6.1
把 DHCP 改成静态 IPnmcli con show 确认连接名nmcli con mod … ipv4.method manual6.2.2
想手改配置文件先确认 RHEL 版本(7/8 用 ifcfg,9 用 keyfile)编辑 ifcfg 后 nmcli con reload6.2.1
测某台机器通不通ping -c4 目标不通再看 ip route get 目标6.3.1
域名解析对不对、是谁答的dig baidu.comdig @8.8.8.8 … 换查号台对比6.3.2
服务起了但别人连不上ss -tlnp 看是否在听再查防火墙 firewall-cmd --list-all6.1.3
网络时通时断arping -D 查 IP 冲突换 IP 或找出另一台机器6.4
新装机器要起名——hostnamectl set-hostname server6.2.4
一句话主线看(ip addr / ip route / ss)→ 配(nmcli 或 ifcfg)→ 测(ping / dig / curl 四测)→ 排(按图 3 五环逐环问)。四测:测网关、测外网 IP、测域名、测端口。
0.6安全须知(动手前必读)
⚠
改网络最大的风险:把自己踢下线。你是通过 SSH 连上服务器的——网关、IP、DNS 任一改错,连接立刻断,而服务器远在机房/云上,你可能连控制台都没有。虚拟机练习前先打快照;生产环境操作前确认有带外控制台(云厂商 VNC / vSphere 控制台)能兜底登录。
  • 动手前先 ip addr 记下当前 IP 和网卡名——失联后第一个动作就是改回去。
  • 用 nmcli 改,改完 con up 试连;万一失联,从控制台把旧 IP 改回来。
  • 不要同时改 DNS 和网关——一次只动一环,出问题立刻知道是谁。
  • ifcfg 文件手改后必须 nmcli con reload,否则「改了像没改」,还会误判成 NM 抽风。
任务 6.1

看懂网络:诊断三件套

配网之前,先学会「看」
6.1.1ip addr:输出逐行解读
bash
ip addr show ens33
# 2: ens33:  mtu 1500 ...
#    └─ UP = 网卡已启用;没有 UP 就是没有「通电」,配什么都白搭
#    inet 192.168.1.10/24 brd 192.168.1.255 scope global noprefixroute ens33
#    └─ 这台机器的门牌号 192.168.1.10,小区范围 /24(掩码 255.255.255.0)
#    inet6 fe80::20c:29ff:fe8a:1234/64 scope link
#    └─ IPv6 链路本地地址,做实验用 -4 隐藏它
#    valid_lft forever preferred_lft forever
#    └─ 永久有效(static);若显示一串秒数,说明这是 DHCP 租来的
看什么:网卡名(ens33)、状态(UP)、IPv4 地址与掩码(inet 行)、是静态还是租约(valid_lft)。
ip★ 必会

查看 / 配置网卡、地址、路由(取代老 ifconfig)。新系统可能没装 ifconfig,ip 永远在。

随身参数卡 · ip
看
  • ip addr 所有网卡 + IP
  • ip -br addr 简表(一网卡一行)
  • ip -4 addr show ens33 只看 IPv4
  • ip link set ens33 up 启用网卡
测与查
  • ip route get 8.8.8.8 这个包会走哪
  • ip addr | grep inet 快速抓地址行
  • ip -br link 只看网卡状态
6.1.2ip route:看懂路由表与网关
bash
ip route
# default via 192.168.1.1 dev ens33 proto static metric 100
# └─ 默认路由:boundary 之外的包裹全交给 192.168.1.1(网关)
# 192.168.1.0/24 dev ens33 proto kernel scope link src 192.168.1.10
# └─ 本小区直连规则:去 192.168.1.x 不用出大门,直接喊

ip route get 223.5.5.5
# 223.5.5.5 via 192.168.1.1 dev ens33 src 192.168.1.10
# └─ 单包问路:去这个地址会从哪张卡、经哪个网关走——排障神器
两条规则打架时,内核选「范围更窄/更具体」的:先匹配小区内直连,再兜底 default。
6.1.3ss:看端口监听与连接
ss★ 必会

查看端口监听与连接(取代 netstat)。网络通了但「服务连不上」,第一件事就是看它。

随身参数卡 · ss
字母 = 过滤器
  • -t TCP · -u UDP
  • -l 只看监听(LISTEN)
  • -n 端口显示数字(不翻译成 http 等名字)
  • -p 显示是哪个进程在听
常用组合
  • ss -tlnp 本机所有 TCP 监听 + 进程(排障必用)
  • ss -tlnp | grep :80 确认 Web 在听
  • ss -ant state established 看活动连接数
bash
ss -tlnp | grep :22
# LISTEN 0 128 0.0.0.0:22 users:(("sshd",pid=1024,...))
# └─ 监听 0.0.0.0:22 = 所有网卡上的 22 端口都接受 SSH 连接
# └─ 若显示 127.0.0.1:22 = 只有本机能连,外来的全拒绝
「服务起了别人连不上」三板斧:ss 看监听地址 → 防火墙 firewall-cmd --list-all → SELinux getenforce。
6.1.4hostname 与 hostnamectl
bash
hostname                  # 看当前主机名(临时变量,重启读文件)
hostnamectl status        # 静态/临时/漂亮三个名字一起看
sudo hostnamectl set-hostname server.example.com
# └─ 一步到位:改内核当前值 + 写 /etc/hostname(重启仍在)
# 重新登录 shell,提示符即变成新名字
老的 hostname 临时名 命令只改当前会话,重启即失效——教材让用 hostnamectl 就是这个原因。
任务 6.2

配置网络:nmcli 全流程与 ifcfg 文件

命令行改 IP,不必手编文件
6.2.1ifcfg 配置文件:六个字段逐个讲透

RHEL 7/8 的网卡配置在 /etc/sysconfig/network-scripts/ifcfg-ens33。文件不长,但每个字段都可能让机器失联,逐个看:

字段含义常见值漏写/写错会怎样
TYPE接口类型Ethernet一般默认即有,不用动
BOOTPROTO门牌号谁发dhcp / static / none写 static 却没给 IPADDR,开机无 IP
NAME / DEVICE连接名 / 设备名ens33DEVICE 写错 = 这份配置谁也不认领
ONBOOT开机是否激活yesno = 案例 05:开机永远没网
IPADDR + PREFIX门牌号 + 小区边界192.168.1.10 + 24PREFIX 写成 NETMASK 格式(或反之)不报错但不生效
GATEWAY小区大门192.168.1.1多个 ifcfg 都写 GATEWAY 会互相覆盖,只留一个
DNS1 / DNS2查号台电话8.8.8.8漏写 = 能 ping IP 打不开网页(案例 02)
ini
TYPE=Ethernet
BOOTPROTO=static
NAME=ens33
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.10
PREFIX=24
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=114.114.114.114
改完文件不是结束:nmcli con reload 让总管重读,再 nmcli con up ens33 应用——否则改了像没改。
6.2.2nmcli:从 DHCP 到静态 IP 的完整四步
bash
# 第 1 步:看清楚设备名与连接名(两者可能不一样!)
nmcli device status
# DEVICE  TYPE      STATE      CONNECTION
# ens33   ethernet  connected  ens33        ← CONNECTION 列才是下一步操作的对象
nmcli con show                              ← 连接配置列表

# 第 2 步:改配置(改的是「连接」,不是「设备」)
nmcli con mod ens33 \
  ipv4.method manual \                        # static 对应 manual;dhcp 对应 auto
  ipv4.addresses 192.168.1.10/24 \            # 门牌号 + 小区边界,一条写完
  ipv4.gateway 192.168.1.1 \                  # 小区大门
  ipv4.dns "8.8.8.8 114.114.114.114" \        # 多个 DNS 用引号包住,空格分隔
  connection.autoconnect yes                  # 相当于 ONBOOT=yes

# 第 3 步:应用(重新激活连接,断开当前 TCP 也要做)
nmcli con up ens33

# 第 4 步:验证(图 1 逐环打勾)
ip -4 addr show ens33                        # ② 门牌对不对
ip route | grep default                      # ③ 大门对不对
cat /etc/resolv.conf                         # ④ 查号台写进去没有
ping -c 2 192.168.1.1                        # 终测:网关通不通
第 1 步最容易省略也最致命:连接名不叫 ens33 时(比如叫 "Wired connection 1"),后面所有命令都要带引号写全名。
nmcli★ 必会

NetworkManager 的命令行入口。语法是「对象 + 动作」:con show / con mod / con up / dev status。

随身参数卡 · nmcli
查
  • nmcli device status 设备一览
  • nmcli con show 连接列表
  • nmcli con show ens33 单连接全部参数
改与新增
  • con mod 名字 参数 值 改配置
  • ipv4.method auto|manual DHCP/静态
  • con add type ethernet ifname ens33 con-name ens33 新建
  • con up 名字 应用并激活
6.2.3nmtui:菜单式配置
bash
nmtui
# ↑↓ 移动光标,回车进入:
# Edit a connection → 选 ens33 → IPv4 CONFIGURATION 改 Manual
#   → Show 填 Addresses / Gateway / DNS servers
#   → [x] Automatically connect → OK → Back → Quit
# 改完菜单里 Activate a connection 重新激活(相当于 con up)
nmtui 与 nmcli 改的是同一份连接配置(图 2),考场二选一即可;脚本环境用 nmcli。
6.2.4主机名:hostnamectl 一步到位
bash
sudo hostnamectl set-hostname server
# └─ 同时改内核当前值与 /etc/hostname,重启不丢
# 退出重连 shell,提示符 [root@server ~]# 即见新名字
# 老方法 hostname 临时名 只对当前会话生效,重启失效——少用
集群里主机名应能反映角色(web01 / db02),50 台机器都叫 localhost 是运维噩梦的开始。
任务 6.3

连通与解析测试:四测法

测网关 → 测外网 IP → 测域名 → 测端口
6.3.1ping:输出逐字段解读
bash
ping -c 4 192.168.1.1
# PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
#      └─ 发 56 字节数据,加上 IP/ICMP 头共 84 字节
# 64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=0.453 ms
#                             └─第几个包 └─存活跳数 └─往返耗时
#   time 局域网应 <1ms,跨网几十 ms;丢包看最后的统计行
# --- 192.168.1.1 ping statistics ---
# 4 packets transmitted, 4 received, 0% packet loss, time 3005ms
#                                 └─ 丢包率才是「通不通」的关键指标
ping 只测网络层:不通可能是对方禁了 ICMP(案例 10);「time=多少 ms」看的是延迟,「0% loss」看的是稳定性。
ping★ 必会

测网络层可达性。不加参数会一直 ping,脚本里必须带 -c。

随身参数卡 · ping
常用参数
  • -c 4 只发 4 个包(必养成的习惯)
  • -W 2 等回应最多 2 秒
  • -i 0.2 缩短发包间隔(需 root)
读结果
  • time 往返延迟
  • ttl=64 每过一个路由器减 1,可粗判对方系统
  • 100% packet loss 全丢 = 不通(或被禁 ping)
6.3.2dig:看懂一次域名解析
bash
dig baidu.com

;; QUESTION SECTION          ← 你问的问题
;baidu.com.          IN  A   ← 问:baidu.com 的 IPv4(A)记录?

;; ANSWER SECTION            ← 查号台给的答案
baidu.com.     600  IN  A  110.242.68.66
               └─600 秒内可以缓存(TTL)

;; Query time: 12 msec       ← 这次解析花了多久
;; SERVER: 8.8.8.8#53(8.8.8.8) ← 这次是谁回答的(重要!)
解析慢/解析错,先看 SERVER 行是谁在答;dig +short 只要答案一行,适合脚本。
dig / nslookup★ 必会

向 DNS 服务器查询域名。dig 输出全、可指定服务器;nslookup 简单直观。

随身参数卡 · dig
常用
  • dig baidu.com 查 A 记录全流程
  • dig baidu.com +short 只要 IP
  • dig @223.5.5.5 baidu.com 指定查号台
进阶
  • dig -x 8.8.8.8 反向解析(IP→名)
  • dig baidu.com MX 查邮件记录
  • nslookup baidu.com 交互式简版
💡
对比实验:dig @223.5.5.5 baidu.com +short 与 dig @8.8.8.8 baidu.com +short 各跑一次——同一个名字不同查号台可能给出不同答案(CDN 就是这样工作的)。理解「解析答案取决于问谁」,后面项目9 学 DNS 服务时就会轻松很多。
6.3.3traceroute:看包走了哪条路
bash
traceroute 223.5.5.5
# 1  192.168.1.1 (192.168.1.1)  0.5 ms   ← 第一跳永远是网关(大门)
# 2  100.64.0.1                 3.2 ms   ← 运营商接入网
# 3  * * *                      …        ← 某路由器不回应,不代表断
# …                                        ← 每行一跳,ttl 逐跳加一
用「到哪一跳断的」区分责任:第 1 跳就断 = 自己的网关问题;走到运营商才断 = 线路问题,联系服务商。
任务 6.4

故障排查:网络配置最常见的六个坑

会配置,更要会救火
6.4.1问题 → 定位 → 处理
现象定位命令原因与处理
改了 ifcfg 文件,网络毫无变化nmcli con showNetworkManager 没重读文件。执行 nmcli con reload && nmcli con up ens33。以后手改文件必跟这两条。
能 ping 通 IP,域名全解析不了cat /etc/resolv.confDNS 没配或被覆盖。用入口改:nmcli con mod ens33 ipv4.dns 8.8.8.8 后 con up(见 0.3 图 2)。
ping 网关都不通ip addr → ip link先看有没有 UP 和 inet:没 UP → ip link set ens33 up;没 IP → 配置没生效;都有 → 查网线/VMware 网络模式(NAT/桥接)。
nmcli 报 NetworkManager is not runningsystemctl status NetworkManager总管没上班。systemctl enable --now NetworkManager 启动并设开机自启。
改 nmcli 时 SSH 突然断开控制台登录 → ip addr大概率改了 IP/网关导致路由变化。从虚拟机/云控制台登录,nmcli con mod 改回原 IP 再 con up。预防见 0.6。
DHCP 拿到 169.254.x.xip -4 addr169.254 开头是「自动私有地址」:房管处(DHCP 服务器)联系不上。查 DHCP 服务、网线、VMware 网络服务。
💡
排错通用心法(按图 3 的链条问):ip addr 有门牌吗 → ip route 有大门吗 → ping 网关大门活吗 → ping 223.5.5.5外部通吗 → dig baidu.com查号台通吗 → ss -tlnp服务在听吗。六问答完,问题必被锁定在某环。

拓展训练

教材每项目末尾 · 上机可重做取最高分
1
用 ip addr 看清本机 IP 与网卡名;用 ip route 找出默认网关;再对比 ip -br addr 的简表输出。
2
按「四测」顺序体检本机:ping -c4 网关 → ping -c4 223.5.5.5 → dig baidu.com → ss -tlnp,每一测写一句「它在验证图 1 的哪一要素」。
3
用 nmcli 把网卡临时改成静态 IP 192.168.1.20/24 并 con up 生效(练完改回 DHCP:把 ipv4.method 改回 auto 再 con up)。全程截图记录四步。
4
完成实验 A(hosts 劫持):给 t.local 绑一个地址,用 ping -c1 t.local 验证解析命中 hosts,随后删除记录。思考:什么场景该用 hosts、什么场景必须用 DNS?
5
对比实验:dig @223.5.5.5 baidu.com +short 和 dig @8.8.8.8 baidu.com +short,记录两者答案是否一致,并用一句解释「为什么可能不同」。
6
故意制造故障再修好(快照后做):把 ipv4.gateway 改成错误地址并 con up,观察「四测」哪几测挂掉、哪几测还活着,然后用正确网关恢复。

网络配置错一点就『连不上』;改前先拍快照,且确认有控制台(vSphere/虚拟机窗口)能兜底登录。