ip 命令的說明

babyyellow發表於2014-02-18

轉來的,非原創,感謝源作者,源連結已經不可用了,這裡表示感謝。


1.ip命令的語法
ip命令的用法如下:
ip [OPTIONS] OBJECT [COMMAND [ARGUMENTS]]
其中,OPTIONS是一些修改ip行為或者改變其輸出的選項。所有的選項都是以
-字元開頭,分為長、短兩種形式。目前,ip支援如下選項:
-V,-Version 列印ip的版本並退出。 
-s,-stats,-statistics 輸出更為詳盡的資訊。如果這個選項出現兩次或者多次,
輸出的資訊將更為詳盡。 
-f,-family 這個選項後面接協議種類,包括:inet、inet6或者link,強調使用的
協議種類。如果沒有足夠的資訊告訴ip使用的協議種類,ip就會使用預設值inet或
者any。link比較特殊,它表示不涉及任何網路協議。 
-4 是-family inet的簡寫。 
-6 是-family inet6的簡寫。 
-0 是-family link的簡寫。 
-o,-oneline 對每行記錄都使用單行輸出,回行用字元代替。如果你需要使用wc、
grep等工具處理ip的輸出,會用到這個選項。 
-r,-resolve 查詢域名解析系統,用獲得的主機名代替主機IP地址。 
注意:以上的選項不能疊加寫在一起,要分開寫。
OBJECT是你要管理或者獲取資訊的物件。目前ip認識的物件包括:
link 網路裝置 
address 一個裝置的協議(IP或者IPV6)地址 
neighbour ARP或者NDISC緩衝區條目 
route 路由表條目 
rule 路由策略資料庫中的規則 
maddress 多播地址 
mroute 多播路由緩衝區條目 
tunnel IP上的通道

2.ip link--配置網路裝置
物件 link由網路裝置,對應的命令顯示以及裝置的狀態變化組成。 
命令 set和show(或者list) 
2.1.ip link set--改變裝置的屬性
縮寫:set、s
引數:
dev NAME(default) 指定進行操作的網路裝置 
up/down 起動/關閉裝置。
例如:ip link set dev eth0 up 
arp on/off 改變網路裝置的NOARP選項。
如果裝置處於UP狀態,不允許進行這個操作。不過,核心和ip都不會對在這種情況
下的這個操作進行檢查。在裝置處於執行狀態下改變這個選項會造成無法預料的後
果。 
multicast on/off 改變網路裝置的MULTICAST選項。 
dynamic on/off 改變網路裝置的DYNAMIC選項。 
name NAME 把裝置的名字改為NAME(例如:eth0)。如果裝置處於執行狀態或者已經
配置了地址,建議不要進行這個操作。 
txqueuelen NUMBER或者txqlen NUMBER 改變裝置傳輸佇列的長度。
例如:ip link set dev eth0 txqueuelen 100 
mtu NUMBER 改變網路裝置MTU(最大傳輸單元)的值。
例如:ip link set dev eth0 mtu 1500 
address LLADDRESS 修改網路裝置的MAC地址。
例如:ip link set dev eth0 address 00:01:4f:00:15:f1 
broadcat LLADDRESS或者brd LLADDRESS 修改資料鏈路層廣播地址。
注意:對於大多數的網路裝置(例如:乙太網),修改鏈路層廣播地址會對網路造成
破壞。因此,如果對此沒有很深的理解,最好不要使用這個操作。 
peer LLADDRESS 當使用點對點連線時,使用這個操作可以修改對端的資料鏈路層
地址。 
注意:ip不能修改PROMISC或者ALLMULTI選項。這兩個選項已經比較陳舊,而
且也不應該隨便修改。
2.2.ip link show--顯示裝置屬性
縮寫:show、list、lst、sh、ls、l
引數
dev NAME(default) NAME指定網路裝置名稱,例如:eth0。如果省略了這個引數,
所有的裝置屬性就都會被列出。 
up 只顯示處於活動狀態網路介面的資訊。

輸出格式
kuznet@alisa:~ $ ip link ls eth0
3: eth0:  mtu 1500 qdisc cbq qlen 100
      link/ether 00:a0:cc:66:18:78 brd ff:ff:ff:ff:ff:ff:
