前言:在上一講中,向大家簡單介紹了一下iproute的概況,在本文中將根據實例講解ip命令的具體用法。講解的時候我們將根據管理的對象來分別進行,關于對象的說明請看上一講。
一、 ip link----網絡設備配置
link 對象也即是指網絡設備(網卡等),通過link 對象命令,我們可以查看及更改網絡設備的屬性。
ip link set ----設置網絡設備的屬性
操作參數:
dev name (缺?。?
----指定要進行操作的網絡設備名稱
up/down
----激活/禁用網絡設備
arp on / arp off
----在該網絡設備上使用arp協議/禁用arp協議
multicast on / multicast off
----打開/關閉多目傳送
dynamic on / dynamic off
----打開/關閉動態標志
name NAME
----更改網絡設備名稱,如果該設備正在運行,則不要更改這個屬性
txqlen number
----設置傳輸隊列長度
mtu number
----設置最大傳輸單元
address mac
----設置網絡設備的MAC地址
broadcast mac
----設置網絡設備的硬件廣播地址
實例:
1.設置網絡設備的MAC地址
ip link set eth0 address 88:88:88:44:44:44
注意:在設置前要先執行 ip link set eth0 down,設置完成后再執行ip link set eth0 up
2.禁用網絡接口
ip link set eth0 down
ip link show----查看網絡設備屬性
操作參數:
dev name (缺?。?
----指定要進行操作的網絡設備名稱
up
----僅僅顯示正在運行的網絡設備的屬性
輸出格式:
[bye2000@mng bye2000]$ ip link show
1: lo: <LOOPBACK,UP> mtu 3924 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 88:88:88:44:44:ee brd ff:ff:ff:ff:ff:ff
說明:
第一個數字是網絡設備的數字標識,這是一個唯一的標識;
第二部分是網絡設備名稱,如eth0,lo,這部分也是唯一的,不能相同;
mtu表示最大傳輸單元,這是跟網絡接口層特性相關的,在以太網中,RFC894定義的以太幀格式的mtu是1500字節;而RFC1042定義的幀格式中,mtu是1492字節。當然RFC894定義的幀格式是最常用的。qdisc 表示網絡接口所使用的隊列算法,noqueue表示該接口不進行排隊,pfifo_fast表示先進先出;
尖括號中的部分:
UP表示該網絡設備正在工作;
LOOPBACK表示這是一個回送設備,該接口發出的數據報不會被傳到網絡上;
BROADCAST表示該網絡設備可以將數據報傳送給子網內的所有主機;
POINTTOPOINT表示該網絡設備是一個點對點連接的一端,所有該設備發出的數據報都將被對端節點所接收,所有對端發出的數據報也將被本設備所接收。
MULTICAST表示該網絡設備具有接收和發送多目傳送(multicast)的能力;
PROMISC表示網絡設備處于混雜模式,這時該設備將進行監聽并將監聽到的數據傳遞給內核,即使這些數據不是發送給該主機的。通常用于網絡探測。
ALLMULTI表示網絡設備將接收所有多目傳送的數據報,通常用于多目傳送路由器。
NOAPP 這個參數在使用不同的協議時具有不同的意義。但通常表示不需要地址解析。
DYNAMIC 表示該網絡設備可以動態的建立和刪除。
SLAVE表示該網絡設備與其他網絡設備綁定在一起,形成邏輯上的一個網絡設備。
link/ether表示接口硬件類型,后面是網絡設備的硬件地址;
brd 后面的是網絡設備的硬件廣播地址。
ip –s link show----帶上-s參數,將打印出網絡設備的統計數據
比如:
[bye2000@mng bye2000]$ ip -s link show
1: lo: <LOOPBACK,UP> mtu 3924 qdisc noqueue
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
2: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 88:88:88:44:44:ee brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
134346 1368 0 0 0 902
TX: bytes packets errors dropped carrier collsns
21922 316 0 0 0 0
說明:
RX:表示接收
TX:表示發送
bytes:表示已接收/發送的數據字節數;
packets:表示已接收/發送的數據報數目;
errors:表示在接收/發送時出現的錯誤次數;
dropped:表示因為系統資源不足而導致丟包的數目;
overrun:表示在接收數據包時,因為系統出現錯誤或系統反應太慢而導致丟包的數目;
mcast:表示接收到的多目傳送數據包數目;
carrier:表示物理連接出錯的次數;
collsns:表示出現以太沖突的次數。
二、 ip address---協議地址管理
address對象(可以簡寫成address, addr, a)就是指網絡設備上的ip地址。每一個網絡設備都會有至少一個協議地址??梢酝ㄟ^該命令查看網絡設備的地址和地址屬性,以及添加/刪除地址。
ip address add---添加新的協議地址
操作參數:
dev name
----指定要進行操作的網絡設備名稱
local ADDRESS (缺省)
----協議地址,地址的格式由使用的協議所決定,比如在ipv4協議中,地址的格式為用小數點分隔的四個十進制數,后面可以用/連接子網掩碼的位數,比如192.168.1.100/24。
peer ADDRESS
----使用點對點連接時對端的協議地址。
broadcast ADDRESS
----協議廣播地址,可以簡寫成brd,此外可以簡單的在后面加上“+”表示廣播地址由協議地址主機位全置1組成,“-”則表示主機位全置0。
label NAME
----地址標志,為了和linux 2.0中的別名相兼容,該標志由該網絡設備名稱開頭,后面用“:”接上地址名稱,比如eth0:3等等。
scope SCOPE_VALUE
----地址范圍,可能的值有:
1. global:說明該地址全局有效;
2. site:說明該地址只在本地站點內有效,該值只在ipv6中使用;
3. link:只在該網絡設備上有效;
4. host:只在該主機上有效;
實例:
1. 添加回送地址
ip addr add 127.0.0.1/8 dev lo brd + scope host
2. 添加ip地址
ip addr add 10.0.0.1/24 brd + dev eth0 label eth0:3
ip address delete----刪除協議地址
可以簡寫成delete, del, d
實例:
刪除回送地址:
ip addr del 127.0.0.1/8 dev lo
ip address show---查看協議地址
可以簡寫成show, list, lst, sh, ls, l。
dev name (缺?。?
----指定要進行操作的網絡設備名稱
scope SCOPE_VALUE
----地址范圍
to PREFIX
----列出指定地址的協議地址屬性
label PATTERN
----列出匹配條件的協議地址,這里可以使用shell風格的正則表達式
dynamic and permanent
----僅對ipv6有效,指定是動態還是靜態地址
primary and secondary
----主要還是次要地址
輸出格式實例:
[bye2000@mng bye2000]$ ip addr show eth0
3: eth0: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 100
link/ether 00:80:c8:57:01:79 brd ff:ff:ff:ff:ff:ff
inet 202.203.85.41/27 brd 202.203.85.63 scope global eth0
說明:
第一二行與ip link show eth0命令的輸出一樣,都是關于鏈路層的信息。
ip address flush---刷新協議地址
可以簡寫成flush, f,并且該命令具有同show命令一樣的參數。
說明:該命令可能具有一定的危險,一旦出錯可能就無法恢復。
實例:刪除所有以202開頭的ip地址
[bye2000@mng bye2000]$ ip -s -s a f to 202/8
3: eth0 inet 202.203.85.41/27 brd 202.203.85.63 scope global eth0
*** Round 1, deleting 1 addresses ***3
*** Flush is complete after 1 round ***
本例中,-s –s表示打印出詳細信息,a就是address的縮寫,f則是flush的縮寫。
三、 ip neighbour----neighbour/arp表管理
neighbour對象(可以簡寫成neighbour, neighbor, neigh, n)在協議地址和硬件地址之間建立起一種綁定關系,并且neighbour記錄通常是以表的形式組織的,ipv4中的neighbour表就是為大多數人所熟知的ARP表。
ip neighbour add----添加neighbour記錄
ip neighbour change----更改已存在的neighbour記錄
ip neighbour replace----添加新的neighbou記錄或更改已存在的neighbour記錄
可以簡寫成add, a; change, chg; replace, repl。
說明:這三條命令可以添加新的neighbour記錄或者更改已有的neighbour記錄。
操作參數:
to ADDRESS (缺省)
----指定協議地址,可以是ipv4或者ipv6的
dev NAME
----指定網絡設備名稱
lladdr LLADDRESS
----指定硬件地址
nud NUD_STATE
----指定neighbour的nud值,nud(Neighbour Unreachability Detection)即鄰居不可到達檢測,可以是以下值:
permanent----說明該記錄將永久有效,只能出于管理的目的將其刪除。
noarp----說明該記錄有效,但是在其生存時間到達以后可以被刪除。
reachable----說明該記錄有效,直到可到達超時溢出。
stale----說明該記錄有效,但是其有效性值得懷疑。
實例:
1. 添加arp記錄:
ip neigh add 10.0.0.3 lladdr 0:0:0:0:0:1 dev eth0 nud perm
2. 修改arp記錄:
ip neigh chg 10.0.0.3 dev eth0 nud reachable
ip neighbour delete---刪除neighbour記錄
說明:該命令(可以簡寫為delete, del, d)可以用來刪除neighbour記錄。該命令的操作參數和ip neigh add命令一致,只不過忽略了lladdr 和 nud參數。
實例:
ip neigh del 10.0.0.3 dev eth0
警告:嘗試刪除一條由內核產生的nud為noarp的記錄可能會產生不可預期的后果。
ip neighbour show---顯示neighbour記錄
說明:該命令顯示當前系統的neighbour表??梢院唽懗蓅how, list, sh, ls。
操作參數:
to ADDRESS (缺省)
----指定協議地址,可以是ipv4或者ipv6的
dev NAME
----指定網絡設備名稱
unused
----只顯示當前沒有被使用neighbour記錄。
nud NUD_STATE
----指定neighbour的nud值
實例:
[bye2000@mng bye2000]$ ip neigh show
202.203.85.33 dev eth0 lladdr 00:80:3e:91:03:f3 nud reachable
202.203.85.37 dev eth0 lladdr 00:50:ba:f2:b7:e5 nud reachable
nud(neighbour unreachability detection)的值描述:
----none 鄰居的狀態是空的
----incomplete 鄰居的狀態正在解析過程中
----reachable 鄰居的狀態是有效的,是可以到達的
----stale 鄰居的狀態是有效的,但是不一定可以到達,所以在通信之前內核會檢查其是
否可以到達。
----delay 內核檢查鄰居狀態的數據報已經發出,正在等待鄰居的回應。
----probe 等待鄰居的確認超時。
----failed 解析失敗。
----noarp 鄰居的狀態是有效的,并且系統不會再嘗試檢查其狀態。
----permanent 同noarp,但是只有系統管理員可以刪除此類記錄。
除了none, failed 和 incomplete狀態以外,其他狀態都會顯示硬件地址。
ip neighbour flush---刷新arp記錄
可以簡寫成flush, f,并且該命令具有同show命令一樣的參數。