ifconfig 与 ip 的区别及网络配置比较


作为网络管理员或任何从事网络故障排除的人员,您经常会遇到“ifconfig”和“ip”这两个术语。这两个命令都用于基于Unix的操作系统中的网络接口配置,但它们有什么区别呢?在本文中,我们将剖析这些差异,深入研究一些示例及其输出,以便更好地理解这些命令。

Ifconfig 简介

Ifconfig(接口配置)是Unix和类Unix操作系统中的一个系统管理实用程序,用于配置、控制和查询TCP/IP网络接口参数。它是net-tools软件包的一部分,几乎自Linux诞生以来就存在。

让我们运行一个简单的ifconfig命令来看看它的输出。

$ ifconfig

这可能会产生类似于以下的输出:

eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
   inet 192.168.1.2  netmask 255.255.255.0  broadcast 192.168.1.255
   inet6 fe80::92e2:baff:fe14:5044  prefixlen 64  scopeid 0x20<link>
   ether 90:e2:ba:14:50:44  txqueuelen 1000  (Ethernet)
   RX packets 44675547  bytes 60719045480 (56.5 GiB)
   RX errors 0  dropped 2473  overruns 0  frame 0
   TX packets 32862915  bytes 4461913156 (4.1 GiB)
   TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

在这个例子中,eth0是第一个以太网接口的名称。显示的详细信息包括IP地址(IPv4/IPv6)、子网掩码、广播地址、MAC地址以及RX/TX数据包详细信息。

Ip 简介

然而,大约从2009年开始,“ip”命令开始取代传统的ifconfig。“ip”命令是iproute2软件包的一部分,该软件包得到积极维护,这与net-tools软件包相反。

与ifconfig相比,“ip”命令提供了更多功能。例如,它提供高级路由、隧道,甚至策略。它还提供更简单的语法和一致的输出,使其更容易在脚本或编程中使用。

以下是使用“ip”命令的示例:

$ ip addr

这可能会输出:

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
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
   link/ether 90:e2:ba:14:50:44 brd ff:ff:ff:ff:ff:ff
   inet 192.168.1.2/24 brd 192.168.1.255 scope global dynamic eth0
      valid_lft 86374sec preferred_lft 75574sec
   inet6 fe80::92e2:baff:fe14:5044/64 scope link 
      valid_lft forever preferred_lft forever

比较分析

现在我们已经了解了ifconfig和ip命令的基本工作原理和输出,让我们详细比较一下它们。

语法和用法

“ip”命令拥有更高级和高效的语法。其设计更具层次性,使管理和配置网络接口更加容易。

例如,如果您想使用ifconfig启动网络接口,则可以使用:

$ sudo ifconfig eth0 up

而在“ip”中:

$ sudo ip link set eth0 up

您可以在“ip”命令中看到分层结构,因为“link set”用于配置网络接口参数。

IPv6 支持

ifconfig命令不完全支持IPv6,使其不太适合现代网络。相反,“ip”完全支持IPv6,这在互联网向IPv6过渡时至关重要。

维护和更新

正如我们前面提到的,ifconfig是net-tools软件包的一部分,该软件包已被弃用,不再积极维护。“ip”另一方面,是iproute2软件包的一部分,并得到积极维护,这意味着它会获得更新、新功能和错误修复。

功能和能力

虽然ifconfig主要用于配置网络接口,“ip”可以做更多的事情。它可以配置路由、隧道,并提供高级网络统计信息。

例如,要显示路由表,可以使用:

$ ip route show

输出可能是:

default via 192.168.1.1 dev eth0 
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.2

ifconfig 与 ip 的表格比较

以下是`ifconfig`和`ip`命令的表格比较:

参数

Ifconfig

Ip

可用性

已弃用的net-tools软件包的一部分。未积极维护

积极维护的iproute2软件包的一部分

IPv6 支持

对IPv6的支持有限

完全支持IPv6

功能

主要用于配置网络接口

用于配置网络接口,以及管理路由、隧道和提供高级网络统计信息

命令语法

简单、扁平的语法

更高级、分层语法

用法示例

$ ifconfig eth0 up

$ ip link set eth0 up

显示接口

$ ifconfig

$ ip addr

显示路由表

$ route -n

$ ip route show

添加IP地址

$ ifconfig eth0 192.168.1.2 netmask 255.255.255.0 broadcast 192.168.1.255 up

$ ip addr add 192.168.1.2/24 dev eth0

删除IP地址

不够直接

$ ip addr del 192.168.1.2/24 dev eth0

启用/禁用接口

$ ifconfig eth0 up/down

$ ip link set eth0 up/down

总之,虽然`ifconfig`由于其悠久的历史而可能更熟悉,但`ip`命令更现代、更强大、更通用。建议在现代Linux系统中使用`ip`而不是`ifconfig`。

结论

虽然ifconfig具有其历史意义,并且由于其简单性和熟悉性而仍在使用,“ip”命令为网络配置和故障排除提供了更强大和全面的解决方案。它得到积极维护,功能更丰富,并完全支持IPv6,使其在当今的网络环境中更具相关性。

从ifconfig到ip的过渡起初可能会因为语法和命令结构的差异而感到困难,但是一旦您理解了基本原理,“ip”就会证明它是一个高效且通用的网络管理工具。

更新于:2023年7月17日

浏览量:1000+

开启您的职业生涯

通过完成课程获得认证

开始学习
广告