三个被淘汰的命令
- 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 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 connection show
NAME UUID TYPE DEVICE
enp0s5 a1b2c3d4-... ethernet enp0s5
$ nmcli device status
DEVICE TYPE STATE CONNECTION
enp0s5 ethernet connected enp0s5
$ 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 查了也白查。
在 NetworkManager 管理的系统上,/etc/resolv.conf 是自动生成的——你手改了,下次网络重启就被覆盖回去。
要改 DNS,得用 nmcli con mod 网卡 ipv4.dns "..."。这也是个很能体现新旧知识差别的点。
今天的面试点
「用 nmcli con mod 设 ipv4.addresses、gateway、dns,再把 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 问题。」
这个顺序本身就是答案的价值所在。
今天的练习
ip a和ip -br a各敲一次,对比输出,找到你虚拟机的 IP 和网卡名ip route,找出default via那一行,记下网关地址- 按顺序 ping 一遍:网关 → 223.5.5.5 → www.baidu.com,理解每一步在验证什么
nmcli con show和nmcli device status,看连接名和设备名cat /etc/resolv.conf看当前 DNS,再nslookup www.baidu.com测解析- 选做:把 DNS 改成阿里云的
223.5.5.5(nmcli con mod ... ipv4.dns),con up生效后再看 resolv.conf 变了没
Day 17 讲 ss——「谁占了 80 端口」。这条命令你以后一天要敲十次,而且是后天那道标准面试题的第一步。