kuznet@alisa:~ $ ip link ls sit0
5: sit0@NOME:  mtu 1480 qdisc noqueue
      link/sit 0.0.0.0 brd 0.0.0.0
kuznet@alisa:~ $ ip link ls dummy
2: dummy:  mtu 1500 qdisc noop
      link/ether 00:00:00:00:00:00 brd ff:ff:ff:ff:ff:ff
kuznet@alisa:~ $ 
其中,qdisc(queuing discipline)顯示這個網路介面使用的排隊演算法。noqueue表示
不對資料包進行排隊;noop表示這個網路介面出於黑洞模式,也就是所有進入本網
絡裝置的資料會直接被丟棄。qlen是網路介面傳輸佇列的預設長度。
網路介面可以有如下標誌:
UP 這個裝置處於執行狀態,可以接收、傳送資料包。 
LOOPBACK 這個介面不能用於和其它的主機通訊,所有傳送到這個介面的資料包都
會返回,而且這種介面只能接收反彈回來的資料包。 
BROADCAST 這個裝置具有把資料包傳送到所有主機的能力。乙太網連線是一個很典
型的例子。 
POINTTOPOINT 兩個節點之間是直接連線的。某個接點發出的所有資料包都會發到
對端節點,接收到的所有資料包也都是從對端節點發過來的。 
MULTICAST 這個標誌表示裝置具有多播能力,能夠把資料包傳送到某些相鄰的網路
節點。實際上,廣播是多播的一個特例,它的多播組包括連線上的所有節點。
從定義上,POINTTOPOINT和BROADCAST連線都屬於多播。 
*如果網路介面的標誌不屬於LOOPBACK、BROADCAST和POINTTOPOINT的任何一個
,就假定是NMBA(Non-Broadcast Multi-Access)型別。這是最為普遍的一個標誌。
PROMISC 裝置處於混雜模式,接收連線上的所有資料,不管目的地址是否是自己。
通常,這種模式主要用於網橋和網路監視。 
ALLMULTI 裝置接收連線上的所有多播資料包,多播路由器(muliticast router)使
用這種模式。 
NOARP 這個標誌和其它的標誌不同,它的含義和涉及的網路協議有關。它一般表示
這個裝置無需地址解析,軟體或者硬體不必藉助於系統協議棧的幫助就知道如何把
資料包投遞到目的地。 
DYNAMIC 這個標誌表示這個網路介面是動態建立和撤消的。 
SLAVE 表示這個介面被繫結到其它的網路介面。 
*除此之外,還有其它一些標誌。這些標誌或者已經過時(例如:NOTRAILERS)
,或者還沒有實現(如:DEBUG),或者只是特定於某些裝置(例如:MASTER、
AUTOMEDIA、PORTSEL)。因此,在此我們不作討論。
*對於PROMISC和ALLMULTI標誌,ifconfig和ip顯示的值是不同的。ip link 
ls命令顯示的是裝置的真正狀態,而ifconfig顯示的是自己設定的虛擬裝置狀態。
顯示資訊的第二行包含和鏈路層地址(MAC地址)相關的資訊。其中,第一個詞
(ether、sit)定義介面的硬體型別。而介面的硬體型別又決定MAC地址的格式和語
法。預設的格式是硬體的MAC地址和廣播地址(如果是點對點連線方式,就是對端的
地址),地址是用冒號隔開的16進位制數字。不過,默寫型別的連線有其特定的地址
格式,例如:IP通道的地址格式是用點分開的IP地址。
NBMA(Non-Broadcast Multi-Access)連線沒有明確定義的廣播地址和對端地址
。不過,這個域包含一些有用的資訊,例如:倚賴於ARP伺服器的廣播地址。
統計資訊
使用-statistics選項,ip命令會列印出網路介面的統計資訊,例如:
$ ip -s link ls eth0
3: eth0:  mtu 1500 qdisc cbq qlen 100
      link/ether 00:a0:cc:66:18:78 brd ff:ff:ff:ff:ff:ff
      RX: bytes    packets    errors    dropped overrun mcast
      2449949362 2786187    0     0     0     0
      TX: bytes    packets    errors    dropped carrier collsns
      178558497    1783946    332 0     332 35172
