ip命令網絡配置

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

一、ip常用命令格式如下:

ip [ OPTIONS ] OBJECT { COMMAND | help }
對象OBJECT={ link | addr | addrlabel | route | rule | neigh | ntable | tunnel | maddr | mroute | mrule | monitor | xfrm | token }

選項OPTIONS={ -V[ersion] | -s[tatistics] | -d[etails] | -r[esolve] | -h[uman-readable] | -iec | -f[amily] { inet | inet6 | ipx | dnet | link } | -o[neline] | -t[imestamp] | -b[atch] [filename] | -rc[vbuf] [size] }

--------------------------------------------------------------------
常用對象的取值含義如下:
link       :網絡設備
address    :設備上的協議(IP或IPv6)地址
addrlabel  :協議地址選擇的標籤配置
route    :路由表條目
rule       :路由策略數據庫中的規則

常用選項的取值含義如下:
-V,-Version      :顯示指令版本信息
-s,-stats,statistics    :輸出詳細信息
-h,-human,-human-readable  :輸出人類可讀的統計信息和後綴
-o,-oneline:         將每條記錄輸出到一行,用‘\’字符替換換行符
--------------------------------------------------------------------

二、使用實例
1、檢查網卡信息

命令:ip addr show
說明:顯示網卡及配置的地址信息
----------------------------------------------------------------------------------
[root@CentOS7GUI1 ~]# ip addr show | more
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
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: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:0b:cc:63 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.56/24 brd 192.168.1.255 scope global noprefixroute dynamic enp0s3
valid_lft 81504sec preferred_lft 81504sec
inet6 2408:832e:ca9:5c40:f046:c71f:fa9:134b/64 scope global noprefixroute dynamic
valid_lft 174827sec preferred_lft 88427sec
inet6 fe80::c632:ffaa:370:ca71/64 scope link noprefixroute
valid_lft forever preferred_lft forever
---------------------------------------------------------------------------------
輸出內容詳解:
首先這個系統有兩個接口:lo和enp0s3,lo是環回接口,而我們重點關注的則是enp0s3這個普通網絡接口;下面在看看每個子項的含義:

<BROADCAST,MULTICAST,UP,LOWER_UP>:BROADCAST表示該接口支持廣播;MULTICAST表示該接口支持多播;UP表示該網絡接口已啓用;LOWER_UP表示網絡電纜已插入,設備已連接至網絡
mtu 1500        :最大傳輸單位(數據包大小)爲1,500字節
qdisc pfifo_fast          :用於數據包排隊
state UP          :網絡接口已激活
qlen 1000            :傳輸隊列長度
link/ether 08:00:27:0b:cc:63  :接口的MAC(硬件)地址
brd ff:ff:ff:ff:ff:ff             :廣播地址
inet 192.168.1.56/24      :IPv4地址
brd 192.168.1.255       :廣播地址
scope global           :全局有效
dynamic enp0s3          :地址是動態分配的
valid_lft forever            :IPv4地址的有效使用期限
preferred_lft forever          :IPv4地址的首選生存期
inet6 fe80::2c8e:1de0:a862:14fd/64  :IPv6地址
scope link                 :僅在此設備上有效
valid_lft forever              :IPv6地址的有效使用期限
preferred_lft forever         :IPv6地址的首選生存期


三、ip link 相關
ip link 可以設定與設備(device)有關的相關設定,包括MTU以及該網絡設備的MAC等,當然也可以啓動(up)或關閉(down)某個網絡設備。

1、顯示出所有可用網絡接口的列表(無論接口是否激活)
ip link show     #show可以省略

2、激活或停用網絡接口
ip link set enp0s3 down     #停用接口,可以用tab補全
ip link set enp0s3 up         #激活接口

3、開啓或關閉網卡混合模式(即網卡對流經它的任何數據都接收,不管目的是否是自己,一般用於網絡分析)。
ip link set enp0s3 promisc on      #開啓
ip link set enp0s3 promisc off      #關閉

4、設置網卡的MTU
ip link set enp0s3 mtu 1100

5、改變網絡接口的MAC地址
ip link set dev enp0s3 address 08:00:27:75:2a:67

6、顯示網絡統計數據
ip -s link          #所以網卡統計數據
ip -s link ls enp0s3    #單個網卡統計信息,這裏可以添加多個-s會給你這個特定接口更詳細的信息。特別是在排除網絡連接故障時,這會非常有用。

