← 回目录
16 Week 04 · 网络排查

看网卡、配 IP(不再是 ifconfig)

第四周开始,这是运维面试的重灾区。今天先解决一个认知问题:你在网上搜到的 ifconfig 教程,已经过时了

三个被淘汰的命令

先纠正过时知识
老教程里的写法 → 现在该用的
ifconfig → ip addr
RHEL 7 之后 net-tools 默认不装了,ifconfig 会提示命令不存在
route -n → ip route
看路由和网关。
netstat → ss
看端口和连接。ss 快得多,明天专门讲。
改 ifcfg 文件 → nmcli
RHEL 9 / Rocky 9 已经默认不用 /etc/sysconfig/network-scripts/ifcfg-*,配置改存在 NetworkManager 的 keyfile 里。
这一条本身就是面试加分项

面试时被问「怎么配 IP」,回答 nmcli 而不是"改 ifcfg 文件",立刻能显示你用的是新系统而不是照着十年前的教程学的。

ip addr

看网卡和 IP
典型输出
$ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 ...
    inet 127.0.0.1/8 scope host lo
2: enp0s5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
    link/ether 00:1c:42:e9:bd:7a
    inet 10.211.55.7/24 brd 10.211.55.255 scope global dynamic noprefixroute enp0s5
要看懂这几处
enp0s5
网卡名。现代命名规则(按硬件位置命名),不再是老的 eth0
UP,LOWER_UP
UP = 网卡被启用了;LOWER_UP = 物理链路是通的(网线插着 / 虚拟网卡已连接)。只有 UP 没有 LOWER_UP,说明线断了。
inet 10.211.55.7/24
IP 地址和掩码。/24 等于 255.255.255.0
dynamic
这个 IP 是 DHCP 自动获取的。配了静态 IP 就不会有这个词。
lo / 127.0.0.1
回环网卡,永远指向本机。明天讲「本机能访问外网不行」时是关键角色。
常用简写
$ ip a                # ip addr 的简写
$ ip -br a            # -br = brief,一行一个网卡,最清爽
$ ip -4 a             # 只看 IPv4

ip -br a 值得记住——输出只有几行,一眼看清每块网卡的状态和 IP。

ip route

网关在哪
看路由表
$ ip route
default via 10.211.55.1 dev enp0s5 proto dhcp metric 100
10.211.55.0/24 dev enp0s5 proto kernel scope link src 10.211.55.7

default via 那一行就是默认网关——所有不在本地网段的流量都从这里出去。ping 不通外网时,第一件事就是看这行在不在。

配静态 IP

用 nmcli
先看现有连接
$ nmcli connection show
NAME     UUID                                  TYPE      DEVICE
enp0s5   a1b2c3d4-...                          ethernet  enp0s5

$ nmcli device status
DEVICE   TYPE      STATE      CONNECTION
enp0s5   ethernet  connected  enp0s5
改成静态 IP(四条)
$ sudo nmcli con mod enp0s5 ipv4.addresses 10.211.55.100/24
$ sudo nmcli con mod enp0s5 ipv4.gateway 10.211.55.1
$ sudo nmcli con mod enp0s5 ipv4.dns "223.5.5.5 8.8.8.8"
$ sudo nmcli con mod enp0s5 ipv4.method manual

# 改完必须重新加载连接才生效
$ sudo nmcli con up enp0s5
⚠️ 远程操作时的大坑

通过 SSH 远程改 IP,改完的瞬间你就断线了——因为你连的那个 IP 已经不存在了。

真实工作中的做法:要么去机房本地操作,要么用带外管理卡(IPMI / iDRAC),要么写成一个"改完等 60 秒自动还原"的脚本——万一配错了还能自己回来。

这个坑说出来,面试官会知道你远程干过活。

改回自动获取
$ sudo nmcli con mod enp0s5 ipv4.method auto
$ sudo nmcli con up enp0s5

DNS 怎么查

三层确认
$ cat /etc/resolv.conf        # 当前用的 DNS 服务器
nameserver 10.211.55.1

$ ping -c 2 223.5.5.5         # 1. IP 能不能通(不涉及 DNS)
$ ping -c 2 www.baidu.com     # 2. 域名能不能通(要 DNS)
$ nslookup www.baidu.com      # 3. 直接测 DNS 解析
一个经典判断

ping IP 通,但 ping 域名 不通 → 网络是好的,问题在 DNS。

这个判断能省掉大量瞎猜。反过来如果 IP 都 ping 不通,那 DNS 查了也白查。

别直接改 resolv.conf

在 NetworkManager 管理的系统上,/etc/resolv.conf自动生成的——你手改了,下次网络重启就被覆盖回去。

要改 DNS,得用 nmcli con mod 网卡 ipv4.dns "..."这也是个很能体现新旧知识差别的点。

今天的面试点

「怎么给服务器配静态 IP?」

「用 nmcli con modipv4.addressesgatewaydns,再把 ipv4.method 改成 manual,最后 nmcli con up 生效。」

加分:「RHEL 9 之后已经不用 ifcfg 文件了,配置存在 NetworkManager 的 keyfile 里。

更加分:「远程改 IP 要特别小心,改完就断线——所以我会先确认有带外管理,或者做个定时还原的保险。」

「服务器上不了网,怎么排查?」

由近到远四步ip a 看网卡有没有 IP、状态是不是 UP → ip route 看默认网关在不在 → ping 网关 看本地网络通不通 → ping 8.8.8.8 看外网通不通 → 最后 ping 域名 区分是不是 DNS 问题。」

这个顺序本身就是答案的价值所在。

今天的练习

敲完再走 · 约 12 分钟
  • ip aip -br a 各敲一次,对比输出,找到你虚拟机的 IP 和网卡名
  • ip route,找出 default via 那一行,记下网关地址
  • 按顺序 ping 一遍:网关 → 223.5.5.5 → www.baidu.com,理解每一步在验证什么
  • nmcli con shownmcli device status,看连接名和设备名
  • cat /etc/resolv.conf 看当前 DNS,再 nslookup www.baidu.com 测解析
  • 选做:把 DNS 改成阿里云的 223.5.5.5nmcli con mod ... ipv4.dns),con up 生效后再看 resolv.conf 变了没
明天预告

Day 17 讲 ss——「谁占了 80 端口」。这条命令你以后一天要敲十次,而且是后天那道标准面试题的第一步。