1. 程式人生 > >linux命令總結之ip命令

linux命令總結之ip命令

Linux的ip命令和ifconfig類似,但前者功能更強大,並旨在取代後者。使用ip命令,只需一個命令,你就能很輕鬆地執行一些網路管理任務。ifconfig是net-tools中已被廢棄使用的一個命令,許多年前就已經沒有維護了。iproute2套件裡提供了許多增強功能的命令,ip命令即是其中之一。

要安裝ip,請點選這裡下載iproute2套裝工具 。不過,大多數Linux發行版已經預裝了iproute2工具。

你也可以使用git命令來下載最新原始碼來編譯:

1

$ git clone https://kernel.googlesource.com

/pub/scm/linux/kernel/git/shemminger/iproute2.git

設定和刪除Ip地址

要給你的機器設定一個IP地址,可以使用下列ip命令:

1

2

3

4

5

6

7

8

9

10

11

12

13

[[email protected] scripts]# ip addr add 192.168.17.30/24 dev eth0

[[email protected] scripts]# ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000

    link/ether 00:0c:29:84:0c:21 brd ff:ff:ff:ff:ff:ff

    inet 192.168.17.129/24 brd 192.168.17.255 scope global eth0

    inet 192.168.17.30/24 scope global secondary eth0

    inet6 fe80::20c:29ff:fe84:c21/64 scope link

       valid_lft forever preferred_lft forever

請注意IP地址要有一個字尾,比如/24。這種用法用於在無類域內路由選擇(CIDR)中來顯示所用的子網掩碼。在這個例子中,子網掩碼是255.255.255.0。

你也可以使用相同的方式來刪除IP地址,只需用del代替add。

1

2

3

4

5

6

7

8

9

10

11

12

[[email protected] scripts]# ip addr del 192.168.17.30/24 dev eth0

[[email protected] scripts]# ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host

       valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000

    link/ether 00:0c:29:84:0c:21 brd ff:ff:ff:ff:ff:ff

    inet 192.168.17.129/24 brd 192.168.17.255 scope global eth0

    inet6 fe80::20c:29ff:fe84:c21/64 scope link

       valid_lft forever preferred_lft forever

列出路由表條目

ip命令的路由物件的引數還可以幫助你檢視網路中的路由資料,並設定你的路由表。第一個條目是預設的路由條目,你可以隨意改動它。

在這個例子中,有幾個路由條目。這個結果顯示有幾個裝置通過不同的網路介面連線起來。它們包括WIFI、乙太網和一個點對點連線。

1

2

3

4

[[email protected] scripts]# ip route show

192.168.17.0/24 dev eth0  proto kernel  scope link  src 192.168.17.129

169.254.0.0/16 dev eth0  scope link  metric 1002

default via 192.168.17.2 dev eth0

假設現在你有一個IP地址,你需要知道路由包從哪裡來。可以使用下面的路由選項(譯註:列出了路由所使用的介面等):

1

2

3

[[email protected] scripts]# ip route get 192.168.17.130

192.168.17.130 dev eth0  src 192.168.17.129

    cache  mtu 1500 advmss 1460 hoplimit 64

更改預設路由

要更改預設路由,使用下面ip命令:

1

[[email protected] scripts]# ip route add default via 192.168.17.3

顯示網路統計資料

使用ip命令還可以顯示不同網路介面的統計資料

1

2

3

4

5

6

7

8

9

10

11

12

13

[[email protected] scripts]# ip -s link

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN

    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,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN qlen 1000

    link/ether 00:0c:29:84:0c:21 brd ff:ff:ff:ff:ff:ff

    RX: bytes  packets  errors  dropped overrun mcast  

    135268     1134     0       0       0       0     

    TX: bytes  packets  errors  dropped carrier collsns

    134830     960      0       0       0       0

當你需要獲取一個特定網路介面的資訊時,在網路介面名字後面新增選項ls即可。使用多個選項-s會給你這個特定介面更詳細的資訊。特別是在排除網路連線故障時,這會非常有用。