輸出內容說明:
---------------------------------------------------------------------------------
[root@CentOS7GUI1 ~]# ip -s link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
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: enp0s3: <BROADCAST,MULTICAST> mtu 1100 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether 08:00:27:0b:cc:63 brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
993408 11778 0 0 0 6597
TX: bytes packets errors dropped carrier collsns
24237 228 0 0 0 0
---------------------------------------------------------------------------------
輸出重點內容詳解:
RX  :表示接收
TX  :表示發送
bytes  :接收/發送的字節數
packets  :接收/發送的包數
errors     :接收/發送的帶有錯誤的包總數
dropped  :由於處理資源不足導致接收/發送的丟棄的包數
overrun  :因接收溢出(環形緩衝區)導致丟失的包;通常如果接口溢出,則表示內核中存在嚴重問題,或者說服務器上該網絡設備的處理設備太慢
mcast     :接收到的多播包數
carrier    :因數據鏈路錯誤導致發送失敗的包數
collsns        :因在網絡上發送衝突而導致的失敗數


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

2、添加靜態ARP項
ip neigh add 192.168.111.100 lladdr 00:0c:29:c0:5a:ef dev enp0s3

2刪除靜態ARP項
ip neigh del 192.168.111.100 dev enp0s3

五、ip address 相關
如果說ip link是與OSI七層模型的第二層數據鏈路層有關的話,那麼ip address (ip addr)就是與第三層網絡層有關的了。主要是在設定與 IP 有關的各項參數,包括 netmask, broadcast 等。

1、查看IP參數
ip addr show    #show可以省略,addr是address的簡寫
ip addr show enp0s3   #查看特定網絡接口,這裏的show不可以省略

2、爲網絡接口分配IPv4地址
ip addr add 10.0.0.1/24 dev enp0s3

3、爲網絡接口分配多個IPv4地址,一個網卡只能綁定一個IP地址(即IP與MAC綁定),但可以設置多個IP地址,作用就是可以連接多個網段(就是可以訪問多個網段),但前提是這些網段物理層是連接在一起。
ip addr add 10.0.0.1/24 dev enp0s3
ip addr add 10.0.0.2/24 dev enp0s3

4、移除網絡接口的IPv4地址
ip addr del 10.0.0.2/24 dev enp0s3

六、ip route 相關
ip rule命令中包含add、delete、show(或者list)等子命令,注意:策略路由(policy routing)不等於路由策略(rouing policy)。在某些情況下,我們不只是需要通過數據包的目的地址決定路由,可能還需要通過其他一些域:源地址、IP協議、傳輸層端口甚至數據包的負載。這就叫做:策略路由(policy routing)。用這種方法修改的默認路由只是臨時有效的,在系統重啓後所有的改動都會丟失。

路由配置格式:
ip route [add|del] [IP或網域] [via gateway] [dev 設備]

[add|del]:增加(add)或刪除(del)路由。

[IP或網域]:目標網絡或目標主機,可使用192.168.110.0/24之類的網域或者是單純的IP 。

[via gateway]:從哪個gateway(下一跳ip地址)出去,這個ip地址必須與主機能二層互通。

[dev 網絡接口]:所要設定的設備,例如enp0s3, enp0s4等。


1、查看IP路由表
ip route show         #show可以省略
ip route show|column -t   #如果感覺顯示的太亂可以通過column -t命令讓顯示更友好
---------------------------------------------------------------------------------
[root@CentOS7GUI1 ~]# ip route
default via 192.168.1.1 dev enp0s3 proto dhcp metric 100
10.10.10.0/24 dev enp0s8 proto kernel scope link src 10.10.10.71 metric 101
192.168.1.0/24 dev enp0s3 proto kernel scope link src 192.168.1.56 metric 100
192.168.12.0/24 via 192.168.1.254 dev enp0s3
192.168.100.0/24 via 192.168.1.1 dev enp0s3
192.168.101.0/24 via 192.168.1.1 dev enp0s3
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
192.168.200.0/24 dev enp0s3 scope link
---------------------------------------------------------------------------------
上面每一行就是一條路由,或叫做路由條目,default字樣的是默認路由(默認網關)
proto:此路由的路由協定,主要有redirect,kernel,boot,static,ra等,其中kernel是直接由核心判斷自動設定,可以理解爲直連路由。
scope:路由的範圍,主要是link,是與本設備有關的直接連接。

