网站搜索

ifconfig 与 ip:有什么区别和比较网络配置


基于 Linux 的发行版具有一组命令,这些命令提供了通过命令行以简单而强大的方式配置网络的方法。这些命令集可以从 net-tools 包中获得,该包在几乎所有发行版上已经存在很长时间了,并且包括以下命令:ifconfigroute<nameifiwconfigiptunnelnetstatarp

这些命令足以以任何新手或专家 Linux 用户想要的方式配置网络,但由于过去几年 Linux 内核的进步以及这套打包命令的不可维护性,它们正在被弃用并变得更强大能够替代所有这些命令的替代方案正在出现。

这个替代方案已经存在相当长一段时间了,并且比任何这些命令都更强大。其余部分将突出显示此替代方案,并将其与 net-tools 包中的命令之一(即 ifconfig)进行比较。

ip – ifconfig 的替代品

ifconfig 已经存在很长时间了,并且仍然被许多人用来配置、显示和控制网络接口,但 Linux 发行版上现在存在一种新的替代方案,它比它强大得多。此替代方案是来自 iproute2util 包的 ip 命令。

虽然这个命令乍一看可能有点复杂,但它的功能比 ifconfig 更广泛。它在功能上组织在网络堆栈的两层上,即第 2 层链路层)、第 3 层IP 层 >) 并执行 net-tools 包中所有上述命令的工作。

虽然ifconfig主要显示或修改系统的界面,但该命令能够执行以下任务:

  1. 显示或修改界面属性。
  2. 添加、删除 ARP 缓存条目以及为主机创建新的静态 ARP 条目。
  3. 显示与所有接口关联的 MAC 地址。
  4. 显示和修改内核路由表。

它与古代版本 ifconfig 的主要区别之一是后者使用 ioctl 进行网络配置,这是一种不太受欢迎的与内核交互的方式,而前者则利用了这一点netlink 套接字机制也是如此,它是 ioctl 的更灵活的后继者,用于使用 rtnetlink (增加了网络环境操作功能)在内核和用户空间之间进行相互通信。

我们现在可以开始重点介绍 ifconfig 的功能以及如何有效地用 ip 命令替换它们。

ip 与 ifconfig 命令

以下部分重点介绍了一些 ifconfig 命令及其使用 ip 命令的替换:

1.显示Linux中的所有网络接口

这里,ipifconfig 之间的一个区别特征是 ifconfig 仅显示启用的接口,而 ip 显示所有接口,无论启用还是禁用。

ifconfig 命令
ifconfig

ip命令
ip a

2. 在 Linux 中添加或删除 IP 地址

以下命令将 IP 地址 192.168.80.174 分配给接口 eth0

ifconfig – 添加/删除 IP 地址
ifconfig eth0 add 192.168.80.174

使用 ifconfig 命令添加/删除接口的语法:

ifconfig eth0 add 192.168.80.174
ifconfig eth0 del 192.168.80.174
ip – 添加/删除 IP 地址
ip a add 192.168.80.174 dev eth0

使用 ip 命令添加/删除接口的语法:

ip a add 192.168.80.174 dev eth0
ip a del 192.168.80.174 dev eth0

4. 将 MAC 硬件地址添加到网络接口

以下命令将接口 eth0 的硬件地址设置为命令中指定的值。这可以通过检查 ifconfig 命令输出中的 HWaddr 值来验证。

ifconfig – 添加 MAC 地址

这里是使用 ifconfig 命令添加 MAC 地址的语法:

ifconfig eth0 hw ether 00:0c:29:33:4e:aa
ip – 添加 MAC 地址

这里是使用 ip 命令添加 MAC 地址的语法:

ip link set dev eth0 address 00:0c:29:33:4e:aa

4. 设置网络接口的其他配置

除了设置 IP 地址或硬件地址之外,可以应用于接口的其他配置包括:

  1. MTU(最大传输单元)
  2. 组播标志
  3. 发送队列长度
  4. 混杂模式
  5. 启用或禁用所有组播模式
ifconfig – 其他网络配置
ip – 其他网络配置

<中心>

A。将 MTU 值设置为 2000。

ifconfig eth0 mtu 2000
ip link set dev eth0 mtu 2000

<中心>

b.启用或禁用多播标志。

ifconfig eth0 multicast
ip link set dev eth0 multicast on

<中心>

C。设置传输队列长度。

ifconfig eth0 txqueuelen 1200
ip link set dev eth0 txqueuelen 1200

<中心>

d.启用或禁用混杂模式。

ifconfig eth0 promisc
ip link set dev eth0 promisc on

<中心>

e.启用或禁用所有组播模式。

ifconfig eth0 allmulti
ip link set dev eth0 allmulti on

5. 启用或禁用网络接口

以下命令启用或禁用特定网络接口。

ifconfig – 禁用/启用网络接口

以下命令禁用接口 eth0 并通过 ifconfig 的输出进行验证,默认情况下仅显示那些已启动的接口。

ifconfig eth0 down

要重新启用该界面,只需将向下替换为向上即可。

ifconfig eth0 up
ip – 禁用/启用网络接口

下面的 ip 命令是 ifconfig 的替代命令,用于禁用特定接口。这可以通过 'ip a' 命令的输出进行验证,该命令默认显示所有接口(打开或关闭),但突出显示其状态以及说明。

ip link set eth0 down

要重新启用该界面,只需将向下替换为向上即可。

ip link set eth0 up

6. 启用或禁用ARP协议的使用

以下命令在特定网络接口上启用或禁用 ARP 协议。

ifconfig – 启用/禁用 ARP 协议

该命令启用 ARP 协议与接口 eth0 一起使用。要禁用此选项,只需将 arp 替换为 -arp 即可。

ifconfig eth0 arp
ip – 启用/禁用 ARP 协议

此命令是为接口 eth0 启用 ARP 的 ip 替代命令。要禁用,只需将on替换为off即可。

ip link set dev eth0 arp on

结论

因此,我们重点介绍了 ifconfig 命令的功能以及如何使用 ip 命令来完成这些功能。目前Linux发行版都为用户提供了这两种命令,以便用户根据自己的方便使用。那么,您认为哪个命令更方便,您更喜欢使用哪个命令?请在评论中提及这一点。

如果您想了解有关这两个命令的更多信息,那么您应该阅读我们之前的文章,其中更详细地展示了 ifconfig 和 ip 命令的一些实际示例。

不要错过: 15 个在 Linux 中配置网络接口的“ifconfig”示例

不要错过: 10 个在 Linux 中配置网络接口的“ip ”命令示例