RX:和TX:分別是接收和傳送統計資訊的開頭。得到的統計資訊包括:
bytes 網路介面傳送或者收到的位元組數。如果位元組數超過資料型別能夠表示的最大
數值,就會造成回捲。因此,你如果想連續監視這個指標,需要一個使用者空間的監
控程式週期性地儲存這個資料。 
packets 網路介面收到或者傳送的資料包個數。 
errors 發生錯誤的次數。 
dropped 由於系統資源限制,而丟棄資料包的數量。 
overrun 由於發生堵塞,收到的資料包被丟棄的數量。如果介面發生堵塞,就意味
著核心或者你的機器太慢,無法處理收到的資料。 
mcast 收到的多播資料包數量,只有很少的裝置支援這個選項。 
carrier 連線介質出現故障的次數,例如:網線接觸不好。 
collsns 乙太網型別介質發生衝突的事件次數。 
compressed 壓縮資料包的總數。這個指標只適用於使用VJ頭壓縮的網路介面。 
如果-s選項出現兩次或者更多次,ip會輸出更為詳細的錯誤資訊統計。
3.ip address--協議地址管理
縮寫 address、addr、a 
物件 這裡的地址是繫結到網路裝置上的協議(IP或者IPv6)地址。每個網路裝置至
少應該有一個協議地址。而且,一個網路裝置可以繫結多個協議地址。
ip addr命令能夠顯示網路裝置的協議地址及其性質,新增新的地址,刪除舊的地
址。 
命令 add、delete、flush和show(或者list) 
3.1.ip address add--新增一個新的協議地址
縮寫:add、a
引數
dev NAME 被操作的裝置名 
local ADDRESS(default) 介面的地址,地址格式和協議有關。IPv4地址使用.進行
分隔,而IPv6地址使用冒號分隔。ADDRESS可以跟著一個斜槓和表示掩碼位數的十
進位制數字。 
peer ADDRESS 點對點介面對端的地址。ADDRESS也可以跟著一個斜槓和表示掩碼位
數的十進位制數字。 
broadcast ADDRESS 介面的廣播地址。為了方便,可以使用+和-(注1)代替廣播地
址。例如:
ip addr add local 192.168.1.1/24 brd + dev eth0
ip addr add local 192.168.1.1/28 brd - dev eth0 
label NAME 為每個地址設定一個字串作為標籤。為了和Linux-2.0的網路別名兼
容,這個字串必須以裝置名開頭,接著一個冒號,例如:
#ip addr add local 192.168.4.1/28 brd + label eth0:1 dev eth0 
scope SCOPE_VALUE(注2) 設定地址的有效範圍,它用於核心為資料包設定源地址
。有效的範圍在/etc/iproute2/tr_scopes檔案列出,系統預先設定了一些範圍值

