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


19

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

“ ip命令弃用了ifconfig”

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

两者有什么区别?



Answers:


21

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

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

另外:

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

另请参阅ifconfig糟透了

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


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 routeip 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.