ip命令手冊
ip 命令手冊ip 命令手冊(一)摘要ip 是iproute2軟件包里面的一個強大的網(wǎng)絡(luò)配置工具,它能夠替代一些傳統(tǒng)的網(wǎng)絡(luò)管理工具。例如:ifconfig 、route 等。這個手冊將分章節(jié)介紹ip
ip 命令手冊
ip 命令手冊(一)
摘要
ip 是iproute2軟件包里面的一個強大的網(wǎng)絡(luò)配置工具,它能夠替代一些傳統(tǒng)的網(wǎng)絡(luò)管理工具。例如:ifconfig 、route 等。這個手冊將分章節(jié)介紹ip 命令及其選項。
18:40:46)本文的原文在http://defiant.coinet.com/iproute2/ip-cref/(2002-10-15
By nixe0n
作者:AlexeyN.Kuznetsov
編譯:nixe0n
1.關(guān)于這篇文檔
2.ip 命令的語法
3.ip 的錯誤信息
4.ip link--配置網(wǎng)絡(luò)設(shè)備
4.1.ip link set--改變設(shè)備的屬性
4.2.ip link show--顯示設(shè)備屬性
5.ip address--協(xié)議地址管理
5.1.ip address add--添加一個新的協(xié)議地址
5.2.ip address delete--刪除一個協(xié)議地址
5.3.ip address show--顯示協(xié)議地址
5.4.ip address flush--清除協(xié)議地址
6.ip neighbour--neighbour/arp表管理命令
6.1.ip neighbour add --添加一個新的鄰接條目
ip neighbour change--修改一個現(xiàn)有的條目
ip neighbour replace--替換一個已有的條目
6.2.ip neighbour delete--刪除一個鄰接條目
1
,ip 命令手冊
6.3.ip neighbour show--顯示網(wǎng)絡(luò)鄰居的信息
6.4.ip neighbour flush--清除鄰接條目
1. 關(guān)于這篇文檔
ip 是iproute2軟件包里面的一個強大的網(wǎng)絡(luò)配置工具,本文將分章節(jié)介紹ip 命令及其選項。為了便于理解,作者在本文中列舉了很多示例。但是,正如作者所說,這不是一個教程,而是一個使用手冊。
2.ip 命令的語法
ip 命令的用法如下:
ip [OPTIONS]OBJECT [COMMAND[ARGUMENTS]]

其中,OPTIONS是一些修改ip 行為或者改變其輸出的選項。所有的選項都是以-字符開頭,分為長、短兩種形式。目前,ip支持如下選項:

OBJECT 是你要管理或者獲取信息的對象。目前ip 認識的對象包括:
2
,ip 命令手冊
另外,所有的對象名都可以簡寫,例如:address 可以簡寫為addr ,甚至是a 。
COMMAND 設(shè)置針對指定對象執(zhí)行的操作,它和對象的類型有關(guān)。一般情況下,ip 支持對象的增加(add )、刪除(delete )和展示(show 或者list )。有些對象不支持所有這些操作,或者有其它的一些命令。對于所有的對象,用戶可以使用help 命令獲得幫助。這個命令會列出這個對象支持的命令和參數(shù)的語法。如果沒有指定對象的操作命令,ip會使用默認的命令。一般情況下,默認命令是list,如果對象不能列出,就會執(zhí)行help 命令。
ARGUMENTS 是命令的一些參數(shù),它們倚賴于對象和命令。ip 支持兩種類型的參數(shù):flag 和parameter 。flag由一個關(guān)鍵詞組成;parameter由一個關(guān)鍵詞加一個數(shù)值組成。為了方便,每個命令都有一個可以忽略的默認參數(shù)。例如,參數(shù)dev 是ip link 命令的默認參數(shù),因此ip link ls eth0等于ip link ls dev eth0。我們將在后面的章節(jié)詳細介紹每個命令的使用,命令的默認參數(shù)將使用default 標出。
幾乎所有的關(guān)鍵詞都可以簡寫為前幾個字母。在交互工作時,簡寫的方式非常方便,但是我們不建議在腳本中使用簡寫形式。另外,在講述過程中,所有的“官方”簡寫方式都會在文章中列出。
3.ip 的錯誤信息
由于以下原因,ip可能會操作失?。?/p>
?命令行語法錯誤:一個未知的關(guān)鍵詞(anunknown keyword) ;錯誤的IP 地址格式
(incorrectlyformated IP address) 。在這種情況下,ip 會打印出錯誤信息然后退出,在錯
誤信息中會包含失敗的原因。有時ip 也會打印幫助信息。
?
?
?
?參數(shù)不能通過一致性校驗。由于用戶沒有提供足夠的信息,造成ip 無法從參數(shù)中編譯出內(nèi)核請求。內(nèi)核返回某些系統(tǒng)調(diào)用的錯誤。ip 使用perror(3)輸出錯誤信息,因此輸出的錯誤信內(nèi)核返回RTNETLINK 請求錯誤。這類錯誤信息以"RTNETLIK answers" 開頭。息包含一段注釋以及系統(tǒng)調(diào)用號。
ip 的所有操作都是原子操作。例如,如果ip 執(zhí)行失敗,它不會系統(tǒng)的任何東西,ip link command 例外,它會修改某些設(shè)備參數(shù)。
我們無法列出所有的錯誤信息,尤其是語法錯誤。不過,錯誤信息的意思都非常明確。下面,我們列舉一些經(jīng)常出現(xiàn)的錯誤信息:

