linux IP命令簡介
(Proudly powered byQKQ)
Q: IP命令是用來幹啥的?
A: 根據man ip的結果:
ip - show / manipulate routing, devices, policy routing and tunnels
即顯示或者操作路由,裝置,路由策略和通道。
Q: IP命令如何使用?
A: 其使用格式為:
ip [OPTIONS] OBJECT {COMMAND | help}
其中 OPTIONS表示引數,OBJECT可以是:
- link, network device,網路裝置
- address, protocol address on a device,裝置上的協議地址
- addrlabel
- route
- neigh
- ntable
- tunnel
- tuntap
- maddress
- mroute
- mrule
- monitor
- xfrm
- netns
- l2tp
- tcp_metrics
- token
- macsec
舉個例子:
# 展示inet4相關的詳細資訊,並且具有顏色 ip -d -c -4 addr
Q: 常用引數有哪些?
A:
- -V, -Version,顯示ip命名的版本資訊
- -h, -human,顯示人可以看懂的資訊
- -s, -stats, 輸出更多資訊
- -d, -details,輸出更詳細的資訊
- -f, -family,指定協議簇,可選值有inet, inet6, bridge, ipx, dnet, mpls 或者link
- -4, 即-family inet
- -6, 即-family inet6
- -B, 即-family bridge
- -c, -color,帶顏色的輸出
- -o, -oneline,單行顯示
Q: Ip address的常用命令?
A:
- ip address [show],顯示IPv4或者IPv6的地址資訊
- ip address show up,僅展示開啟的網路裝置的地址資訊
- ip address show dev eth0,展示eth0裝置的地址資訊
- ip address add 192.168.1.1/24 dev eth1,將ip地址賦予eth1
- ip address delete 192.168.1.1/24 dev eth1,刪除ip地址
- ip address flush dev eth4 scope global,刪除所有eth4的所有全域性IPv4和IPv6的地址
Q: Ip addr的輸出是什麼意思?
A: 舉個例子:
ip addr show enp0s3 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:81:e2:68 brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s3 valid_lft 85003sec preferred_lft 85003sec inet6 fe80::41da:5105:3c83:a04c/64 scope link noprefixroute valid_lft forever preferred_lft forever
解釋:
- 第一行和第二行同ip link show的輸出是一樣的
- 第三行inet開頭的是IPv4的資訊
- 第四行inet6開頭的是IPv6的資訊
- 冒號之前的2是interface index,即interface的序號
- 之後接的是interface的名字,即enp0s3
-
尖括號裡面的是interface的flags(標籤):
- UP,裝置處於開啟狀態,可以接收網路請求
- LOOPBACK,interface不同其他host交流,僅是自己這個host使用
- BROADCAST,該interface具有廣播裝置,支援廣播,比如Ethernet link
- POINTTOPOINT,點對點,該連結只有兩端,一端收到的請求包會被髮送到另一端
- MULTICAST,多路傳輸,表示該interface具有多路傳輸功能。即將包傳送給網路上的不同裝置分組,BROADCAST是一種特殊的multicast方式,即網路上所有裝置在同一個組裡
- PROMISC,混雜模式,即將所有鏈路上的資訊都發給核心,不管是不是本來發給該host的
- ALLMULTI,接收所有鏈路上的multicat包
- NOARP,沒有特定的意思,其具體意義由具體的網路協議確定。
- DYNAMIC,表示該interface是動態進行建立和銷燬的
- SLAVE,表示該interface被繫結在了其他interface上,以共享鏈路承受能力(share link capacities)
- mtu,指的是maximal transfer unit,即該interface傳送的包的最大單元(the maximal size of data which can be sent as a single packet over this interface)
- qdisc, 即queuing discipline,展示的是該interface使用的排隊演算法:noqueue表示不會進行排隊,noop表示該interface處於blackhole模式,所有的請求都會在到達的時候被立即丟棄。qlen,是該裝置預設傳輸佇列的長度,以包為單位(the default transmit queue length of the device measured in packets)
- 第二行展示了該裝置的連結層資訊,ether表示該裝置的硬體型別,該型別決定了地址的格式和語義。之後接著的是地址和廣播地址,是一系列以分號隔開的十六進位制數
- 第三行是IPv4的資訊,包括地址,廣播地址,scope資訊,flags,以及address label。
- brd標識broadcast
-
scope表示了該地址的有效範圍,預設值有:
- global,全域性有效
- site,僅針對IPv6,表示範圍侷限於site。地址值僅在該site內有效
- link,link local,比如僅在該裝置上有效
- host,表示僅在該host有效
-
flags是核心設定的值,有:
- secondary,當為外發的網路包選擇預設源地址時不使用該地址
- dynamic,地址是由stateless autoconfiguration來建立的。該地址具有國企時間資訊,當時間到之後,地址被標識為deprecated state
- deprecated,地址依然有效,但是不能用於新建立的連線
- tentative,由於重複地址檢測尚未完成或者失敗了,該地址無法被使用
- valid_lft為valid lifetime,即該地址的lifetime時間,當過期的時候,地址就被核心給移除
- preferred_lft為preferred lifetime,當過期的時候,對於新的外發請求就不再使用該地址
- noprefixroute,標識不為該地址的網路字首分配路由,當移除該地址的時候也不去搜索對應的路由。
Q: IP route是幹啥的?怎麼用?
A: ip route是用來操控kernel routing table的。那麼kernel routing table是用來幹啥的?
用法:
ip [ip-options] route {COMMAND | help}
Q: kernel routing table是用來幹啥的?
A: routing table總體上來講儲存了網路包的轉發規則。
Q: ip route show的輸出是什麼意思?
A: 先看一個ip route show的輸出:
# ip route show default via 10.0.2.2 dev enp0s3 proto dhcp metric 100 default via 192.168.99.1 dev enp0s8 proto static metric 101 10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100 10.244.0.0/24 via 10.244.0.0 dev flannel.1 onlink 10.244.1.0/24 dev cni0 proto kernel scope link src 10.244.1.1 10.244.2.0/24 via 10.244.2.0 dev flannel.1 onlink 172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 192.168.99.0/24 dev enp0s8 proto kernel scope link src 192.168.99.111 metric 101
其中:
- default表示預設的route,即其他route規則沒有生效就預設使用該條規則。兩條default規則分別對應不同的device。
- dev表示device,即使用的interface是哪個
-
proto表示該條規則的protocol identifier,有:
- redirect,該路由是由於ICMP redirect產生(install)
- kernel,該路由是在核心進行自動配置的時候產生的
- boot,該路由是在bootup的時候產生
- static,該路由是由管理員增加的,為了覆蓋動態路由
- ra,該路由由Router Discovery tool產生
- scope,同上面ip addr show介紹的scope
- src,表示為優先選擇的源地址,當給目標地址發包的時候
- metric,表示到目的地的距離(the 'distance' to the target),是一個數字,其單位可以是:Hop, Delay, Throughput, Reliability
參考資料:
[1]http://linux-ip.net/gl/ip-cref/ip-cref-node17.html
[2] linux man page for ip