global 這個地址全域性有效。
site 這個地址是區域性連線,也就是隻有目標地址是這個裝置地址時,才有效。
site (只適用於IPv6)地址在站點內部有效。
host 地址在主機內部有效。
*注1:使用-,ip addr ls顯示的是網路地址;使用+,ip addr ls顯示的是廣
播地址。
示例
在迴環裝置上新增一個迴環地址: 
#ip addr add 127.0.0.1/8 dev lo brd + scope host
在乙太網介面eth0上增加一個地址10.0.0.1,掩碼長度為24位(155.155.155.0),
標準廣播地址,標籤為eth0:Alias: 
#ip addr add 10.0.0.1/24 brd + dev eth0 label eth0:Alias
3.2.ip address delete--刪除一個協議地址
縮寫:delete、del、d
引數
這個命令的引數和ip addr add命令的引數一致。其中,只有裝置名是必需的
引數,其它都是可選的。如果沒有給定除裝置名之外的其它引數,ip就會刪除這個
裝置的第一個地址。
示例
刪除迴環裝置的一個迴環地址。不過,最好不要作這種嘗試。 
#ip addr del 127.0.0.1/8 dev 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
引數
dev NAME(default) 裝置的名字 
scope SCOPE_VAL 只列出這個範圍的地址 
to PREFIX 只列出和PREFIX匹配的地址,例如:
ip addr ls to 192.168.1.1 
label PATTERN 只列出標籤匹配PATTERN的地址,PATTERN是一個shell風格的正則
表示式。 
dynamic和permanent 這兩個引數只適用於IPv6。使用dynamic,ip就只列出動態地
址;使用permanent,ip就只列出固定地址。 
tentative 這個引數只適用於IPv6,只列出沒有透過重複地址檢測[參考2]的地址
。 
deprecated 這個引數只適用於IPv6,只列出deprecated[參考2]地址。 
primary和secondary 只列出主(primary)或從(secondary)地址。 
輸出格式
duznet@alisa:~ $ ip addr ls eth0
3: eth0:  mtu 1500 qdisc cbq qlen 100
      link/ether 00:a0:cc:66:18:78 brd ff:ff:ff:ff:ff:ff
      inet 193.233.7.90/24 brd 193.233.7.255 scope global eth0
      inet6 3ffe:2400:0:1:2a0:ccff:fe66:1878/64 scope global dynamic
         valid_lft forever preferred_lft 604746sec
      inet6 fe80::2a0:ccff:fe66:1878/10 scope link
duznet@alisa:~ $
輸出的頭兩行和ip link ls的輸出是相同的。
接著是IP和IPv6地址、廣播地址以及其它的地址屬性:範圍(scope)、標誌
(flag)和標籤(label)。地址標誌由核心設定,系統管理員不能修改。目前,核心
定義了以下標誌:
secondary 為輸出的資料包選擇預設源地址時,核心不使用這個地址。如果一個設
備已經有了一個地址,又給它設定了同一網段的不同地址,第二個地址就成為從
(secondary)地址。例如:eth0已經有一個地址192.168.1.108/24,如果又給它一
個地址192.168.1.3/24,192.168.1.3/24的就會被核心標記為從地址。 
dynamic 這個地址是透過無狀態的自動配置建立的(stateless 
autoconfiguration)[參考2]。如果地址仍然有效,在輸出中,還包括兩個時間信
息。preferred_lft期滿後,地址就會變成deprecated狀態;valiid_lft期滿後,
地址將失效。 
deprecated 這個地址是不允許的,也就是說,地址雖然有效,但是不能使用它建
立新的連線。 
tentative 由於重複地址監測[參考2]還沒有完成或者監測失敗,這個地址不能使
用。 
5.4.ip address flush--清除協議地址
縮寫:flush、f
簡介
這個命令可以清除按照某種條件選擇的協議地址。
引數
這個命令的引數和ip address show相同。唯一的區別是,如果不給定引數它
什麼都不會做。
警告
這個命令(和後面討論的所有flush命令)非常危險。如果出現錯誤,將無法恢
復,它會清除被操作的地址。
statistics選項
如果在ip addr flush命令中使用了-statistics選項,命令將輸出更為詳盡的
資訊。輸出的資訊包括刪除地址的數目和清理地址列表的圈數。如果使用了兩次
-s選項,ip addr flush會按照上節敘述的格式輸出所有被刪除的地址。
示例
刪除屬於私網10.0.0.0/8的所有地址: 
# ip -s -s a f to 10/8
2: dummy     inet 10.7.7.7/16 brd 10.7.255.255 scope global dummy
3: eth0     inet 10.10.7.7/16 brd 10.10.255.255 scope global eth0
4: eth1     inet 10.8.7.7/16 brd 10.8.255.255 scope global eth1
*** Round 1,deleting 3 addresses ***
*** Flush is complete after 1 round ***
取消所有乙太網卡的IP地址 
# ip -4 addr flush label "eth0"
最後一個例子是對IPv6地址的操作。在啟動了轉發或者關閉了自動配置之後,你需
要取消透過無狀態地址自動配置獲得的主機地址: 
# ip -6 addr flush dynamic

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/133735/viewspace-1083303/,如需轉載,請註明出處,否則將追究法律責任。

相關文章