1

$ ip -s -s link ls p2p1

ARP條目

地址解析協議(ARP)用於將一個IP地址轉換成它對應的實體地址,也就是通常所說的MAC地址。使用ip命令的neigh或者neighbour選項,你可以檢視接入你所在的區域網的裝置的MAC地址。

1

2

[[email protected] scripts]# ip neighbour

192.168.17.1 dev eth0 lladdr 00:50:56:c0:00:08 DELAY

監控netlink訊息

也可以使用ip命令檢視netlink訊息。monitor選項允許你檢視網路裝置的狀態。比如,所在區域網的一臺電腦根據它的狀態可以被分類成REACHABLE或者STALE。使用下面的命令:

1

2

3

[[email protected] scripts]# ip monitor all

[NEIGH]192.168.17.2 dev eth0 lladdr 00:50:56:f3:2d:50 REACHABLE

[NEIGH]192.168.17.1 dev eth0 lladdr 00:50:56:c0:00:08 REACHABLE

啟用和停止網路介面

你可以使用ip命令的up和down選項來激某個特定的介面,就像ifconfig的用法一樣。

在這個例子中,當ppp0介面被啟用和在它被停止和再次啟用之後,你可以看到相應的路由表條目。這個介面可能是wlan0或者eth0。將ppp0更改為你可用的任意介面即可。

1

2

3

$ ip link set eth0 down

  

$ ip link set eth0 up

獲取幫助

當你陷入困境,不知道某一個特定的選項怎麼用的時候,你可以使用help選項。man頁面並不會提供許多關於如何使用ip選項的資訊,因此這裡就是獲取幫助的地方。

比如,想知道關於route選項更多的資訊:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

[[email protected] scripts]# ip route help

Usage: ip route { list | flush } SELECTOR

       ip route get ADDRESS [ from ADDRESS iif STRING ]

                            [ oif STRING ]  [ tos TOS ]

       ip route { add | del | change | append | replace | monitor } ROUTE

SELECTOR := [ root PREFIX ] [ match PREFIX ] [ exact PREFIX ]

            [ table TABLE_ID ] [ proto RTPROTO ]

            type TYPE ] [ scope SCOPE ]

ROUTE := NODE_SPEC [ INFO_SPEC ]

NODE_SPEC := [ TYPE ] PREFIX [ tos TOS ]

             [ table TABLE_ID ] [ proto RTPROTO ]

             [ scope SCOPE ] [ metric METRIC ]

INFO_SPEC := NH OPTIONS FLAGS [ nexthop NH ]...

NH := [ via ADDRESS ] [ dev STRING ] [ weight NUMBER ] NHFLAGS

OPTIONS := FLAGS [ mtu NUMBER ] [ advmss NUMBER ]

           [ rtt TIME ] [ rttvar TIME ] [reordering NUMBER ]

           [ window NUMBER] [ cwnd NUMBER ] [ initcwnd NUMBER ]

           [ ssthresh NUMBER ] [ realms REALM ] [ src ADDRESS ]

           [ rto_min TIME ] [ hoplimit NUMBER ] [ initrwnd NUMBER ]

TYPE := [ unicast | local | broadcast | multicast | throw |

          unreachable | prohibit | blackhole | nat ]

TABLE_ID := [ local | main | default | all | NUMBER ]

SCOPE := [ host | link | global | NUMBER ]

FLAGS := [ equalize ]

MP_ALGO := { rr | drr | random | wrandom }

NHFLAGS := [ onlink | pervasive ]

RTPROTO := [ kernel | boot | static | NUMBER ]

TIME := NUMBER[s|ms]

小結

對於網路管理員們和所有的Linux使用者們,ip命令是必備工具。是時候拋棄ifconfig命令了,特別是當你寫指令碼時。

via: http://linoxide.com/linux-command/use-ip-command-linux/