ip命令手册

ip 命令手册ip 命令手册(一)摘要ip 是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具。例如:ifconfig 、route 等。这个手册将分章节介绍ip

ip 命令手册

ip 命令手册(一)

摘要

ip 是iproute2软件包里面的一个强大的网络配置工具,它能够替代一些传统的网络管理工具。例如:ifconfig 、route 等。这个手册将分章节介绍ip 命令及其选项。

18:40:46)本文的原文在http://defiant.coinet.com/iproute2/ip-cref/(2002-10-15

By nixe0n

作者:AlexeyN.Kuznetsov

编译:nixe0n

1.关于这篇文档

2.ip 命令的语法

3.ip 的错误信息

4.ip link--配置网络设备

4.1.ip link set--改变设备的属性

4.2.ip link show--显示设备属性

5.ip address--协议地址管理

5.1.ip address add--添加一个新的协议地址

5.2.ip address delete--删除一个协议地址

5.3.ip address show--显示协议地址

5.4.ip address flush--清除协议地址

6.ip neighbour--neighbour/arp表管理命令

6.1.ip neighbour add --添加一个新的邻接条目

ip neighbour change--修改一个现有的条目

ip neighbour replace--替换一个已有的条目

6.2.ip neighbour delete--删除一个邻接条目

1

,

ip 命令手册

6.3.ip neighbour show--显示网络邻居的信息

6.4.ip neighbour flush--清除邻接条目

1. 关于这篇文档

ip 是iproute2软件包里面的一个强大的网络配置工具,本文将分章节介绍ip 命令及其选项。为了便于理解,作者在本文中列举了很多示例。但是,正如作者所说,这不是一个教程,而是一个使用手册。

2.ip 命令的语法

ip 命令的用法如下:

ip [OPTIONS]OBJECT [COMMAND[ARGUMENTS]]

其中,OPTIONS是一些修改ip 行为或者改变其输出的选项。所有的选项都是以-字符开头,分为长、短两种形式。目前,ip支持如下选项:

OBJECT 是你要管理或者获取信息的对象。目前ip 认识的对象包括:

2

,

ip 命令手册

另外,所有的对象名都可以简写,例如:address 可以简写为addr ,甚至是a 。

COMMAND 设置针对指定对象执行的操作,它和对象的类型有关。一般情况下,ip 支持对象的增加(add )、删除(delete )和展示(show 或者list )。有些对象不支持所有这些操作,或者有其它的一些命令。对于所有的对象,用户可以使用help 命令获得帮助。这个命令会列出这个对象支持的命令和参数的语法。如果没有指定对象的操作命令,ip会使用默认的命令。一般情况下,默认命令是list,如果对象不能列出,就会执行help 命令。

ARGUMENTS 是命令的一些参数,它们倚赖于对象和命令。ip 支持两种类型的参数:flag 和parameter 。flag由一个关键词组成;parameter由一个关键词加一个数值组成。为了方便,每个命令都有一个可以忽略的默认参数。例如,参数dev 是ip link 命令的默认参数,因此ip link ls eth0等于ip link ls dev eth0。我们将在后面的章节详细介绍每个命令的使用,命令的默认参数将使用default 标出。

几乎所有的关键词都可以简写为前几个字母。在交互工作时,简写的方式非常方便,但是我们不建议在脚本中使用简写形式。另外,在讲述过程中,所有的“官方”简写方式都会在文章中列出。

3.ip 的错误信息

由于以下原因,ip可能会操作失败:

∙命令行语法错误:一个未知的关键词(anunknown keyword) ;错误的IP 地址格式

(incorrectlyformated IP address) 。在这种情况下,ip 会打印出错误信息然后退出,在错

误信息中会包含失败的原因。有时ip 也会打印帮助信息。

∙参数不能通过一致性校验。由于用户没有提供足够的信息,造成ip 无法从参数中编译出内核请求。内核返回某些系统调用的错误。ip 使用perror(3)输出错误信息,因此输出的错误信内核返回RTNETLINK 请求错误。这类错误信息以"RTNETLIK answers" 开头。息包含一段注释以及系统调用号。

