linux系統中重啓網卡後網絡不通(NetworkManager篇)

一.故障現象

RHEL7.6系統,使用nmcli綁定雙網卡後,再使用如下命令重啓network服務後主機網絡異常,致使沒法經過ssh遠程登陸系統。html

     # systemctl restart networklinux

二.理論知識

Network service的制御網絡接口配置信息改動後,網絡服務必須重新啓動,來激活網絡新配置的使得配置生效,這部分操做和重新啓動系統時時同樣的做用。制御(控制)是/etc/init.d/network這個文件,能夠用這個文件後面加上下面的參數來操做網絡服務。例如:
     # /etc/init.d/network restart
一樣也能夠用service這個命令來操做網絡服務例如:
     # service network restart
     # systemctl restart network
(NetworManager)是檢測網絡、自動鏈接網絡的程序。不管是無線仍是有線鏈接,它均可以令您輕鬆管理。對於無線網絡,網絡管理器能夠自動切換到最可靠的無線網絡。利用網絡管理器的程序能夠自由切換在線和離線模式。網絡管理器能夠優先選擇有線網絡,支持 ***。網絡管理器最初由 Redhat 公司開發,如今由 GNOME 管理網絡

三.環境分析

系統版本:Red Hat Enterprise Linux Server release 7.6
內核版本:3.10.0-957.el7.x86_64
硬件類型:Huawei 2288H V5
首先檢查系統網絡配置,該系統配置兩塊bonding設備,分別是:
bond0:業務網絡
bond1: Oracle RAC心跳網絡
分析系統日誌,當重啓network服務時(systemctl restart network),系統messages日誌中無明顯異常,測試發現,當中止NetworkManager服務後,問題現象消失,即執行以下操做:ssh

     # systemctl stop NetworkManageride

此時再次重啓network服務:測試

     # systemctl restart networkui

能夠很快ping通bond0的業務地址10.116.6.194。
進一步分析發現,若是不中止NetworkManager服務,而是修改網卡配置文件,在bonding網卡和組成bonding的slave網卡的配置文件中增長一行配置,也能夠解決該問題。rest

     NM_CONTROLLED=no日誌

參考紅帽RHEL7配置網卡bonding的官方文檔: https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/7/html/networking_guide/sec-network_bonding_using_the_command_line_interface
能夠看到,官方文檔的配置示例中設置了NM_CONTROLLED=」no」:
linux系統中重啓網卡後網絡不通(NetworkManager篇)
linux系統中重啓網卡後網絡不通(NetworkManager篇)code

四.原廠問題建議

該問題是因爲NetworkManager服務引發,能夠經過以下兩種方法解決:

  • 在網卡配置文件中增長參數NM_CONTROLLED=no(「no」的引號能夠不寫),設置後重啓network服務生效。設置NM_CONTROLLED=no的目的是將網絡設備脫離NetworkManager服務的管理,設置後該網絡設備僅由network服務管理,不受NetworkManager服務控制,於是nmcli命令對該網絡設備再也不生效;
  • 中止並禁用NetworkManager服務,停用後全部網絡設備由network服務管理,不能經過nmcli命令來管理網絡設備:

     # systemctl stop NetworkManager
     # systemctl disable NetworkManager

五.解決方案

據上所述,可關閉NetworkManager服務或在BOND配置文件中添加參數,但因環境須要,需使用nmcli命令,故沒法關閉NetworkManager,在多輪測試中進行思考,既然NetManager與network服務衝突,但nmcli命令屬於NetworkManager,systemctl通常用來管理network,考慮二者管理命令可能也存在衝突後進行了一波測試,使用NetworkManager的nmcli進行網卡的重啓操做,使用如下命令後,網絡能夠即刻ping通並經過SSH鏈接

     # nmcli connection down 網口名稱
     # nmcli connection up 網口名稱

六.結論

因NetworkManager與network服務存在衝突,且雙網卡綁定時所使用的的nmcli進行綁定,nmcli歸屬於NetworkManager,故重啓網卡時應用nmcli命令up/down,不該使用systemctl進行網卡重啓

轉載請標明出處:1.博客中標註原創的文章,版權歸原做者 heardic 全部;2.未經原做者容許不得轉載本文內容,不然將視爲侵權;3.轉載或者引用本文內容請註明來源及原做者;4.對於不遵照此聲明或者其餘違法使用本文內容者,本人依法保留追究權等。

相關文章
相關標籤/搜索