NetworkManager簡介


  隨着計算機網絡技術的進步,網絡環境越來越復雜。特別是無線網絡技術的發展,其中一個主要的問題是,如何保證在網絡環境變化的情況下,保持訪問的可持續性。開發者們收集了新時代的網絡需求,並開發出了networkManager。
    NetworkManager 的出現主要為了解決下面的問題:軟件可以自動檢測盡量多的信息,在復雜網絡環境下可以平滑的切換,可以即使反饋網絡狀態,可以在桌面環境下工作。
    NetworkManager由一個管理系統網絡連接、並且將其狀態通過D-BUS進行報告的后台服務,以及一個允許用戶管理網絡連接的客戶端程序組成。

  NetworkManager 網絡配置順序
    1) 如果有線網絡連接可用,NetworkManager會自動配置有線網絡連接。
    2) 如果有線網絡連接不可以用,NetworkManager 會搜尋所有可檢測到的無線網絡,如果有保存的授權信息, NetworkManager會自動配置無線網絡連接
    3) 如果用戶自定義網絡信息,用戶定義具有最高優先權。

NetworkManger系統架構
    NetworkManger由四個獨立的模塊構成:
    
   - NetworkManager服務 — 一個核心服務,用戶處理網絡連接和策略
   - DHCPCD — NetworkManager使用的DHCP客戶端服務 NetworkManagerInfo —
   - 收集用戶桌面或者客戶端定義信息,並反饋網絡狀態給用戶 NetworkManagerNotification —   
   - Panel的桌面通知標識符。

      這四部分合作,完成 NetworkManager 網絡的管理。 他們的結構圖如下:

NetworkManager 和 D-BUS
   D-Bus 是一種被linux系統廣泛集成的一個內部消息(IPC)和遠程進程調用(RPC)組件, 同一系統間,進程可以通過D-Bus通過並發交互。D-Bus 是freedesktop.org 項目的一部分,目的是標准化linux桌面(如:KDE, GNOME)的系統消息服務。
   NetworkManager 使用D-BUS 可以增加系統設計的彈性和安全性。

   D-BUS 被用於NetworkManager內部進程通訊:

 - NetworkManager服務和 NetworkManagerInfo
 - NetworkManagerInfo 和NetworkManagerNotification
 - NetworkManager服務和 HAL

   對外,NetworkManager使用D-BUS 廣播網絡狀態的變化,並允許通過D-BUS改變這種狀態

   NetworkManager和HA
   HAL, 全稱 硬件抽象曾,它允許應用程序獲取硬件的狀態。NetworkManager 啟動時,查詢HAL獲得可用硬件狀態。硬件狀態的改變會被HAL記錄,並傳遞給 NetworkManager. HAL可以提供網卡設備的信息,以便networkManger使用。

   NetworkManager命令及簡單使用
    nmcli的基本配置選項:
    Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }
    
    OPTIONS
      -t[erse]                                   terse output
      -p[retty]                                  pretty output
      -m[ode] tabular|multiline                  output mode
      -f[ields] <field1,field2,...>|all|common   specify fields to output
      -e[scape] yes|no                           escape columns separators in values
      -n[ocheck]                                 don't check nmcli and NetworkManager versions
      -a[sk]                                     ask for missing parameters
      -w[ait] <seconds>                          set timeout waiting for finishing operations
      -v[ersion]                                 show program version
      -h[elp]                                    print this help
    
    OBJECT
      g[eneral]       NetworkManager's general status and operations
      n[etworking]    overall networking control
      r[adio]         NetworkManager radio switches
      c[onnection]    NetworkManager's connections
      d[evice]        devices managed by NetworkManager
      a[gent]         NetworkManager secret agent or polkit agent
      
       nmcli dev 列出所有網絡設備     
    [root@dhcp-129-213 proc]# nmcli dev
    DEVICE      TYPE      STATE      CONNECTION
    docker0     bridge    connected  docker0    
    virbr0      bridge    connected  virbr0     
    eno1        ethernet  connected  eno1       
    virbr0-nic  tap       connected  virbr0-nic
    vnet0       tap       connected  vnet0      
    vnet1       tap       connected  vnet1      
    lo          loopback  unmanaged  --    
      
      nmclie dev disconnect 斷開連接
    root@dhcp-129-213 proc]# nmcli dev disconnect  eno1
    Device 'eno1' successfully disconnected.
      nmclie dev connect 連接
    [root@dhcp-129-213 proc]# nmcli dev connect  eno1
    Device 'eno1' successfully activated with 'b3a8ec6f-337b-46e6-a88b-b988569fa271'.  
      nmcli con show 顯示設備信息
       [root@dhcp-129-213 proc]# nmcli con show
    NAME        UUID                                  TYPE            DEVICE     
    docker0     f195ac51-0ad1-425c-b2a2-8964f5625fbc  bridge          docker0    
    virbr0-nic  a43be4e2-5ab7-43bc-9de4-5a3240edc3c4  generic         virbr0-nic
    virbr0      38f0556c-a225-4ff6-9fa7-c7d91744b440  bridge          virbr0     
    eno1        b3a8ec6f-337b-46e6-a88b-b988569fa271  802-3-ethernet  eno1       
    vnet1       205ad0f6-7c8e-4e5b-a9ed-231fb248b872  generic         vnet1      
    vnet0       84c6df62-8163-4ce6-8a46-b00abea19d8c  generic         vnet0  

 RHEL7 虛擬機 中一個NetworkManager 網絡問題的解決:
    問題描述: 啟動的虛擬機不能獲得IP地址.
    檢查:
    nmcli dev顯示設備網絡名為ens3
    [root@dhcp-129-128 ~]# nmcli dev
    DEVICE  TYPE      STATE      CONNECTION
    ens3    ethernet  connected  ens3       
    lo      loopback  unmanaged  --  
    nmcli con show 顯示連接名為:eth9, 設備名為---
    [root@dhcp-129-128 ~]# nmcli con show
    NAME  UUID                                  TYPE            DEVICE
    eth0  9246e3d0-5ee6-424b-ab25-341b23740f9f  802-3-ethernet --  
    
    解決方案: 這是由於虛擬機拷貝后網卡設備名變化引起的。刪除舊的連接重新建立連接后,問題消失。
    nmcli con delete eth0
    nmcli dev connect ens3
    [root@dhcp-129-128 ~]# nmcli con show
NAME  UUID                                  TYPE            DEVICE
ens3  9246e3d0-5ee6-424b-ab25-341b23740f9f  802-3-ethernet  ens3 


免責聲明!

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



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