?內(nèi)核不支持netlink(netlink用于在內(nèi)核模塊和用戶之間傳遞信息) ,會出現(xiàn)以下錯誤
Cannot open netlink socket:Invalid value
?內(nèi)核不支持RTNETLINK ,會出現(xiàn)以下錯誤信息:
3信息:
,ip 命令手冊
Cannot talk to rtnetlink:Connect refused
Cannot send dump request:Connect refused
?如果在編譯內(nèi)核時沒有配置CONFIG_IP_MULTIPLE_TABLES選項。在使用ip 規(guī)則時會出現(xiàn)和下面的信息類似的錯誤信息:
kuznet@kaise$ip rule list
RTNETLINK error:Invalid argument
dump terminated
4.1.ip link set--改變設(shè)備的屬性
?縮寫:set、s
?

4

ip 命令手冊
注意:ip不能修改PROMISC 或者ALLMULTI 選項。這兩個選項已經(jīng)比較陳舊,而且也不應(yīng)該隨便修改。
注意:如果同時修改多個參數(shù),任何一個修改失敗,ip都會立即取消操作。這種情況可能使系統(tǒng)進入無法預(yù)料的狀態(tài)。為了避免出現(xiàn)這種情況,盡量不要使用ip link set 同時修改多個參數(shù),例如:iplink set dev eth0mtu 1500txqueuelen 100。
4.2.ip link show--顯示設(shè)備屬性
?縮寫: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:~$
在顯示的信息中,每個引號之前的數(shù)字是一個接口索引,用于識別網(wǎng)絡(luò)接口。這個數(shù)字后面是網(wǎng)絡(luò)接口的名字(例如:eth0、dummy等),它也和網(wǎng)絡(luò)接口一一對應(yīng)。不過,在某些情況下,例如:驅(qū)動模塊被卸載,對應(yīng)的接口名就會從列表中消失,而其它新創(chuàng)建的接口就會使用相同的名字。系統(tǒng)管理員可以ip link set name 修改接口的名字。
接口名可以是別的,或者是@NONE。這意味著這個設(shè)備被綁定到其它的設(shè)備,例如數(shù)據(jù)包被發(fā)送到這個設(shè)備,由這個設(shè)備封裝,并從master 設(shè)備發(fā)出。如果設(shè)備名字是NONE ,就表示master 設(shè)備是未知的。
接著,我們看到的是mtu(MaximalTransfer Unit,最大傳輸單元)。它決定這個接口單個數(shù)據(jù)包能夠傳輸多少數(shù)據(jù)。
qdisc (queuingdiscipline)顯示這個網(wǎng)絡(luò)接口使用的排隊算法。noqueue 表示不對數(shù)據(jù)包進行排隊;noop 表示這個網(wǎng)絡(luò)接口出于黑洞模式,也就是所有進入本網(wǎng)絡(luò)設(shè)備的數(shù)據(jù)會直接被丟棄。qlen 是網(wǎng)絡(luò)接口傳輸隊列的默認長度。
5
,ip 命令手冊
網(wǎng)絡(luò)接口可以有如下標志:

