ifconfig在现代linux中默认不可用,因其所属的net-tools已被iproute2取代;临时配置ip应使用ip addr add等命令,永久配置需按发行版修改对应网络配置文件。

ifconfig 命令在现代 Linux(如 CentOS 7+、Ubuntu 18.04+)上默认不可用,直接运行会报 command not found —— 这不是你漏装包,而是系统已转向 ip 工具链。配置 IP 地址必须区分「临时生效」和「永久生效」两种场景,否则重启后地址消失、服务连不上,是运维中最常踩的坑。
临时配置 IPv4/IPv6 地址用 ip,别碰 ifconfig
旧教程里满屏的 ifconfig eth0 192.168.1.10 netmask 255.255.255.0 在新系统上大概率失败。正确做法是用 ip 命令:
-
ip addr add 192.168.1.10/24 dev eth0—— 添加 IPv4 地址,/24 等价于子网掩码 255.255.255.0 -
ip addr add 2001:db8::1/64 dev eth0—— 添加 IPv6 地址,注意必须带前缀长度 -
ip link set eth0 up—— 确保接口处于 UP 状态(尤其刚启用的网卡) -
ip route add default via 192.168.1.1—— 补充默认路由,否则能配通但上不了网
这些操作立即生效,但只要执行 systemctl restart network 或重启机器,就全部丢失。适合调试、临时测试或容器网络排障。
永久配置得改 /etc/sysconfig/network-scripts/ifcfg-*(RHEL/CentOS 系)
Red Hat 系发行版(CentOS 7/8、Rocky Linux、AlmaLinux)仍依赖 ifcfg- 文件。关键点不是“加几行”,而是参数组合必须闭环:
- 必须设
BOOTPROTO=static(不能写none或留空,否则 NetworkManager 可能忽略) -
ONBOOT=yes缺失会导致开机不加载该 IP -
IPADDR和NETMASK(或PREFIX)二者至少配齐一个;推荐用PREFIX=24替代NETMASK,更兼容 IPv6 场景 - 网关必须写在
GATEWAY字段,且只能写一个;多个网关需用ip route永久化到/etc/sysconfig/network-scripts/route-* - 修改后必须执行
nmcli connection reload && nmcli connection down eth0 && nmcli connection up eth0,单纯systemctl restart network在 NM 管理下可能无效
Ubuntu/Debian 用户该用 /etc/netplan/*.yaml
Ubuntu 18.04+ 和 Debian 10+ 默认用 Netplan,写错缩进或字段名会直接导致 netplan apply 失败:
- 设备名必须用
ens33、enp0s3等真实名,不能写eth0(除非你手动改过 udev 规则) - IPv4 地址格式为
addresses: [192.168.1.10/24],注意中括号和空格 - 网关写
routes:下,不是gateway4:(后者已弃用) - DNS 必须放在
nameservers:下,且addresses是列表形式:addresses: [8.8.8.8, 1.1.1.1] - 执行
sudo netplan apply后,若报错,先用sudo netplan generate查 YAML 解析是否合法
虚拟 IP(别名接口)要避开 eth0:x 的陷阱
用 ifconfig eth0:0 192.168.2.100 能快速起一个虚拟 IP,但它的生命周期完全绑定主接口:ifdown eth0 会顺带干掉所有 eth0:x。生产环境应改用 ip 的别名方式:
-
ip addr add 192.168.2.100/24 dev eth0 label eth0:0—— 加label可让ifconfig仍能识别 - 永久化时,RHEL 系可新建
ifcfg-eth0:0文件,但必须确保DEVICE=eth0:0和NAME=eth0:0一致,否则nmcli不认 - 更稳妥的做法是直接在主接口配置文件里加多地址:
IPADDR1=192.168.2.100、PREFIX1=24,避免额外管理子接口
别名 IP 的路由行为容易被忽略:Linux 默认开启 arp_ignore 和 arp_announce,跨子网访问虚拟 IP 时可能收不到 ARP 响应,必要时得调内核参数。










