'ifconfig'和'ip'命令之间的区别


19

我阅读了一些有关'ifconfig'命令的文章/教程,其中大多数都包含一条共同的声明-

“ ip命令弃用了ifconfig”

并建议学习ip命令。但是他们都没有解释'ip'命令比'ifconfig'更强大。

两者有什么区别?



Answers:


21

ifconfig来自net-tools,长期以来一直无法完全与Linux网络堆栈保持同步。它还仍然ioctl用于网络配置,这是与内核进行交互的难看且功能较弱的方式。

Linux网络代码中的许多更改以及许多新功能无法使用net-tools:多路径路由,策略路由(请参阅RPDB)访问。route允许您做一些愚蠢的事情,例如使用相同的度量标准将多个路由添加到相同的目的地。

另外:

  • ifconfig 没有报告某些设备的正确硬件地址。
  • 您不能配置ipip,sit,gre,l2tp,等在内核静态隧道。
  • 您无法创建tun或tap设备。
  • 将多个地址添加到给定接口的方式语义也很差。
  • 您也不能使用net-tools任何一个来配置Linux交通控制系统。

另请参阅ifconfig糟透了。

编辑:删除了关于net-tools开发停止的断言,到现在我忘记了这篇文章的去处。net-tools自iproute2发布以来就一直在进行研究,尽管主要是错误修复和较小的增强和功能,例如国际化。


NET-3网络工具不是唯一的ifconfig。例如,GNU inetutils中有另一种。这还不是全部。 unix.stackexchange.com/a/504084/5132
— JdeBP

7

ifconfig是传统命令,用于显示有关网络接口的信息并更改某些设置。特别是,它可以启动和关闭接口。大多数Unix变体中都存在它。

在Linux上,该ifconfig命令已经有很长时间没有发展了。它所做的仍然很好。如果您正在使用ifconfig某物,则没有理由停下来。

Linux还提供了iproute2工具套件中的ip命令。该命令将几个古典命令和更多,包括,和。可以做的不止是。另一方面,它并不总是存在,尤其是在嵌入式系统上(从来没有出现在Linux以外的unix变体上)。ipifconfigroutearpipifconfigip

解析ifconfig输出有点烂。解析ip输出有点烂。那里没有赢家。


我一直认为解析ip的输出相当简单,并且肯定比容易得多ifconfig。我也很喜欢在很多情况下,ip命令的输出可以用作对另一个ip命令的输入,而几乎不需要修改(例如,的每一行都ip route show可以用作的参数ip route add)。
— 帕特里克

1
@Patrick解析ip route,ip rule输出非常清晰并且很容易解析。但是ip link,还是ip addr很痛苦的。我真的希望有人提交补丁或类似的东西来ip addr打印出准确的语句,也许需要切换一下,就像使用时一样,使用当前的设置进行设置ip route show。
— Zoredache

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.