*如果網(wǎng)絡(luò)接口的標志不屬于LOOPBACK、BROADCAST和POINTTOPOINT 的任何一個,就假定是NMBA(Non-BroadcastMulti-Access)類型。這是最為普遍的一個標志。
*除此之外,還有其它一些標志。這些標志或者已經(jīng)過時(例如:NOTRAILERS),或者還沒有實現(xiàn)(如:DEBUG),或者只是特定于某些設(shè)備(例如:MASTER、AUTOMEDIA、PORTSEL)。因此,在此我們不作討論。
*對于PROMISC 和ALLMULTI 標志,ifconfig 和ip 顯示的值是不同的。ip link ls 命令顯示的是設(shè)備的真正狀態(tài),而ifconfig 顯示的是自己設(shè)置的虛擬設(shè)備狀態(tài)。
顯示信息的第二行包含和鏈路層地址(MAC地址)相關(guān)的信息。其中,第一個詞(ether、sit)定義接口的硬件類型。而接口的硬件類型又決定MAC 地址的格式和語法。默認的格式是硬件的MAC 地址和廣播地址(如果是點對點連接方式,就是對端的地址),地址是用冒號隔開的16進制數(shù)字。不過,默寫類型的連接有其特定的地址格式,例如:IP通道的地址格式是用點分開的IP 地址。
NBMA(Non-BroadcastMulti-Access)連接沒有明確定義的廣播地址和對端地址。不過,這個域包含一些有用的信息,例如:倚賴于ARP 服務(wù)器的廣播地址。

6
,ip 命令手冊
使用這個命令不會顯示多播地址,需要使用ip maddr ls 命令。詳情請參考第9節(jié)ip maddr ls。
統(tǒng)計信息
使用-statistics選項,ip命令會打印出網(wǎng)絡(luò)接口的統(tǒng)計信息,例如:
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:分別是接收和發(fā)送統(tǒng)計信息的開頭。得到的統(tǒng)計信息包括:
如果-s 選項出現(xiàn)兩次或者更多次,ip會輸出更為詳細的錯誤信息統(tǒng)計。
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:~$
這些錯誤的名字是純以太化的,對于其它種類的設(shè)備,這些域可能有不同的解釋。

5.1.ip address add--添加一個新的協(xié)議地址
?縮寫:add 、a
?

8
,ip 命令手冊
*注1:使用-,ipaddr ls 顯示的是網(wǎng)絡(luò)地址;使用 ,ipaddr ls 顯示的是廣播地址。*注2:有關(guān)scope,在附錄A 中有更為詳細的解釋。
?

示例
?
?在回環(huán)設(shè)備上添加一個回環(huán)地址:#ipaddr add 127.0.0.1/8dev lo brd scope host 在以太網(wǎng)接口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--刪除一個協(xié)議地址
?縮寫:delete 、del 、d
?參數(shù)
這個命令的參數(shù)和ip addr add 命令的參數(shù)一致。其中,只有設(shè)備名是必需的參數(shù),其它都是可選的。如果沒有給定除設(shè)備名之外的其它參數(shù),ip就會刪除這個設(shè)備的第一個地址。
?示例
?
?刪除回環(huán)設(shè)備的一個回環(huán)地址。不過,最好不要作這種嘗試。#ipaddr del 127.0.0.1/8dev lo 以下shell 代碼可以取消設(shè)備上的所有IP 地址。
while ip -f inet add del dev eth0;do
:nothing
done
?另外,可以使用ip addr flush 命令取消IP 地址
5.3.ip address show--顯示協(xié)議地址
?縮寫: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)。地址標志由內(nèi)核設(shè)置,系統(tǒng)管理員不能修改。目前,內(nèi)核定義了以下標志:
5.4.ip address flush--清除協(xié)議地址
?縮寫:flush 、f
?簡介
這個命令可以清除按照某種條件選擇的協(xié)議地址。
?參數(shù)
10