linux入門系列11--Centos7網路服務管理

来源:https://www.cnblogs.com/heimatengyun/archive/2020/02/17/12320372.html
-Advertisement-
Play Games

通過前面文章的學習已經掌握了Linux系統配置管理的知識,本文講解Centos7網路配置知識。 ...


通過前面文章的學習已經掌握了Linux系統配置管理的知識,本文講解Centos7網路配置知識。

Linux要對外提供服務,需要保證網路通信正常,因此需要正確配置網路參數。本文將講解如何使用Network Manager配置網路參數、管理網路會話服務,以及如何手工綁定mode6模式雙網卡,實現網路的負載均衡。

一、Centos7網路概述

1.1 Centos7網路管理

對於網路功能來說,CentOS7與之前的版本變化較大。

在RHEL/CentOS 6及以前的版本中,網路功能是通過一系列網路相關的腳本文件實現(如/etc/init.d/network文件,及如下/sbin/if*文件等)。

從RHEL/CentOS 7開始,網路功能預設由NetworkManager以服務的形式提供。Network Manager是一個能夠動態控制和配置網路的守護進程,管理網路服務和網路連接,對應NetworkManager.service服務(其配置文件/etc/NetworkManager/NetworkManager.conf,預設為空,無需任何配置)

雖然RHEL/CentOS 6中的網路相關的腳本文件仍然以network.service的形式被支持,但是建議使用NetworkManager.service來進行配置和管理。並且只能選擇其中一種,不然會有衝突。

1.2 network.service

etwork.service是系統提供的服務之一,以相容遺留的網路功能。該服務的運行也被納入SystemD的管理。

管理命令格式

systemctl start|stop|restart|status network

設置開機啟動

systemctl enable network

以上命令設置network.service在系統啟動時自動載入,註意,系統啟動時,/etc/init.d/network會讀取ifcfg文件,並檢測NetworkManager是否已經已經啟動該設備。如果NetworkManager已經啟動該設備,則/etc/init.d/network腳本什麼也不做;否則/etc/init.d/network會啟動該設備。

1.3 NetworkManager.service

啟動networkmanager(註意大小寫,linux嚴格區分大小寫)

***systemctl start NetworkManager***

NetworkManager預設不會執行任何腳本,當腳本滿足以下條件時,才會安裝字母順序順序執行。

(1)位於/etc/NetworkManager/dispatcher.d/目錄下

(2)擁有root用戶的可執行許可權

1.4 網路配置文件

無論是network.service,還是NetworkManager.service,都能夠使用如下網路相關的配置文件。

(1)全局配置文件

文件名:/etc/sysconfig/network

(2)網卡相關的配置文件

配置文件所在文件夾:/etc/sysconfig/network-scripts/

註意:修改網路配置文件後,需要重新載入網路連接,如果是通過network.service則使用命令:systemctl restart network;如果是通過NetworkManager.service則使用nmcli命令:nmcli connection reload。

二、網路參數配置

配置服務本質就是配置文件,以下演示2種方式

2.1 通過編輯配置文件配置網路

在 RHEL7以前的版本中,網卡配置文件的首碼為 eth,第 1 塊網卡為 eth0,第 2 塊網卡為 eth1;以此類推。而在 RHEL7中,網卡配置文件的首碼則以 ifcfg 開始, 加上網卡名稱共同組成了網卡配置文件的名字,例如 ifcfg-eno16777736。

現在有一個名稱為 ifcfg-eno16777736 的網卡設備,我們將其配置為開機自啟動,並且 IP 地址、子網、網關等信息由人工指定,其步驟應該如下所示。

(1)找到網卡配置文件

網卡配置文件存放在/etc/sysconfig/network-scripts目錄下,形如:ifcfg-eno16777736。

[root@heimatengyun ~]# ls /etc/sysconfig/network-scripts/
ifcfg-eno16777736
...省略部分內容

如圖所示就是網卡配置文件。

(2)編輯網卡配置文件

由於在第一篇文章介紹linux的安裝時就已經配置好了網路參數並且可以正常上網,所以先查看一下現有的配置文件內容。

