Linux上的ifconfig vs ip使用指南

时间:2020-02-23 14:31:02  来源:igfitidea点击:

欢迎使用Linux上的ifconfig vs ip使用指南。在Linux/Unix系统上管理网络时,ifconfig和ip命令最有用。该ip命令已经存在了一段时间,但大多数人仍然坚持使用ifconfig进行日常网络配置和Linux上的故障排除。在本文中,我将尝试为我们提供掌握masteripcommand所需的基础知识,并展示两者之间的比较。

简而言之,应该将ip工具替换为ifconfig,因为ifconfig被认为已弃用,并且尚无任何积极的发展。在最近的Linux系统上,缺少ifconfig命令,可以从net-tools软件包中进行安装。在各种操作系统上的安装如下。

在Arch上安装ifconfig

在Arch Linux上,netconfig工具包提供了ifconfig工具,可以使用以下命令进行安装。

$sudo pacman -S net-tools
$sudo pacman -Qi net-tools
Name : net-tools
Version : 1.60.20150710git-1
Description : Configuration tools for Linux networking
Architecture : x86_64
URL : http://net-tools.sourceforge.net/
Licenses : GPL2
.....

要确认已安装该工具,只需在终端上发出命令ifconfig。

在Ubuntu上安装ifconfig

如果Ubuntu版本缺少ifconfig命令,则可以通过以下方式安装它:

sudo apt-get install net-tools

在Fedora/CentOS上安装ifconfig

--- CentOS --
sudo yum install net-tools

--- Fedora --
sudo dnf install net-tools

对于ip命令,如果由于任何原因而丢失,也可以安装它。

在Ubuntu上安装ip命令

Ubuntu上的ip命令由可从apt-get安装的iproute2软件包提供。

sudo apt-get install iproute2

在CentOS/Fedora上安装ip命令

提供ip命令的软件包是iproute,可以使用yum/dnf进行安装或者更新。

sudo yum -y install iproute

ip和ifconfig命令的比较

为了进行比较,请使用大量示例来演示如何使用ip命令以及与ifconfig一起使用的类似命令来完成操作。由于这两个命令在所有Linux发行版中均可用,因此我们可以坚持使用。如果我们已经很长时间成为anifconfiguser,那么本指南将向我们介绍足以使我们开始使用iptool的命令。

在所有示例中,任何带有前缀ifconfig的命令都特定于ifconfig工具,而任何以ip开头的命令都特定于ip网络管理工具。因此,请记住这一点。

显示网络接口和IP地址信息

要使用ip/ifconfig获取所有与IP地址有关的信息,请使用以下命令。

$ifconfig
$ip addr

启用/禁用网络接口:

如果要断开或者打开接口,通常在修改网络配置时执行此操作,则可以使用以下命令。 interfaceeth0可以替换为任何其他接口名称。

$sudo ifconfig eth0  {up|down}
$sudo ip link set dev eth0 {up|down}

设置静态IP和网络掩码:

可以使用ip或者ifconfig完成静态IP设置。但是请注意,使用这些命令所做的更改在重启后不会持久存在。探索使用thenmclitool设置静态ip或者修改发行版上的网络配置文件以进行永久更改。

例:

sudo ifconfig eth0 192.168.1.10 netmask 255.255.255.0
sudo ip addr add 192.168.1.10/34 dev eth0

删除静态IP地址:

要清除接口命令的IP地址信息,两种工具的语法如下:

sudo ifconfig eth0 del 192.168.1.10
sudo ip addr del 192.168.1.10/24 dev eth0

设置网络MTU

MTU是最大传输单位的缩写。在联网中,这是可以在单个网络事务中进行通信的最大网络层协议数据单元的大小。在此示例中,设置了1500字节的mtu大小。对于存储服务器/系统,较大的MTU值很常见。

sudo ifconfig eth0 mtu 1500
sudo ip link set dev eth0 mtu 1500

启用混杂模式

混杂模式是网络中的一种操作模式,通过它网络适配器可以接收和读取传输的每个数据包。通常用于监视网络活动。

sudo ifconfig eth0 promisc
sudo ip link set dev eth0 promisc on

启用ARP

地址解析协议是一种通信协议,用于发现与给定IPv4地址关联的链路层地址,这是Internet协议计算机网络中的关键功能。要使其运行命令:

sudo ifconfig eth0 arp
sudo ip link set dev eth0 arp on

设置MAC地址

ip和ifconfig命令可以在运行时更改MAC地址。在此示例中,将MAC地址设置为aa:bb:cc:dd:ee:ff。请注意,每个NIC都有固定的mac地址,无法更改,因此不建议更改mac地址,因为如果存在任何冲突,它可能会导致第2层网络通信出现问题。

sudo ifconfig eth0 hw ether  aa:bb:cc:dd:ee:ff
sudo ip link set dev eth0 address aa:bb:cc:dd:ee:ff

通过网关IP添加默认路由

可以使用ip和ifconfig命令为未定义静态路由的目标设置默认路由。

sudo route add default gw 192.168.1.1
sudo ip route add default via 192.168.1.1

设定静态路线

静态路由定义了到特定网络的目的地。在此示例中,指定所有发往192.168.3.0/24网络的数据包都必须通过192.168.1.1网关。默认网关的网络接口是eth0。

sudo route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.1.1
sudo ip route add 192.168.3.0/24 via 192.168.1.1 dev eth0

此博客上提供了另一本关于在Linux上设置静态路由的指南。请阅读它以增强此处已经积累的知识。

查看邻居(使用ARP和NDP):

要检查ARP表,请运行:

$ip neighbor show

显示当前的默认路由。

$ip route show | head -n 1

删除默认GW

如果我们不再需要默认网关设置并且想要更改,则可以使用以下方法删除当前设置:

$ip route del default via 62.12.113.1 dev eth1