ip 的所有操作都是原子操作。例如,如果ip 执行失败,它不会系统的任何东西,ip link command 例外,它会修改某些设备参数。

我们无法列出所有的错误信息,尤其是语法错误。不过,错误信息的意思都非常明确。下面,我们列举一些经常出现的错误信息:

∙内核不支持netlink(netlink用于在内核模块和用户之间传递信息) ,会出现以下错误

Cannot open netlink socket:Invalid value

∙内核不支持RTNETLINK ,会出现以下错误信息:

3信息:

,

ip 命令手册

Cannot talk to rtnetlink:Connect refused

Cannot send dump request:Connect refused

∙如果在编译内核时没有配置CONFIG_IP_MULTIPLE_TABLES选项。在使用ip 规则时会出现和下面的信息类似的错误信息:

kuznet@kaise$ip rule list

RTNETLINK error:Invalid argument

dump terminated

4.1.ip link set--改变设备的属性

∙缩写:set、s

4

,

ip 命令手册

注意:ip不能修改PROMISC 或者ALLMULTI 选项。这两个选项已经比较陈旧,而且也不应该随便修改。

注意:如果同时修改多个参数,任何一个修改失败,ip都会立即取消操作。这种情况可能使系统进入无法预料的状态。为了避免出现这种情况,尽量不要使用ip link set 同时修改多个参数,例如:iplink set dev eth0mtu 1500txqueuelen 100。

4.2.ip link show--显示设备属性

∙缩写:show 、list 、lst 、sh 、ls 、l

∙kuznet@alisa:~$ip link ls eth0

3:eth0:mtu 1500qdisc cbq qlen 100

link/ether00:a0:cc:66:18:78brd ff:ff:ff:ff:ff:ff:

kuznet@alisa:~$ip link ls sit0

5:sit0@NOME:mtu 1480qdisc noqueue

link/sit0.0.0.0brd 0.0.0.0

kuznet@alisa:~$ip link ls dummy

2:dummy:mtu 1500qdisc noop

link/ether00:00:00:00:00:00brd ff:ff:ff:ff:ff:ff

kuznet@alisa:~$

在显示的信息中,每个引号之前的数字是一个接口索引,用于识别网络接口。这个数字后面是网络接口的名字(例如:eth0、dummy等),它也和网络接口一一对应。不过,在某些情况下,例如:驱动模块被卸载,对应的接口名就会从列表中消失,而其它新创建的接口就会使用相同的名字。系统管理员可以ip link set name 修改接口的名字。

接口名可以是别的,或者是@NONE。这意味着这个设备被绑定到其它的设备,例如数据包被发送到这个设备,由这个设备封装,并从master 设备发出。如果设备名字是NONE ,就表示master 设备是未知的。

接着,我们看到的是mtu(MaximalTransfer Unit,最大传输单元)。它决定这个接口单个数据包能够传输多少数据。

qdisc (queuingdiscipline)显示这个网络接口使用的排队算法。noqueue 表示不对数据包进行排队;noop 表示这个网络接口出于黑洞模式,也就是所有进入本网络设备的数据会直接被丢弃。qlen 是网络接口传输队列的默认长度。

5

,

ip 命令手册

网络接口可以有如下标志:

*如果网络接口的标志不属于LOOPBACK、BROADCAST和POINTTOPOINT 的任何一个,就假定是NMBA(Non-BroadcastMulti-Access)类型。这是最为普遍的一个标志。

*除此之外,还有其它一些标志。这些标志或者已经过时(例如:NOTRAILERS),或者还没有实现(如:DEBUG),或者只是特定于某些设备(例如:MASTER、AUTOMEDIA、PORTSEL)。因此,在此我们不作讨论。

*对于PROMISC 和ALLMULTI 标志,ifconfig 和ip 显示的值是不同的。ip link ls 命令显示的是设备的真正状态,而ifconfig 显示的是自己设置的虚拟设备状态。

显示信息的第二行包含和链路层地址(MAC地址)相关的信息。其中,第一个词(ether、sit)定义接口的硬件类型。而接口的硬件类型又决定MAC 地址的格式和语法。默认的格式是硬件的MAC 地址和广播地址(如果是点对点连接方式,就是对端的地址),地址是用冒号隔开的16进制数字。不过,默写类型的连接有其特定的地址格式,例如:IP通道的地址格式是用点分开的IP 地址。

