ip是当前Linux查网络配置的推荐命令,ifconfig已逐步退出主流支持;ip功能更全、原生支持IPv6、可管理多IP和路由等,而ifconfig仅限接口层且不维护。

Linux里查网络配置,ip 是当前推荐的命令,ifconfig 虽然还能用,但已逐步退出主流支持。两者都能看IP、子网掩码、接口状态,但底层逻辑、功能范围和长期可用性差别明显。
查看本机所有网卡和IP地址
这是最常用的操作:
-
ifconfig:直接运行
ifconfig显示所有**已启用**的接口;加-a(即ifconfig -a)可显示包括关闭状态在内的全部接口 -
ip:用
ip addr或ip a,默认列出所有接口及其IPv4/IPv6地址、作用域(scope)、是否临时(temporary)等信息,更完整也更结构化
注意:ifconfig 不显示IPv6地址(除非特别编译支持),而 ip addr 原生支持双栈,且每条地址带标签(如 global、link-local),便于区分用途。
启用、禁用网卡和临时改IP
两类命令都能做临时配置,但语法和能力不同:
-
ifconfig:
ifconfig eth0 up启用,ifconfig eth0 down关闭;设IP写成ifconfig eth0 192.168.1.50 netmask 255.255.255.0 -
ip:
ip link set eth0 up/down;设IP用ip addr add 192.168.1.50/24 dev eth0,支持CIDR格式,一条命令就带掩码,还支持添加多个IP、删除指定地址(ip addr del ...)
关键区别:ifconfig 修改的是整个接口的主IP,而 ip 可以在同一接口上叠加多个IP,且能精确控制生命周期(如 preferred_lft)。
查路由、网关和ARP表
ifconfig 完全不涉及这些——它只管“接口层”,不碰“网络层”:
- 查默认网关:
ip route show default(ifconfig没有对应功能,得配合route -n) - 查ARP缓存:
ip neigh(ifconfig无法查看) - 查策略路由或多表路由:
ip rule、ip route show table 100—— ifconfig 完全不支持
也就是说,只要涉及路由、隧道、命名空间、流量控制等现代网络场景,ip 是唯一选择。
兼容性与长期使用建议
这不是风格偏好问题,而是维护现实:
-
ifconfig来自老旧的net-tools包,多年无实质更新,Ubuntu 22.04+/CentOS 8+/Fedora 默认不预装,需手动apt install net-tools或yum install net-tools -
ip属于iproute2,是 Linux 内核官方配套工具,所有现代发行版默认集成,持续更新,脚本友好,输出稳定易解析 - 系统启动时的网络配置(如
/etc/network/interfaces或/etc/sysconfig/network-scripts/ifcfg-eth0)虽仍沿用 ifconfig 风格参数,但后台实际调用的已是 ip 命令
新环境、自动化脚本、CI/CD 流水线中,一律优先用 ip;仅在排查老系统或阅读遗留文档时遇到 ifconfig,理解其等价写法即可。










