告别 ifconfig:为什么现代 Linux 系统推荐使用 ip 命令

news2025/4/15 20:10:09

告别 ifconfig:为什么现代 Linux 系统推荐使用 ip 命令

ifconfig 指令已经被视为过时的工具,不再是查看和配置网络接口的推荐方式。 与 netstatss 替代类似。
本文简要介绍 ip addr 命令的使用

简介ip

ifconfig 属于 net-tools 包,这个包在许多现代 Linux 发行版中被标记为废弃。官方推荐的替代命令是 ip,它来自 iproute2 包。

# 没有这个指令的话需要安装一下
sudo apt update
apt install -y iproute2

常见替换对照:

过时命令现代替代功能描述
ifconfigip addr显示所有网络接口
ifconfig eth0ip addr show dev eth0显示特定接口信息
ifconfig eth0 upip link set eth0 up启用网络接口
ifconfig eth0 downip link set eth0 down禁用网络接口
ifconfig eth0 192.168.1.2ip addr add 192.168.1.2/24 dev eth0设置IP地址

为什么应该使用 ip 而非 ifconfig:

  1. 功能更完整 - ip 支持更多现代网络特性,如策略路由、隧道配置等
  2. 语法更一致 - ip 命令有更加一致的语法结构
  3. 持续维护 - iproute2 包持续获得更新和维护
  4. 性能更好 - ip 命令在处理大量网络接口时性能更佳
  5. 发行版支持 - 许多新的Linux发行版默认可能不再预装ifconfig

其他被替代的网络工具:

  • netstatss
  • routeip route
  • arpip neigh

虽然出于向后兼容性考虑,许多系统仍然可以安装并使用 ifconfig,但在编写新的脚本或学习网络管理时,建议直接学习和使用 ip 命令,这样可以让被优化的时间来得更晚一些。

案例分析1:解读 ip addr 输出

让我们通过分析一个我的服务器的 ip addr 输出,来看看我们应该怎么读这个指令的输出。

ip addr

在这里插入图片描述

嚯,眼花缭乱,不要害怕,经过今天我们的学习,后面就清晰了

1. 回环接口详情

在这里插入图片描述

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever

这是系统回环接口,用于本地通信。其中包含一些技术细节如队列规则(qdisc noqueue)、接口状态(state UNKNOWN)和地址生命周期信息(valid_lft forever),这些对日常使用而言通常无需关注。所以我们直接跳过。

2. 物理网卡状态

未连接网卡 (eno2)

在这里插入图片描述

2: eno2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
    link/ether d0:f4:05:1e:8c:bc brd ff:ff:ff:ff:ff:ff
    altname enp1s0

这是未连接的网络接口,可以通过以下特征识别:

  • 标识为 <NO-CARRIER,BROADCAST,MULTICAST,UP>,其中 NO-CARRIER 表示没有物理连接
  • 状态显示为 state DOWN,表示接口未激活
  • 下面没有额外信息,表示没有配置IP地址

注意:eno1eno2表示主板板载网卡,不是"eth number"的缩写,而是"Ethernet On-board"的缩写。

活动网卡 (eno1)

在这里插入图片描述

3: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether d0:f4:05:1e:8c:bb brd ff:ff:ff:ff:ff:ff
    altname enp0s31f6
    inet 192.168.1.202/24 brd 192.168.1.255 scope global noprefixroute eno1
       valid_lft forever preferred_lft forever
    inet6 2408:8207:30b2:e580:1814:a9b1:b54:e480/64 scope global temporary dynamic 
       valid_lft 259175sec preferred_lft 15083sec
    inet6 2408:8207:30b2:e580:dacc:3d78:526f:3fbc/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 259175sec preferred_lft 172775sec
    inet6 fe80::39fe:ddc1:60d4:59d8/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

这是当前活动的网络接口,可以通过以下特征识别:

  • 信息条目较长,包含完整的IP配置
  • 标识为 <BROADCAST,MULTICAST,UP,LOWER_UP>,表示接口已启用且物理连接正常
  • 状态显示为 state UP,表示接口处于活动状态
  • 配置了IP地址 192.168.1.202/24,这就是服务城在局域网中的内网IP

3. Docker网络接口

Docker默认网桥

在这里插入图片描述

4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:e9:cf:64:f0 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:e9ff:fecf:64f0/64 scope link 
       valid_lft forever preferred_lft forever