NBMA(Non-BroadcastMulti-Access)连接没有明确定义的广播地址和对端地址。不过,这个域包含一些有用的信息,例如:倚赖于ARP 服务器的广播地址。

6

,

ip 命令手册

使用这个命令不会显示多播地址,需要使用ip maddr ls 命令。详情请参考第9节ip maddr ls。

统计信息

使用-statistics选项,ip命令会打印出网络接口的统计信息,例如:

kuznet@alisa:~$ip -s link ls eth0

3:eth0:mtu 1500qdisc cbq qlen 100

link/ether00:a0:cc:66:18:78brd ff:ff:ff:ff:ff:ff

RX:bytes packets errors dropped overrun mcast

244994936227861870000

TX:bytes packets errors dropped carrier collsns

1785584971783946332033235172

kuznet@alisa:~$

RX:和TX:分别是接收和发送统计信息的开头。得到的统计信息包括:

如果-s 选项出现两次或者更多次,ip会输出更为详细的错误信息统计。

kuznet@alisa:~$ip -s -s link ls eth0

3:eth0:mtu 1500qdisc cbq qlen 100

link/ether00:a0:cc:66:18:78brd ff:ff:ff:ff:ff:ff

RX:bytes packets errors dropped overrun mcast

244994936227861870000

RX errors:length crc frame fifo missed

00000

TX:bytes packets errors dropped carrier collsns

1785584971783946332033235172

7

,

ip 命令手册

TX errors:aborted fifo window heartbeat

000332

kuznet@alisa:~$

这些错误的名字是纯以太化的,对于其它种类的设备,这些域可能有不同的解释。

5.1.ip address add--添加一个新的协议地址

∙缩写:add 、a

8

,

ip 命令手册

*注1:使用-,ipaddr ls 显示的是网络地址;使用 ,ipaddr ls 显示的是广播地址。*注2:有关scope,在附录A 中有更为详细的解释。

示例

∙在回环设备上添加一个回环地址:#ipaddr add 127.0.0.1/8dev lo brd scope host 在以太网接口eth0上增加一个地址10.0.0.1,掩码长度为24位(155.155.155.0),标准

#ipaddr add 10.0.0.1/24brd dev eth0label eth0:Alias广播地址,标签为eth0:Alias:

5.2.ip address delete--删除一个协议地址

∙缩写:delete 、del 、d

∙参数

这个命令的参数和ip addr add 命令的参数一致。其中,只有设备名是必需的参数,其它都是可选的。如果没有给定除设备名之外的其它参数,ip就会删除这个设备的第一个地址。

∙示例

∙删除回环设备的一个回环地址。不过,最好不要作这种尝试。#ipaddr del 127.0.0.1/8dev lo 以下shell 代码可以取消设备上的所有IP 地址。

while ip -f inet add del dev eth0;do

:nothing

done

∙另外,可以使用ip addr flush 命令取消IP 地址

5.3.ip address show--显示协议地址

∙缩写:show 、list 、lst 、sh 、ls 、l

9

,

ip 命令手册

duznet@alisa:~$ip addr ls eth0

3:eth0:mtu 1500qdisc cbq qlen 100

link/ether00:a0:cc:66:18:78brd ff:ff:ff:ff:ff:ff

inet 193.233.7.90/24brd 193.233.7.255scope global eth0

inet63ffe:2400:0:1:2a0:ccff:fe66:1878/64

scope global dynamic

valid_lftforever preferred_lft604746sec

inet6fe80::2a0:ccff:fe66:1878/10scope link

duznet@alisa:~$

输出的头两行和ip link ls 的输出是相同的。

接着是IP 和IPv6地址、广播地址以及其它的地址属性:范围(scope)、标志(flag)和标签(label)。地址标志由内核设置,系统管理员不能修改。目前,内核定义了以下标志:

5.4.ip address flush--清除协议地址

∙缩写:flush 、f

∙简介

这个命令可以清除按照某种条件选择的协议地址。

∙参数

10

标签: