linux命令總結之ip命令


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

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

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

$ git clone https://kernel.googlesource.com/pub/scm/linux/kernel/git/shemminger/iproute2.git

設置和刪除Ip地址

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

[root@Gin scripts]# ip addr add 192.168.17.30/24 dev eth0
[root@Gin 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。

[root@Gin scripts]# ip addr del 192.168.17.30/24 dev eth0
[root@Gin 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、以太網和一個點對點連接。

[root@Gin 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地址,你需要知道路由包從哪里來。可以使用下面的路由選項(譯注:列出了路由所使用的接口等):

[root@Gin 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命令:

[root@Gin scripts]# ip route add default via 192.168.17.3

顯示網絡統計數據

使用ip命令還可以顯示不同網絡接口的統計數據

[root@Gin 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會給你這個特定接口更詳細的信息。特別是在排除網絡連接故障時,這會非常有用。

$ ip -s -s link ls p2p1

ARP條目

地址解析協議(ARP)用於將一個IP地址轉換成它對應的物理地址,也就是通常所說的MAC地址。使用ip命令的neigh或者neighbour選項,你可以查看接入你所在的局域網的設備的MAC地址。

[root@Gin scripts]# ip neighbour
192.168.17.1 dev eth0 lladdr 00:50:56:c0:00:08 DELAY

監控netlink消息

也可以使用ip命令查看netlink消息。monitor選項允許你查看網絡設備的狀態。比如,所在局域網的一台電腦根據它的狀態可以被分類成REACHABLE或者STALE。使用下面的命令:

[root@Gin 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更改為你可用的任意接口即可。

$ ip link set eth0 down
 
$ ip link set eth0 up

獲取幫助

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

比如,想知道關於route選項更多的信息:

[root@Gin 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/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM