安裝完 centos8之后
1.修改ip地址:
vim /etc/sysconfig/network-scripts/ifcfg-ens33 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=static # 可以修改一下 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens33 IPADDR=192.168.3.112 #加上 NETMASK=255.255.255.0 # 加上 GATEWAY=192.168.3.1 #加上 DNS=8.8.8.8 DNS2=114.114.114.114 UUID=0c015efb-834a-4200-ab59-41878179d8ad DEVICE=ens33 ONBOOT=yes #改成 yes
在rhel7上,同時支持network.service和NetworkManager.service(簡稱NM)。默認情況下,這2個服務都有開啟,但許多人都會將NM禁用掉。
在rhel8上,已廢棄network.service,因此只能通過NM進行網絡配置,包括動態ip和靜態ip。換言之,在rhel8上,必須開啟NM,否則無法使用網絡。
rhel8依然支持network.service,只是默認沒安裝
2.重啟網絡服務
systemctl restart NetworkManager
NetworkManager介紹
NetworkManager是2004年Red Hat啟動的項目,旨在能夠讓Linux用戶更輕松地處理現代網絡需求,尤其是無線網絡,能自動發現網卡並配置ip地址。
類似在手機上同時開啟wifi和蜂窩網絡,自動探測可用網絡並連接,無需手動切換。
雖然初衷是針對無線網絡,但在服務器領域,NM已大獲成功。
NM能管理各種網絡
▷ 有線網卡、無線網卡
▷ 動態ip、靜態ip
▷ 以太網、非以太網
▷ 物理網卡、虛擬網卡
使用方法
▷ nmcli:命令行。這是最常用的工具,本文將詳細講解該工具使用。
▷ nmtui:在shell終端開啟文本圖形界面。示意圖見本文最后的Tips
▷ Freedesktop applet:如GNOME上自帶的網絡管理工具
▷ cockpit:redhat自帶的基於web圖形界面的"駕駛艙"工具,具有dashborad和基礎管理功能。示意圖見本文最后的Tips
為什么要用NM
▷ 工具齊全:命令行、文本界面、圖形界面、web
▷ 廣納天地:納管各種網絡,有線、無線、物理、虛擬
▷ 參數豐富:多達200多項配置參數(包括ethtool參數)
▷ 一統江湖:RedHat系、Suse系、Debian/Ubuntu系,均支持
▷ 大勢所趨:下一個大版本的rhel只能通過NM管理網絡
nmcli使用方法
nmcli使用方法非常類似linux ip命令、cisco交換機命令,並且支持tab補全(詳見本文最后的Tips),也可在命令最后通過-h、–help、help查看幫助。在nmcli中有2個命令最為常用:
? nmcli connection
譯作連接,可理解為配置文件,相當於ifcfg-ethX。可以簡寫為nmcli c
? nmcli device
譯作設備,可理解為實際存在的網卡(包括物理網卡和虛擬網卡)。可以簡寫為nmcli d
在NM里,有2個維度:連接(connection)和設備(device),這是多對一的關系。想給某個網卡配ip,首先NM要能納管這個網卡。設備里存在的網卡(即nmcli d可以看到的),就是NM納管的。接着,可以為一個設備配置多個連接(即nmcli c可以看到的),每個連接可以理解為一個ifcfg配置文件。同一時刻,一個設備只能有一個連接活躍。可以通過nmcli c up切換連接。
connection有2種狀態:
▷ 活躍(帶顏色字體):表示當前該connection生效
▷ 非活躍(正常字體):表示當前該connection不生效
device有4種常見狀態:
▷ connected:已被NM納管,並且當前有活躍的connection
▷ disconnected:已被NM納管,但是當前沒有活躍的connection
▷ unmanaged:未被NM納管
▷ unavailable:不可用,NM無法納管,通常出現於網卡link為down的時候(比如ip link set ethX down)
# 查看ip(類似於ifconfig、ip addr) nmcli # 創建connection,配置靜態ip(等同於配置ifcfg,其中BOOTPROTO=none,並ifup啟動) nmcli c add type ethernet con-name ethX ifname ethX ipv4.addr 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.method manual # 創建connection,配置動態ip(等同於配置ifcfg,其中BOOTPROTO=dhcp,並ifup啟動) nmcli c add type ethernet con-name ethX ifname ethX ipv4.method auto # 修改ip(非交互式) nmcli c modify ethX ipv4.addr '192.168.1.200/24' nmcli c up ethX # 修改ip(交互式) nmcli c edit ethX nmcli> goto ipv4.addresses nmcli ipv4.addresses> change Edit 'addresses' value: 192.168.1.200/24 Do you also want to set 'ipv4.method' to 'manual'? [yes]: yes nmcli ipv4> save nmcli ipv4> activate nmcli ipv4> quit # 啟用connection(相當於ifup) nmcli c up ethX # 停止connection(相當於ifdown) nmcli c down # 刪除connection(類似於ifdown並刪除ifcfg) nmcli c delete ethX # 查看connection列表 nmcli c show # 查看connection詳細信息 nmcli c show ethX # 重載所有ifcfg或route到connection(不會立即生效) nmcli c reload # 重載指定ifcfg或route到connection(不會立即生效) nmcli c load /etc/sysconfig/network-scripts/ifcfg-ethX nmcli c load /etc/sysconfig/network-scripts/route-ethX # 立即生效connection,有3種方法 nmcli c up ethX nmcli d reapply ethX nmcli d connect ethX # 查看device列表 nmcli d # 查看所有device詳細信息 nmcli d show # 查看指定device的詳細信息 nmcli d show ethX # 激活網卡 nmcli d connect ethX # 關閉無線網絡(NM默認啟用無線網絡) nmcli r all off # 查看NM納管狀態 nmcli n # 開啟NM納管 nmcli n on # 關閉NM納管(謹慎執行) nmcli n off # 監聽事件 nmcli m # 查看NM本身狀態 nmcli # 檢測NM是否在線可用 nm-online
nmcli connection重點
? nmcli c show
▪ 第一列是connection名字,簡稱con-name(注意con-name不是網卡名)
▪ 第二列是connection的UUID
▪ 最后一列才是網卡名(標准說法叫device名),可通過nmcil d查看device
對connection做操作時需要指定標識,標識可以是con-name、UUID、如果存在ifcfg文件則也可以用ifcfg的完整路徑,即/etc/sysconfig/network-scripts/ifcfg-ethX
nmcli c show ethX nmcli c show cae3f1ef-e79a-46c3-8e0c-946b91a65e11 nmcli c show /etc/sysconfig/network-scripts/ifcfg-ethX
? nmcli c的con-name
同時對應ifcfg的文件名以及內容中的NAME=,該參數表示連接(connection)的名字,無需和網卡名相同,可以為一個設備(device)創建多個連接,但同一時刻只能有一個連接生效。當有多個連接時候,nmcli c delete刪除當前連接,就會自動選擇同一個設備的其他連接來頂替生效。可以通過nmcli c up來將指定連接切換生效。
注意:通過nmcli c modify修改con-name,只會對應修改ifcfg文件中的NAME,而不會更改ifcfg文件名。
? nmcli c的ipv4.method
對應ifcfg文件內容的BOOTPROTO,ipv4.method默認為auto,對應為BOOTPROTO=dhcp,這種時候如果指定ip,就可能導致網卡同時有dhcp分配的ip和靜態ip。設置為manual表示BOOTPROTO=none,即只有靜態ip。
例子:創建一個連接(connection)
nmcli c add type ethernet con-name ethX-test ifname ethX ipv4.addresses '192.168.1.100/24,192.168.1.101/32' ipv4.routes '10.0.0.0/8 192.168.1.10,192.168.0.0/16 192.168.1.11' ipv4.gateway 192.168.1.254 ipv4.dns '8.8.8.8,4.4.4.4' ipv4.method manual
▪ type ethernet:創建連接時候必須指定類型,類型有很多,可以通過nmcli c add type -h看到,這里指定為ethernet。
▪ con-name ethX ifname ethX:第一個ethX表示連接(connection)的名字,這個名字可以任意定義,無需和網卡名相同;第二個ethX表示網卡名,這個ethX必須是在nmcli d里能看到的。
▪ ipv4.addresses ‘192.168.1.100/24,192.168.1.101/32’:配置2個ip地址,分別為192.168.1.100/24和192.168.1.101/32
▪ ipv4.gateway 192.168.1.254:網關為192.168.1.254
▪ ipv4.dns ‘8.8.8.8,4.4.4.4’:dns為8.8.8.8和4.4.4.4
▪ ipv4.method manual:配置靜態IP
對應的ifcfg和dns就是
# /etc/sysconfig/network-scripts/ifcfg-ethX-test TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none IPADDR=192.168.1.100 PREFIX=24 IPADDR1=192.168.1.101 PREFIX1=32 GATEWAY=192.168.1.254 DNS1=8.8.8.8 DNS2=4.4.4.4 DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ethX-test UUID=9a10ad89-437c-4caa-949c-a394a6d28c8d DEVICE=ethX ONBOOT=yes # /etc/resolv.conf nameserver 8.8.8.8 nameserver 4.4.4.4