用ip命令临时配置IPv4需分两步:先用ip addr add添加IP地址,再用ip route add设置默认网关;缺一不可,否则导致同网段可达但无法访问外网或路由选错出口。

如何用 ip 命令临时配置 IPv4 地址和默认网关
临时配置意味着重启网络服务或系统后失效,适合调试或快速验证。关键不是记命令,而是理解参数含义和顺序。
ip 的地址添加和路由添加是两个独立操作,漏掉任一都会导致无法通信:
-
ip addr add—— 给192.168.1.100/24deveth0eth0接口分配 IP 和子网掩码(/24等价于255.255.255.0) -
ip route add default via—— 添加默认路由,指向网关192.168.1.1deveth0192.168.1.1,且明确指定出口设备
常见错误:只配 IP 不配路由 → 能 ping 通同网段,但无法访问外网;配了路由却没指定 dev → 内核可能选错出口,尤其多网卡时。
为什么 /etc/network/interfaces 在 Debian/Ubuntu 上改了不生效
改完文件只是“写入配置”,不会自动应用。必须触发重载,而且不同发行版 reload 方式不同。
Debian/Ubuntu(使用 ifupdown)的正确流程:
- 先卸载旧配置:
ifdown(若提示 interface not configured,说明该接口未被 ifupdown 管理)eth0 - 再加载新配置:
ifupeth0 - 或者批量重载:
systemctl restart networking(但部分新版 Ubuntu 已弃用此服务)
注意:systemctl restart networking 可能失败并中断 SSH 连接——因为 networking 服务会尝试关闭所有非 loopback 接口,包括你正在连的那一个。建议先开一个本地终端或带 console 访问权限再操作。
CentOS/RHEL 8+ 用 nmcli 配置静态 IP 时的三个关键点
NetworkManager 成为默认网络管理器后,直接改 /etc/sysconfig/network-scripts/ifcfg-* 文件可能被覆盖或忽略。必须用 nmcli 或确保 NetworkManager 不接管该连接。
推荐做法(以修改 ens33 为例):
- 确认连接名:
nmcli connection show,找到对应连接(常为接口名或 “System ens33”) - 设静态 IP:
nmcli connection modify"System ens33"ipv4.addresses192.168.1.100/24 - 设网关与 DNS:
nmcli connection modify"System ens33"ipv4.gateway192.168.1.1ipv4.dns"8.8.8.8"ipv4.method manual - 最后激活:
nmcli connection down"System ens33"&& nmcli connection up"System ens33"
遗漏 ipv4.method manual 是最常见失败原因:不设此项,NetworkManager 仍按 DHCP 行为处理,其他静态参数会被忽略。
验证配置是否真正生效的三步检查法
别只信 ip addr 显示有地址,更要看内核路由表和实际连通性。
依次执行:
- 查接口状态:
ip addr show—— 确认eth0UP状态、有inet行、且没有deprecated标记(后者表示地址被标记为过期,可能因重复或冲突) - 查路由表:
ip route show default—— 必须输出类似default via 192.168.1.1 dev eth0,且dev指向正确接口 - 查连通性:
ping -c2(网关)、192.168.1.1ping -c2(公网)、8.8.8.8curl -I http://httpbin.org(DNS + HTTP)—— 逐层排除:通网关不通公网 = 路由或防火墙问题;通公网不通域名 = DNS 配置错误
很多问题卡在 DNS:/etc/resolv.conf 被 NetworkManager 或 systemd-resolved 自动覆盖,手动改后很快恢复原状。真要固定 DNS,请优先通过 nmcli 设置,或禁用 systemd-resolved 后再改文件。










