网络管理工具变迁 – 从 net-tools 到 iproute2


linux 操作系统的一个突出优势就是其提供了稳定而强大的网络功能。linux 通过内核对网络核心功能的运行进行管理。与此同时,在用户空间,linux 也提供了相关工具包对内核层的网络参数进行修改和配置。根据对内核的不同访问方式,linux 系统中先后采用两代网络工具包,net-tools 和 iproute2。

从 net-tools 到 iproute2

net-tools 源于 BSD 的 TCP/IP 工具箱,后来成为老版本 linux 内核中配置管理网络功能的工具。许多常见网络管理工具箱,如 netstatroute、ifconfig,都是由 net-tools 提供的。


pic-1

linux 的应用发展中,net-tools 工具箱起到重要作用,至今仍是许多 linux 网络管理员手中的常备工具。
但随着技术的发展,net-tools 工具箱逐步有被技术更为先进的 iproute2 工具箱所取代之势。

net-tools 通过 procfs(/proc) 和 ioctl 系统调用去访问和改变内核网络配置,而 iproute2 则通过 netlink 协议与内核进行通讯。在多个任务的情况下,iproute 的效率会更高。与内核通信的不同方式也成为两个工具链的最本质区别

The /proc interface is known to be more heavyweight than netlink interface.

自 2001 年起,linux 社区已经停止对 net-tools 进行维护。同时,一些 linux distribution 的新版本已经完全抛弃了net-tools,只支持iproute2。如 Arch、Centos、Ubuntu 等,系统默认安装自带 iproute2 包,但是不安装 net-tools 工具包,如需使用要额外安装。

作为与 linux 内核技术配套发展的网络管理配置工具集,iproute2 也随着内核的演进在不断持续更新。除了覆盖 net-tools 能够提供的能力外,iproute2 还能提供许多 net-tools 无法完成的额外功能,如 source-based routing, QoS, VLAN, bonding, bridges 等。

正是因为 iproute2 强大的能力,它也成为一些高层网络配置管理工具的基础依赖组件,比如 Network Manager。

注:network-manager 工具包,包括 nm 系列命令,如 nmcli、nmtui 等。

iproute2 工具集

相较 net-tools,iproute2 提供了更为更丰富的工具集。


pic-2

这些命令涵盖了网络接口管理(启动/关闭、IP 相关设置)、路与管理、隧道管理、流量控制等功能。

net-tools 与 iproute2 典型指令映射

iproute2 指令集功能实现了对 net-tools 功能的全面覆盖,net-tools 中的指令都能在 iproute2 中找到对应。

net-tools 中的指令 iproute2 中的指令
ifconfig -a ip addr / ip a
ifconfig eth0 up ip link set eth0 up
ifconfig -s / netstat -i ip -s link
route -n ip route / ip r
route add ip route add
route del ip route del
ipmaddr ip maddr
iptunnel ip tunnel
apr -na ip neigh
netstat ss
netstat -tnlp ss -tnlp

从上可见,ip 指令和 ss 指令结合各种参数,就基本能完成对 net-tools 常用指令集的映射,这两个指令也是 iproute2 指令集中最常用的指令。

iproute2 指令特点

(1) 指令格式

在指令的使用格式上,iproute2 相对 net-tools 显得更为整齐和直观,基本采用 “主命令 + 网络资源参数” 的命令的格式,如 ip + 网络资源参数。而各种网络资源参数(如 link、IP 地址、路由和隧道等),都用相关对象的抽象形式去定义,如此,可以让用户使用一致的语法去管理不同的对象。

(2) 结果呈现格式

在结果的输出方式上,虽有少数指令输出的结果一致(如 ipmaddr 和 ip maddr),iproute2 的绝大部分指令输出结果的格式与对应的 net-tools 指令不同。

如 route -n 与 ip route

pic-4

如 netstat 与 ss

pic-3

net-tools 工具集结果呈现格式显得更为工整,iproute2 结果则显得更为紧凑。

iproute2 的技术先进性受到了社区的推崇,并成为默认的推荐。但习惯的力量很难改变,多年过去,net-tools 依然还在被广泛使用。同时,linux 大量旧系统的存在也会使的两套工具并用的局面持续下去。

Reference

  1. https://www.xmodulo.com/linux-tcpip-networking-net-tools-iproute2.html (net-tools 与 iproute2 指令应用实例比对)
  2. https://linux.cn/article-4326-1.html
  3. http://www.moheqionglin.com/site/blogs/55/detail.html
  4. https://en.wikipedia.org/wiki/Iproute2

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注