Man*_*nde 20 linux networking ip command
我阅读了一些关于“ifconfig”命令的文章/教程,其中大部分都包含一个通用语句 -
“ifconfig 已被 ip 命令弃用”
并建议学习ip命令。但是他们都没有解释“ip”命令如何比“ifconfig”更强大。
它们之间有什么区别?
pil*_*ona 22
ifconfig来自net-tools,它已经很长时间无法完全跟上Linux网络堆栈。它还ioctl用于网络配置,这是一种丑陋且功能较弱的与内核交互的方式。
Linux 网络代码中的许多更改,以及许多新功能无法使用net-tools:多路径路由、策略路由(请参阅 RPDB)。route允许你做一些愚蠢的事情,比如使用相同的度量将多条路由添加到同一个目的地。
此外:
ifconfig 不报告某些设备的正确硬件地址。ipip、sit、gre、l2tp等。tun或tap设备。net-tools。又见ifconfig糟透了。
编辑:删除了关于net-tools开发停止的断言,现在我忘记了这篇文章的来源。net-tools' 自iproute2发布以来一直在努力,尽管它主要是错误修复和小的增强和功能,如国际化。
ifconfig是显示有关网络接口的信息和更改某些设置的传统命令。特别是,它可以启动和关闭接口。它存在于大多数 Unix 变体上。
在 Linux 上,该ifconfig命令已经很长时间没有演变了。它的功能仍然非常好。如果您正在使用ifconfig某些东西,则没有理由停止。
Linux 还提供了ip来自iproute2工具套件的命令。该ip命令结合了几个经典命令和更多命令,包括ifconfig、route和arp。ip可以做的远不止ifconfig. 另一方面,ip它并不总是存在,尤其是在嵌入式系统上(并且永远不会在 Linux 以外的 unix 变体上)。
Parsingifconfig的输出有点糟糕。Parsingip的输出有点糟糕。那里没有赢家。
只是为 pilona 的答案添加一些位。2005 年左右,引入了一种用于控制网络堆栈的新机制——netlink 套接字。
配置网络接口iproute2使用全双工 netlink 套接字机制,同时ifconfig依赖于ioctl系统调用。这里有 2 篇关于netlink 背后的动机和rtnetlink 使用的主要论文。