2、添加路由
ip route add default via 192.168.1.2     #添加默認路由,可以添加多個但是不要這樣做,一個設備只添加一個默認路由,如果多個默認路由不能通過優先級區分,那麼數據包會不知道從哪裏走
ip route add 192.168.200.0/24 dev enp0s3    #通過網絡接口方式
ip route add 192.168.100.0/24 via 192.168.1.1   #通過網關的方式,也就是下一跳,推薦這種方式
ip route add 192.168.101.0/24 via 192.168.1.1 dev enp0s3   #可以兩個信息都有

3、刪除路由
ip route del default     #刪除默認路由,從後添加的讓前刪除
ip route del default via 192.168.1.2   #刪除指定的默認路由
ip route del 192.168.200.0/24      #刪除去往指定目的網絡的路由

4、刷新路由表
ip route flush cache

5清空路由表
ip route flush all   #不要輕易用這個命令,用以前也要把路由信息備份下

七、設置永久的靜態路由(CentOS7以上)
配置前最好先確認下當前網絡是那套管理網絡連接的方案,默認是Network-Manager(NetworkManager服務開啓),如果是這套可以通過nmtui命令在網卡對應激活的連接中添加路由
看前面的文章瞭解相應的概念:RHEL/CentOS系列發行版網絡配置介紹  及RHEL/CentOS系列發行版nmcli命令概述

1、添加永久靜態路由

/etc/sysconfig/network 配置文件僅僅可以提供全局默認網關,語法同 Centos6 一樣: GATEWAY=<ip address> ;但是不推薦這樣做,因爲:
存在多個網卡時,默認路由似乎是隨機經由某個網卡設備。檢查了所有連接配置文件後發現,第一網卡的默認連接配置文件 ifcfg-eth0 設置了GATEWAY0(此設置會覆蓋/etc/sysconfig/network 定義的全局默認網關),第二網卡的連接配置文件 ifcfg-eth1 使用的是dhcp,會在啓動時也分配默認網關,兩個默認網關讓計算機糊塗了。這是在測試系統裏經常發生的現象,生產系統一般不會讓網卡用dhcp,或者即使是用了也會仔細分配默認網關防止衝突。

推薦的方法是如果多個網卡都有上網,就把能連接到所有網絡的那個網卡的配置文件裏的添加網關選項,其它網卡都不要添加,這樣就會只有一個默認路由,需要的路由再單獨添加路由信息

永久靜態路由需要寫到 /etc/sysconfig/network-scripts/route-****** 文件中,故在/etc/sysconfig/network-scripts/下,新建文件名爲route-******的文件,(*******代表網卡名)
比如添加兩條靜態路由:
------------------------------------------------------------------------
[root@centos7 ~]# vi /etc/sysconfig/network-scripts/route-enp0s3
10.15.150.0/24 via 192.168.150.253 dev enp0s3
10.25.250.0/24 via 192.168.150.253 dev enp0s3
------------------------------------------------------------------------
這裏一定要清楚目的網絡要從那個網口出去,及下一跳ip是多少

重啓計算機,或者重新啓用設備enp0s3才能生效。


2、清除永久靜態路由

可以刪除 ifcfg-enp0s3文件或者註釋掉文件裏的相應靜態路由條目,重啓計算機。

想要讓修改後的靜態路由立即生效,只能用 ip route del 手工刪除靜態路由條目。


其他需要注意的:

1)連接配置文件 ifcfg-* 裏可以設置多個GATEWAY,一般第一個是 GATEWAY0,然後GATEWAY1, GATEWAY2... ,尾號最大的有效;

2)如果必須在/etc/sysconfig/network 文件定義全局網關,連接配置文件 ifcfg-* 就不要設置GATEWAY了,dhcp的連接要注意dhcp服務器不要定義默認網關。

3)ifcfg-enp0s3 文件改名爲 ifcfg-eth0 後,route-enp0s3 文件也要改名爲 route-eth0。

4)有時候路由生效了但是在 ip route show 卻沒有顯示,重啓計算機後是肯定顯示的,原因暫時不明。

 

參考:

https://www.jellythink.com/archives/469

https://www.jianshu.com/p/7466862382c4

https://www.cnblogs.com/panblack/p/Centos7_Static_Routes.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章