这是Docker的默认网桥接口:

  • 标识为 <BROADCAST,MULTICAST,UP,LOWER_UP>,表示网桥已启用且有活动连接
  • 配置了IP地址 172.17.0.1/16,作为容器网络的网关
  • 状态 state UP 表明Docker网络正常工作
  • 这是Docker自动创建的虚拟网桥,用于连接所有容器

4. 容器虚拟网络接口

在这里插入图片描述

6: vethce79824@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether 72:68:6f:98:4b:3c brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::7068:6fff:fe98:4b3c/64 scope link 
       valid_lft forever preferred_lft forever

这是容器的虚拟网络接口,这个信息反映了我们是有一个docker服务在启用的,如果你有很多docker服务,你可以看到很多这这种veth的虚拟网卡信息:

  • 表示为 vethce79824@if5,是一个虚拟以太网设备
  • master docker0 表明它属于Docker默认网桥
  • link-netnsid 0 指示它连接到特定的网络命名空间
  • 状态为 UP,表示接口处于活动状态
  • 这个接口的存在表明系统上有正在运行的Docker容器

补充说明:

  • 每个运行的容器都会创建一个veth接口,与docker0网桥相连
  • 接口名称中的@if5表示它连接到容器内部的接口5,稍后我们会展开说一下这个接口5
  • 当容器停止时,这个虚拟接口会被自动删除

5. 彩蛋:消失的5号接口去哪儿了

在这里插入图片描述

接口 5 是存在的,但不在主机的网络命名空间中,而是在容器的网络命名空间内
我们可以从前面的信息知道 vethce79824@if5 中引用了这个接口。这里有一个网络概念需要解释:

veth 对(Virtual Ethernet Pair)的工作原理
  1. veth 对(Virtual Ethernet Pair)

    • 当 Docker 创建一个容器时,它会创建一对虚拟网络接口
    • 这对接口就像一个虚拟的"网线",两端分别连接在不同的网络命名空间
    • 一端(这里的 vethce79824)在主机命名空间中,序号为 6
    • 另一端(引用的 if5)在容器命名空间中,序号为 5
  2. 网络命名空间隔离

    • Linux 网络命名空间是网络栈的隔离实例
    • 每个容器都有自己独立的网络命名空间
    • 主机上的 ip addr 命令只能看到主机命名空间中的接口
    • 容器内的接口只能在容器内部看到
  3. 接口命名约定

    • vethce79824@if5 中的 @if5 表示"这个 veth 接口连接到 ID 为 5 的接口"
    • 这个标记让管理员知道这个 veth 接口的"另一头"在哪里
如何查看缺失的接口 5

如果想查看接口 5,需要进入容器的网络命名空间:

# 找到容器 ID
docker ps -a

# 查看容器网络命名空间中的接口
docker exec <容器ID> ip addr

在这里插入图片描述
看吧,找的啦!

注意接口 5(容器内的 eth0)引用了接口 6(主机上的 ethce79824)。这是一个双向引用,表明它们是一对 veth 接口。

ifconfig 其他替代指令对照表

为帮助过渡,这里列出常见 ifconfig 命令及其 ip 命令等效替代:

ifconfig 命令ip 命令替代功能
ifconfigip addr显示所有接口信息
ifconfig eth0ip addr show dev eth0显示特定接口信息
ifconfig eth0 upip link set eth0 up启用接口
ifconfig eth0 downip link set eth0 down禁用接口
ifconfig eth0 192.168.1.1ip addr add 192.168.1.1/24 dev eth0设置IP地址
ifconfig eth0 netmask 255.255.255.0ip addr add 192.168.1.1/24 dev eth0设置子网掩码
ifconfig eth0 hw ether AA:BB:CC:DD:EE:FFip link set dev eth0 address AA:BB:CC:DD:EE:FF设置MAC地址

结论

在现代 Linux 系统中,ip 命令已成为管理网络接口的首选工具。它不仅提供了更丰富、更精确的网络信息,而且拥有更强大的功能集和更一致的语法结构,能够满足现代网络环境(包括容器化、虚拟化等)的需求。

虽然出于习惯和兼容性考虑,许多系统管理员仍在使用 ifconfig,但为了更好地适应现代 Linux 系统的发展趋势,学习和使用 ip 命令将是一项值得的投资。无论是查看网络状态还是进行网络配置,ip 命令都能提供更全面的解决方案。

