linux命令之ip
1、ip命令簡介
ip 是個命令, ip 命令的功能很多!基本上它整合了 ifconfig 與 route 這兩個命令,不過 ip 的功能更強大。
1.1 語法
[root@localhost ~]# ip
Usage: ip [ OPTIONS ] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
where OBJECT := { link | addr | addrlabel | route | rule | neigh | ntable |
tunnel | tuntap | maddr | mroute | mrule | monitor | xfrm |
netns | l2tp | tcp_metrics | token }
OPTIONS := { -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] |
-f[amily] { inet | inet6 | ipx | dnet | bridge | link } |
-4 | -6 | -I | -D | -B | -0 |
-l[oops] { maximum-addr-flush-attempts } |
-o[neline] | -t[imestamp] | -b[atch] [filename] |
-rc[vbuf] [size]}
1.2 選項
OPTIONS:選項。
- -s:顯示出該設備的統計數據(statistics),例如總接受封包數等;
OBJECT:動作對象,就是是可以針對哪些網絡設備對象進行動作。
- link:關于設備 (device) 的相關設定,包括 MTU,MAC 地址等。
- addr/address:關于額外的 IP 設定,例如多 IP 的實現等。
- route :與路由有關的相關設定。
1.3 命令解釋
1.3.1 ip link 相關
ip link 可以設定與設備(device)有關的相關設定,包括MTU以及該網絡設備的MAC等,當然也可以啟動(up)或關閉(down)某個網絡設備。
1、查看當前主機設備
[root@hserver1 ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:a8:9d:cf brd ff:ff:ff:ff:ff:ff
[root@hserver1 ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:a8:9d:cf brd ff:ff:ff:ff:ff:ff
[root@hserver1 ~]# ip -s link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
2484149802179 18084541920 0 0 0 0
TX: bytes packets errors dropped carrier collsns
2484149802179 18084541920 0 0 0 0
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:a8:9d:cf brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
543869729815 1042387048 0 0 0 0
TX: bytes packets errors dropped carrier collsns
145245658628 953348255 0 0 0 0
使用ip link show
可以顯示出整個設備的硬件相關信息,如上所示,包括MAC地址、MTU等。lo是主機內部自行設定的,如果加上-s
的參數后,則這個網卡的相關統計信息就會被列出來,包括接收(RX)及傳送(TX)的封包數量等,詳細的內容與ifconfig
所輸出的結果相同。
2、啟動、關閉與設定設備的相關信息
# 關閉ens32這個設備
[root@localhost ~]# ip link set ens32 down
# 啟動ens32這個設備
[root@localhost ~]# ip link set ens32 up
# 更改MTU為1000 bytes,單位就是bytes,再改回來。
[root@localhost ~]# ip link set ens32 mtu 1000
[root@hserver1 ~]# ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1000 qdisc pfifo_fast state UP mode DEFAULT qlen 1000
link/ether 00:0c:29:a8:9d:cf brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set ens32 mtu 1500
要更改網卡代號、MAC地址的信息的話,設定前需要先關閉該網卡,否則會不成功。
[root@localhost ~]# ip link set ens32 name daocoder
RTNETLINK answers: Device or resource busy
# 關閉ens32這個設備
[root@localhost ~]# ip link set ens32 down
# 改網卡名
[root@localhost ~]# ip link set ens32 name daocoder
2 daocoder: <BROADCAST,MULTICAST> mtu 1000 qdisc noqueue state DOWN mode DEFAULT
link/ether 02:42:41:f5:6b:fb brd ff:ff:ff:ff:ff:ff
# 改回來
[root@localhost ~]# ip link set daocoder name ens32
# 如果你的網卡支持MAC更改,測試完之后要立刻改回來
[root@localhost ~]# ip link set ens32 address aa:aa:aa:aa:aa:aa
在這個設備的硬件相關信息設定,上面包括 MTU, MAC 以及傳輸的模式等等,都可以在這里設定。
1.3.2 ip address 相關
如果說ip link
是與OSI七層模型的第二層數據鏈路層有關的話,那么ip address (ip addr)
就是與第三層網絡層有關的了。主要是在設定與 IP 有關的各項參數,包括 netmask, broadcast 等。
1、查看IP參數
[root@hserver1 ~]# 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
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a8:9d:cf brd ff:ff:ff:ff:ff:ff
inet 192.168.8.120/24 brd 192.168.8.255 scope global dynamic ens32
valid_lft 66532sec preferred_lft 66532sec
inet6 fe80::20c:29ff:fea8:9dcf/64 scope link
valid_lft forever preferred_lft forever
[root@hserver1 ~]# ip addr show
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
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a8:9d:cf brd ff:ff:ff:ff:ff:ff
inet 192.168.8.120/24 brd 192.168.8.255 scope global dynamic ens32
valid_lft 66526sec preferred_lft 66526sec
inet6 fe80::20c:29ff:fea8:9dcf/64 scope link
valid_lft forever preferred_lft forever
[root@hserver1 ~]# ip -s addr show
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
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:a8:9d:cf brd ff:ff:ff:ff:ff:ff
inet 192.168.8.120/24 brd 192.168.8.255 scope global dynamic ens32
valid_lft 66522sec preferred_lft 66522sec
inet6 fe80::20c:29ff:fea8:9dcf/64 scope link
valid_lft forever preferred_lft forever
ip address [add|del] [IP參數] [dev 設備名] [相關參數]
[root@hserver1 ~]# ip addr
add change del flush help replace show
[add|del]:
- add|del:進行相關參數的增加(add)或刪除(del)設定。
- show:顯示詳細信息。
IP 參數 :主要就是網域的設定,例如 192.168.100.100/24 之類的設定。
[dev 設備名]:IP 參數所要設定的設備,例如eth0, eth1等。
[相關參數]:
- broadcast:設定廣播位址,如果設定值是 + 表示讓系統自動計算;
- label:該設備的別名,例如eth0:0;
- scope:這個設備的領域,默認global,通常是以下幾個大類:
- global:允許來自所有來源的連線;
- site:僅支持IPv6 ,僅允許本主機的連接;
- link:僅允許本設備自我連接;
- host:僅允許本主機內部的連接;
[root@localhost ~]# ip addr show lo
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
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
如果遠程連接,下面的操作要自己的主機和遠程機器在統一網段再操作。
# 給ens160這塊網卡再設置一個虛擬ip。
[root@localhost ~]# ip address add 192.168.12.23/24 broadcast + dev ens160 label ens160:test
一個網卡只能綁定一個IP地址(即IP與MAC綁定),但可以設置多個IP地址,作用就是可以連接多個網段(就是可以訪問多個網段),但前提是這些網段物理層是連接在一起。
[root@localhost ~]# ip addr show ens160
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
link/ether 00:0c:29:22:c5:7c brd ff:ff:ff:ff:ff:ff
inet 192.168.8.216/24 brd 192.168.8.255 scope global ens160
valid_lft forever preferred_lft forever
inet 192.168.12.23/24 brd 192.168.12.255 scope global ens160:test
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fe22:c57c/64 scope link
valid_lft forever preferred_lft forever
# 然后再刪除這個ip
[root@localhost ~]# ip address del 192.168.12.23/24 dev ens160
1.3.3 ip route 相關
tips:此節不要隨便嘗試。
路由的查看與設定。事實上ip route 的功能幾乎與 route 這個命令一樣,但是,它還可以進行額外的參數設置,例如MTU的規劃等。
[root@localhost ~]# ip route
default via 192.168.8.254 dev ens160 proto static metric 100
172.18.0.0/16 dev br-b16b81326e94 proto kernel scope link src 172.18.0.1
192.168.8.0/24 dev ens160 proto kernel scope link src 192.168.8.216 metric 100
[root@localhost ~]# ip route show
default via 192.168.8.254 dev ens160 proto static metric 100
172.18.0.0/16 dev br-b16b81326e94 proto kernel scope link src 172.18.0.1
192.168.8.0/24 dev ens160 proto kernel scope link src 192.168.8.216 metric 100
必須注意的幾點:
- proto:此路由的路由協定,主要有redirect,kernel,boot,static,ra等,其中kernel是直接由核心判斷自動設定。
- scope:路由的范圍,主要是link,是與本設備有關的直接連接。
ip route [add|del] [IP或網域] [via gateway] [dev 設備]
[root@localhost ~]# ip route
add append change del flush get help list monitor replace
[add|del]:
- add|del:增加(add)或刪除(del)路由。
- show:顯示詳細信息。
[IP或網域]:可使用192.168.50.0/24之類的網域或者是單純的 IP 。
[via gateway]:從哪個gateway出去,不一定需要。
[dev 設備名]:所要設定的設備,例如eth0, eth1等。
1、顯示當前路由
[root@localhost ~]# ip route
default via 192.168.8.254 dev ens160 proto static metric 100
172.18.0.0/16 dev br-b16b81326e94 proto kernel scope link src 172.18.0.1
192.168.8.0/24 dev ens160 proto kernel scope link src 192.168.8.216 metric 100
[root@localhost ~]# ip route show
default via 192.168.8.254 dev ens160 proto static metric 100
172.18.0.0/16 dev br-b16b81326e94 proto kernel scope link src 172.18.0.1
192.168.8.0/24 dev ens160 proto kernel scope link src 192.168.8.216 metric 100
2、增加路由
主要是本機直接可溝通的網域。
[root@localhost ~]# ip route add 192.168.12.0/24 dev ens160
3、增加通往外部路由
[root@localhost ~]# ip route add 192.168.10.0/24 via 192.168.12.1 dev eth0
4、刪除路由
[root@localhost ~]# ip route del 192.168.10.0/24