[root@heimatengyun ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE="Ethernet"
BOOTPROTO="none"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
IPV6INIT="yes"
IPV6_AUTOCONF="yes"
IPV6_DEFROUTE="yes"
IPV6_FAILURE_FATAL="no"
NAME="eno16777736"
UUID="ea487965-c5bc-4b43-9eab-36445d996179"
ONBOOT="yes"
HWADDR="00:0C:29:BC:5E:EF"
IPADDR0="192.168.78.100"
PREFIX0="24"
GATEWAY0="192.168.78.2"
DNS1="114.114.114.114"
IPV6_PEERDNS="yes"
IPV6_PEERROUTES="yes"

可以看到根據當時的配置生成了配置,並且也可以正常上網。但其實裡邊有部分內容可以精簡,我們先把原來文件備份一下,然後在重新手動配置一下

[root@heimatengyun ~]# cd /etc/sysconfig/network-scripts/
[root@heimatengyun network-scripts]# ls
ifcfg-eno16777736
...省略部分內容
[root@heimatengyun network-scripts]# cp ifcfg-eno16777736 ifcfg-eno16777736-autobackup
[root@heimatengyun network-scripts]# vi ifcfg-eno16777736

輸入以下內容,並保存退出。

註意:備份目的是以防萬一配置錯誤方便恢復,備份文件為ifcfg-eno16777736-autobackup,雖然首碼相同,但是linux系統不會把他當成為網卡設備。

TYPE="Ethernet"
BOOTPROTO="static"
NAME="eno16777736"
ONBOOT="yes"
IPADDR="192.168.78.100"
NETMASK=255.255.255.0
GATEWAY="192.168.78.2"
DNS1="114.114.114.114"

配置項說明:

設備類型:TYPE=Ethernet

地址分配模式:BOOTPROTO=static 表示設置靜態ip地址

網卡名稱:NAME=eno16777736

是否啟動:ONBOOT=yes

IP 地址:IPADDR=192.168.78.100

子網掩碼:NETMASK=255.255.255.0 可以不配做

網關地址:GATEWAY=192.168.78.2

DNS 地址:DNS1=114.114.114.114

具體參數值根據自己實際情況進行配置。

(3)重啟網卡設備

[root@heimatengyun ~]# systemctl restart network
[root@heimatengyun ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38: icmp_seq=1 ttl=128 time=41.4 ms

重啟網卡服務後,可以ping通說明配置成功。

2.2 通過nmtui命令配置網路

通過nmtui命令運行網路配置工具

[root@heimatengyun network-scripts]# nmtui

執行後進入配置工具主界面

file

通過鍵盤方向鍵選擇操作項,此處選擇“Edit a connection”,按回車鍵,進入選擇網卡界面

file

選擇網卡,然後通過鍵盤方向鍵選擇編輯(註意,在此界面選擇網卡後如果選擇Delete會刪除配置文件下對應的網卡配置文件)

file

按回車鍵,進入編輯界面,然後在ipv4處選擇Manual手動指定ip地址

file

如果為摺疊狀態,在選擇後邊Show,展示配置界面,如果預設為展開狀態則直接進行配置即可

file

配置ip地址、網關、dns信息

file

配置完成後,選擇“OK”

file

選擇“Quit”退出

file

至此配置完畢。

配置完成後,手動重啟網路服務,並測試是否生效。

[root@heimatengyun network-scripts]# systemctl restart network
[root@heimatengyun network-scripts]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.
64 bytes from 14.215.177.38: icmp_seq=1 ttl=128 time=41.4 ms
 ...省略部分內容

三、網路會話管理

Centos7預設使用NetworkManager 來提供網路服務,它是一種動態管理網路配置的守護進程,能夠讓網路設備保持連接狀態。

nmcli 是一款基於命令行的網路配置工具,功能豐富,可以使用 nmcli 命令來管理 Network Manager 服務。

3.1 查看網路信息或網路狀態

[root@heimatengyun network-scripts]# nmcli connection show 
NAME         UUID                                  TYPE            DEVICE      
eno16777736  13756690-ac77-b776-4fc1-f5535cee6f16  802-3-ethernet  eno16777736 
[root@heimatengyun network-scripts]# nmcli con show eno16777736 
connection.id:                          eno16777736
connection.uuid:                        13756690-ac77-b776-4fc1-f5535cee6f16
connection.interface-name:              --
connection.type:                        802-3-ethernet
...省略部分內容

3.2 網路會話管理

CentosL7 系統支持網路會話功能,允許用戶在多個配置文件中快速切換,非常類似 於 firewalld 防火牆服務中的區域技術。

如果我們在公司網路中使用筆記本電腦時需要手動指 定網路的 IP 地址,而回到家中則是使用 DHCP 自動分配 IP 地址。這就需要麻煩地頻繁修改 IP 地址,但是使用了網路會話功能後一切就簡單多了—只需在不同的使用環境中激活相應 的網路會話,就可以實現網路配置信息的自動切換了。

主要實現原理就是創建2個不同的網路會話,根據需要激活相應的網路會話即可,用到的nmcli命令格式為:connection add 會話名稱 type ifname。但是一般只有針對個人電腦使用才會有此需求,而我們主線主要基於伺服器進行講解,因此就不在演示具體用法,感興趣可以自學查閱相關資料即可。

四、綁定雙網卡

生產環境的伺服器要求是一天24小時不間斷提供服務,藉助於網卡綁定技術,不僅 可以提高網路傳輸速度,還可以確保在其中一塊網卡出現故障時,依然可以正常提供網路服務。

centos7進行雙網卡綁定有2種方式:採用bonding或採用team。由於篇幅所限,本文只採用bonding模式進行演示。

我們還是以虛擬機中添加網卡進行模擬。具體步驟如下:

4.1 關閉虛擬機

4.2 添加網卡設備

file

註意,添加的網卡設備,模式必須相同。本例都採用的是NAT模式。

4.3 配置網卡信息

需要對參與綁定的網卡設備逐個進行設置,把這些原本獨立的網卡設備被配置成為一塊“從屬”網卡,服務於“主”網卡, 不應該再有自己的 IP 地址等信息。在進行了初始設置之後,它們就可以支持網卡綁定。

開啟虛擬機,此時進入網卡配置文件查看,是沒有新加網卡的配置信息的,還是只有原來的網卡配置文件autobackup-ifcfg-eno16777736。

[root@heimatengyun ~]# cd /etc/sysconfig/network-scripts/
[root@heimatengyun network-scripts]# ls
autobackup-ifcfg-eno16777736  ifdown-sit       ifup-plusb
ifcfg-eno16777736             ifdown-Team      ifup-post
ifcfg-lo 

此時通過ip命令可以查看到已經新添加了網卡設備

[root@heimatengyun network-scripts]# ip a
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: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:bc:5e:ef brd ff:ff:ff:ff:ff:ff
    inet 192.168.78.100/24 brd 192.168.78.255 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:febc:5eef/64 scope link 
       valid_lft forever preferred_lft forever
3: eno33554976: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:bc:5e:f9 brd ff:ff:ff:ff:ff:ff

配置第一張網卡參數

[root@heimatengyun ~]# cd /etc/sysconfig/network-scripts/
[root@heimatengyun network-scripts]# vim ifcfg-eno16777736 

輸入如下內容並保存

TYPE="Ethernet"
BOOTPROTO=none
NAME="eno16777736"
ONBOOT="yes"
USERCTL="no"
MASTER=bond0
SLAVE=yes

配置第二張網卡參數

[root@heimatengyun network-scripts]# vi ifcfg-eno33554976

輸入如下內容並保存

TYPE="Ethernet"
BOOTPROTO=none
NAME="eno33554976"
ONBOOT="yes"
USERCTL="no"
MASTER=bond0
SLAVE=yes

註意:網卡設備名稱必須要根據自身電腦來進行配置,修改為自己電腦的網卡名稱。

配置主網卡參數

[root@heimatengyun network-scripts]# vim ifcfg-bond0

輸入如下內容並保存

BOOTPROTO=none
ONBOOT=yes
USERCTL=no
DEVICE=bond0
IPADDR=192.168.78.100
PREFIX=24
GATEWAY=192.168.78.2
DNS1="114.114.114.114"
NM_CONTROLLED=no

4.4 創建網卡驅動文件

Linux 內核支持網卡綁定驅動bonding有七種模式,分別為mode0到mode6。其中這三種mode0、mode1 和 mode6比較常用,mode0為預設模式。

​ mode0(平衡負載模式):平時兩塊網卡均工作,且自動備援,但需要在與伺服器本地 網卡相連的交換機設備上進行埠聚合來支持綁定技術。

​ mode1(自動備援模式):平時只有一塊網卡工作,在它故障後自動替換為另外的網卡。

​ mode6(平衡負載模式):平時兩塊網卡均工作,且自動備援,無須交換機設備提供輔 助支持。

創建一個用於網卡綁定的驅動文件,使得綁定後的 bond0 網卡 設備能夠支持綁定技術(bonding);同時定義網卡以 mode6 模式進行綁定,且出現故障時自動切換的時間為 100 毫秒。

[root@heimatengyun network-scripts]# vim /etc/modprobe.d/bond.conf

填入如下內容並保存

alias bond0 bonding
options bond0 miimon=100 mode=6

4.5 重啟網路服務

重啟網路服務(重啟系統)後網卡綁定操作即可成功。正常情況下只有 bond0 網卡設備才會 有 IP 地址等信息。

[root@heimatengyun network-scripts]# systemctl restart network
[root@heimatengyun network-scripts]# ifconfig
bond0: flags=5187<UP,BROADCAST,RUNNING,MASTER,MULTICAST>  mtu 1500
        inet 192.168.78.100  netmask 255.255.255.0  broadcast 192.168.78.255
        inet6 fe80::20c:29ff:febc:5ef9  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:bc:5e:f9  txqueuelen 0  (Ethernet)
        RX packets 28  bytes 2856 (2.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 83  bytes 8273 (8.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:bc:5e:ef  txqueuelen 1000  (Ethernet)
        RX packets 1054  bytes 112121 (109.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 731  bytes 137795 (134.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
eno33554976: flags=6211<UP,BROADCAST,RUNNING,SLAVE,MULTICAST>  mtu 1500
        ether 00:0c:29:bc:5e:f9  txqueuelen 1000  (Ethernet)
        RX packets 28  bytes 2856 (2.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 83  bytes 8273 (8.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 12  bytes 1088 (1.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 12  bytes 1088 (1.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

在宿主機ping主網卡ip,ping通表示雙網卡配置成功

file

註意:偶爾出現重啟network後,可以ping通但是卻ping不通百度,然而直接重啟虛擬機後又正常了。

4.6 驗證雙網卡自動備援功能

思路:開啟另外一臺centos(目的是在centos中ping不會自動停止除非按ctrl+c終止,這樣就能很好的模擬網卡故障和測試自動備援功能),ping主網卡的ip地址,逐一關閉網卡,直到網卡關閉完後不能ping通。

(1)在另外一臺centos中ping前邊設置的主網卡ip地址

[root@yum-local-server ~]# ping 192.168.78.100
PING 192.168.78.100 (192.168.78.100) 56(84) bytes of data.
64 bytes from 192.168.78.100: icmp_seq=1 ttl=64 time=0.844 ms
64 bytes from 192.168.78.100: icmp_seq=2 ttl=64 time=0.405 ms

(2)模擬網卡故障,逐一停止網卡,觀察步驟1中的數據

在虛擬機開啟的情況下,逐一斷掉網卡,觀察步驟1的數據收發情況

file

會發現當停止一塊網卡後,步驟1還是會收到數據,只是中途有短暫的終端。再繼續停止第二塊網卡後將沒有數據收到。直到再次打開網卡後才會繼續收到數據。

由此可見,多網卡確實有自動備援功能,避免單塊網卡壞掉導致斷網的情況。

本文初步探討網路配置,下一篇文章將講解磁碟及存儲結構相關知識。


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • " 返回《C 併發編程》" "1. 簡介" "2. 非同步下的共用變數" "3. 解析 AsyncLocal" "3.1. IAsyncLocalValueMap 的實現" "3.2. 結論" 1. 簡介 + 普通 共用變數: + 在某個類上用靜態屬性的方式即可。 + 多線程 共用變數 + 希望能將這 ...
  • using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 回調函數Demo { /* 回調函數的作用,1.分裝;2.非同步;3.擴展具體方法。 * 通過一個委托給出實現 ...
  • StackExchange.Redis 的組件封裝示例網上有很多,自行百度搜索即可。 這裡只演示如何使用Hash類型操作數據: 1 // 在 hash 中存入或修改一個值 並設置order_hashkey有效期1分鐘,過期自動刪除;null為不過期 2 stopwatch.Start(); 3 va ...
  • " 返回《C 併發編程》" "1. 簡介" "2. 同步非同步對比" "3. 上下文的捕獲和恢復" "4. Flowing ExecutionContext vs Using SynchronizationContext" "5. 如何適用於 async/await" "5.1. 實現方式" "5.1 ...
  • WPF支持真正的透明效果。這意味著,如果在一個性質或元素上層疊另外幾個形狀或元素,並讓所有這些形狀和元素具有不同的透明度,就會看到所期望的效果。通過該特性能夠創建透過上面的元素可以看到的的圖像背景,這是最簡單的情形。最複雜的情形是,使用該特性可創建多層動畫和其他效果,對於其他框架來說這是很難實現的。 ...
  • redis集群搭建--參考微信公眾號(詩情畫意程式員):https://mp.weixin.qq.com/s/s5eJE801TInHgb8bzCapJQ 這是來自redis官網的一段介紹,大概意思就是: Redis是一個開源(BSD許可)的記憶體數據結構存儲,用作資料庫、緩存和消息代理。它支持諸如字 ...
  • 外部SRAM註意事項為使外部SRAM器件達到出最佳性能,建議遵循以下原則:使用與連接的主系統控制器的介面數據帶寬相同的SRAM。如果管腳使用或板上空間的限制高於系統性能要求,可以使用較連接的控制器的數據帶寬小一些的SRAM設備,以便減少管腳數量並減少PCB板上可能的存儲器數量。然而這種變化將導致降低 ...
  • [toc] I am a 程式猿兒,新年第一篇,今天推薦一下那些大神平常使用的電腦軟體和工具類網站,讓你秒變大神。 下麵的整理前面部分是基礎的軟體,做不做技術都需要安裝的一些,後面部分是對程式猿推薦的一些開發軟體和插件。 操作系統 1、微軟正版win10系統安裝:bai度搜索 下載Windows10 ...
一周排行
    -Advertisement-
    Play Games
  • 概述:在C#中,++i和i++都是自增運算符,其中++i先增加值再返回,而i++先返回值再增加。應用場景根據需求選擇,首碼適合先增後用,尾碼適合先用後增。詳細示例提供清晰的代碼演示這兩者的操作時機和實際應用。 在C#中,++i 和 i++ 都是自增運算符,但它們在操作上有細微的差異,主要體現在操作的 ...
  • 上次發佈了:Taurus.MVC 性能壓力測試(ap 壓測 和 linux 下wrk 壓測):.NET Core 版本,今天計劃準備壓測一下 .NET 版本,來測試並記錄一下 Taurus.MVC 框架在 .NET 版本的性能,以便後續持續優化改進。 為了方便對比,本文章的電腦環境和測試思路,儘量和... ...
  • .NET WebAPI作為一種構建RESTful服務的強大工具,為開發者提供了便捷的方式來定義、處理HTTP請求並返迴響應。在設計API介面時,正確地接收和解析客戶端發送的數據至關重要。.NET WebAPI提供了一系列特性,如[FromRoute]、[FromQuery]和[FromBody],用 ...
  • 原因:我之所以想做這個項目,是因為在之前查找關於C#/WPF相關資料時,我發現講解圖像濾鏡的資源非常稀缺。此外,我註意到許多現有的開源庫主要基於CPU進行圖像渲染。這種方式在處理大量圖像時,會導致CPU的渲染負擔過重。因此,我將在下文中介紹如何通過GPU渲染來有效實現圖像的各種濾鏡效果。 生成的效果 ...
  • 引言 上一章我們介紹了在xUnit單元測試中用xUnit.DependencyInject來使用依賴註入,上一章我們的Sample.Repository倉儲層有一個批量註入的介面沒有做單元測試,今天用這個示例來演示一下如何用Bogus創建模擬數據 ,和 EFCore 的種子數據生成 Bogus 的優 ...
  • 一、前言 在自己的項目中,涉及到實時心率曲線的繪製,項目上的曲線繪製,一般很難找到能直接用的第三方庫,而且有些還是定製化的功能,所以還是自己繪製比較方便。很多人一聽到自己畫就害怕,感覺很難,今天就分享一個完整的實時心率數據繪製心率曲線圖的例子;之前的博客也分享給DrawingVisual繪製曲線的方 ...
  • 如果你在自定義的 Main 方法中直接使用 App 類並啟動應用程式,但發現 App.xaml 中定義的資源沒有被正確載入,那麼問題可能在於如何正確配置 App.xaml 與你的 App 類的交互。 確保 App.xaml 文件中的 x:Class 屬性正確指向你的 App 類。這樣,當你創建 Ap ...
  • 一:背景 1. 講故事 上個月有個朋友在微信上找到我,說他們的軟體在客戶那邊隔幾天就要崩潰一次,一直都沒有找到原因,讓我幫忙看下怎麼回事,確實工控類的軟體環境複雜難搞,朋友手上有一個崩潰的dump,剛好丟給我來分析一下。 二:WinDbg分析 1. 程式為什麼會崩潰 windbg 有一個厲害之處在於 ...
  • 前言 .NET生態中有許多依賴註入容器。在大多數情況下,微軟提供的內置容器在易用性和性能方面都非常優秀。外加ASP.NET Core預設使用內置容器,使用很方便。 但是筆者在使用中一直有一個頭疼的問題:服務工廠無法提供請求的服務類型相關的信息。這在一般情況下並沒有影響,但是內置容器支持註冊開放泛型服 ...
  • 一、前言 在項目開發過程中,DataGrid是經常使用到的一個數據展示控制項,而通常表格的最後一列是作為操作列存在,比如會有編輯、刪除等功能按鈕。但WPF的原始DataGrid中,預設只支持固定左側列,這跟大家習慣性操作列放最後不符,今天就來介紹一種簡單的方式實現固定右側列。(這裡的實現方式參考的大佬 ...