所以,是时候告别 ifconfig,拥抱 ip 了!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2334517.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL——MVCC(多版本并发控制)

目录 1.MVCC多版本并发控制的一些基本概念 MVCC实现原理 记录中的隐藏字段 undo log undo log 版本链 ReadView 数据访问规则 具体实现逻辑 总结 1.MVCC多版本并发控制的一些基本概念 当前读&#xff1a;该取的是记录的最新版本&#xff0c;读取时还要保证其他并发事务…

Gateway-网关-分布式服务部署

前言 什么是API⽹关 API⽹关(简称⽹关)也是⼀个服务, 通常是后端服务的唯⼀⼊⼝. 它的定义类似设计模式中的Facade模式(⻔⾯模式, 也称外观模式). 它就类似整个微服务架构的⻔⾯, 所有的外部客⼾端访问, 都需要经过它来进⾏调度和过滤. 常⻅⽹关实现 Spring Cloud Gateway&a…

Docker部署MySQL大小写不敏感配置与数据迁移实战20250409

Docker部署MySQL大小写不敏感配置与数据迁移实战 &#x1f9ed; 引言 在企业实际应用中&#xff0c;尤其是使用Java、Hibernate等框架开发的系统&#xff0c;MySQL默认的大小写敏感特性容易引发各种兼容性问题。特别是在Linux系统中部署Docker版MySQL时&#xff0c;默认行为可…

面试题之网络相关

最近开始面试了&#xff0c;410面试了一家公司 问了我几个网络相关的问题&#xff0c;我都不会&#xff01;&#xff01;现在来恶补一下&#xff0c;整理到博客中&#xff0c;好难记啊&#xff0c;虽然整理下来了。在这里先祝愿大家在现有公司好好沉淀&#xff0c;定位好自己的…

[春秋云镜] Tsclient仿真场景

文章目录 靶标介绍&#xff1a;外网mssql弱口令SweetPotato提权上线CSCS注入在线用户进程上线 内网chisel搭建代理密码喷洒攻击映像劫持 -- 放大镜提权krbrelayup提权Dcsync 参考文章 考点: mssql弱口令SweetPotato提权CS注入在线用户进程上线共享文件CS不出网转发上线密码喷洒…

数据集 handpose_x_plus 3D RGB 三维手势 - 手工绘画 场景 draw picture

数据集 handpose 相关项目地址&#xff1a;https://github.com/XIAN-HHappy/handpose_x_plus 样例数据下载地址&#xff1a;数据集handpose-x-plus3DRGB三维手势-手工绘画场景drawpicture资源-CSDN文库

deskflow使用教程:一个可以让两台电脑鼠标键盘截图剪贴板共同使用的开源项目

首先去开源网站下载&#xff1a;Release v1.21.2 deskflow/deskflow 两台电脑都要下载这个文件 下载好后直接打开找到你想要的exe desflow.exe 然后你打开他&#xff0c;将两台电脑的TLS都关掉 下面步骤两台电脑都要完成&#xff1a; 电脑点开edit-》preferences 把这个取…

详解MYSQL表空间

目录 表空间文件 表空间文件结构 行格式 Compact 行格式 变长字段列表 NULL值列表 记录头信息 列数据 溢出页 数据页 当我们使用MYSQL存储数据时&#xff0c;数据是如何被组织起来的&#xff1f;索引又是如何组织的&#xff1f;在本文我们将会解答这些问题。 表空间文…

[Windows] 音速启动 1.0.0.0

[Windows] 音速启动 链接&#xff1a;https://pan.xunlei.com/s/VONiGZhtsxpPzze0lDIH-mR9A1?pwdxu7f# [Windows] 音速启动 1.0.0.0 音速启动是一款桌面管理软件&#xff0c;以仿真QQ界面的形式结合桌面工具的特点&#xff0c;应用于软件文件夹网址的快捷操作。

Hyper-V 虚拟机配置静态IP并且映射到局域网使用

环境 win11hyper-v麒麟v10 配置 编辑文件 vi /etc/sysconfig/network-scripts/ifcfg-eth0文件内容 GATEWAY 需要参考网络中配置的网关地址 TYPEEthernet PROXY_METHODnone BROWSER_ONLYno BOOTPROTOstatic DEFROUTEyes IPV4_FAILURE_FATALno IPV6INITyes IPV6_AUTOCONFyes …

操作系统基础:06 操作系统历史

我们前面已经讲过了操作系统的基本轮廓、启动过程以及系统调用等相关内容&#xff0c;就如同揭开了钢琴的盖子&#xff0c;对操作系统有了初步的表面认识。从现在起&#xff0c;我们要更深入地剖析操作系统&#xff0c;就像分解钢琴一样&#xff0c;探究其各个部分的构成、原理…

【大模型微调】如何解决llamaFactory微调效果与vllm部署效果不一致如何解决

以下个人没整理太全 一、生成式语言模型的对话模板介绍 使用Qwen/Qwen1.5-0.5B-Chat训练 对话模板不一样。回答的内容就会不一样。 我们可以看到例如qwen模型的tokenizer_config.json文件&#xff0c;就可以看到对话模板&#xff0c;一般同系列的模型&#xff0c;模板基本都…

【2025最新】windows本地部署LightRAG,完成neo4j知识图谱保存

之前在服务器部署neo4j失败&#xff0c;无奈只能在本地部署&#xff0c;导致后期所有使用的知识图谱数据都存在本地&#xff0c;这里为了节省时间&#xff0c;先在本地安装LigthRAG完成整个实验流程&#xff0c;后续在学习各种服务器部署和端口调用。从基础和简单的部分先做起来…

14、nRF52xx蓝牙学习(串口 UART 和 UARTE 外设应用)

一、UART 功能描述 串口 UART 也称为通用异步收发器。是各种处理器中常用了通信接口&#xff0c;在 nRF52 芯片中&#xff0c; UART 具有以下特点&#xff1a; ● 全双工操作 ● 自动流控 ● 奇偶校验产生第 9 位数据 串口 UART 的数据发送与接收流程 : ◆硬件配置…

DeepSeek轻松入门教程——从入门到精通

大家好&#xff0c;我是吾鳴。 今天吾鳴要给大家分享一份DeepSeek小白轻松入门指导手册——《DeepSeek 15天指导手册&#xff0c;从入门到精通》。指导手册分为基础入门对话篇、效率飞跃篇、场景实战篇、高手进化篇等&#xff0c;按照指导手册操作&#xff0c;DeepSeek从入门到…

Vue2 老项目升级 Vue3 深度解析教程

Vue2 老项目升级 Vue3 深度解析教程 摘要 Vue3 带来了诸多改进和新特性&#xff0c;如性能提升、组合式 API、更好的 TypeScript 支持等&#xff0c;将 Vue2 老项目升级到 Vue3 可以让项目获得这些优势。本文将深入解析升级过程&#xff0c;涵盖升级前的准备工作、具体升级步骤…

WXJ196微机小电流接地选线装置使用简单方便无需维护

WXJ196微机小电流接地选线装置&#xff0c;能在系统发生单相接地时&#xff0c;准确、迅速地选出接地线路母 线。使用简单方便&#xff0c;无需维护&#xff0c;可根据用户需要将相关信息通过通信接口传给上级监控系统&#xff0c; 适用于无人值守变电站。 2 功能及特点 全新的…

Java第四节:idea在debug模式夏改变变量的值

作者往期文章 Java第一节&#xff1a;debug如何调试程序&#xff08;附带源代码&#xff09;-CSDN博客 Java第二节&#xff1a;debug如何调试栈帧链&#xff08;附带源代码&#xff09;-CSDN博客 Java第三节&#xff1a;新手如何用idea创建java项目-CSDN博客 步骤一 在需要修改…

门极驱动器DRV8353M设计(二)

目录 13.3.4.4 MOSFET VDS 感测 (SPI Only) 13.3.5 Gate Driver保护回路 13.3.5.1 VM 电源和 VDRAIN 欠压锁定 (UVLO) 13.3.5.2 VCP 电荷泵和 VGLS 稳压器欠压锁定 (GDUV) 13.3.5.3 MOSFET VDS过流保护 (VDS_OCP) 13.3.5.3.1 VDS Latched Shutdown (OCP_MODE 00b) 13.…

学点概率论,打破认识误区

概率论是统计分析和机器学习的核心。掌握概率论对于理解和开发稳健的模型至关重要&#xff0c;因为数据科学家需要掌握概率论。本博客将带您了解概率论中的关键概念&#xff0c;从集合论的基础知识到高级贝叶斯推理&#xff0c;并提供详细的解释和实际示例。 目录 简介 基本集合…