Centos 網卡命名規范及信息查看(物理網卡,虛擬網卡)


背景

之前寫的腳本中獲取 IP 地址時,未考慮虛擬網卡的情況(docker 創建的虛擬網卡),導致腳本失敗,故總結下網卡相關知識。

一致網絡設備命名規范

Centos 6及之前的版本網卡命名格式:eth[0123…]

Centos 7為了方便定位和區分網絡設備,采用一致網絡設備命名(CONSISTENT NETWORK DEVICE NAMING)規范,支持 biosdevnamenet.ifnames 兩種命名規范。

biosdevname

biosdevname 命名規范

設備 舊名稱 新名稱 示例
內嵌網絡接口(LOM) eth[0123…] em[1234…][a] em1
PCI 卡網絡接口 eth[0123…] p p [b] p3p4
虛擬功能 eth[0123…] p p _ [c] p3p4_1

注: 新枚舉從 1 開始。

net.ifnames

net.ifnames 命名規范為:設備類型 + 設備位置 + 數字

設備類型

  • en 代表以太網
  • wl 代表無線局域網(WLAN)
  • ww 代表無線廣域網(WWAN)

設備命名

格式 描述
o<index> 板載設備索引號
s<slot>[f<function>][d<dev_id>] 熱插拔插槽索引號
x<MAC> MAC 地址
p<bus>s<slot>[f<function>][d<dev_id>] PCI 地理位置
p<bus>s<slot>[f<function>][u<port>][..][c<config>][i<interface>] USB 端口鏈

示例

  • eno1 板載1號網卡
  • enp0s2 PCI擴展卡的2號端口
  • ens33 熱插拔插槽3號PCI-E插槽的3號端口
  • wlp3s0 第3號PCI擴展卡的0號端口

系統默認命名規則

默認情況下,systemd 會使用以下策略,采用支持的命名方案為接口命名:

  • 方案 1:如果固件或 BIOS 信息適用且可用,則使用整合了為板載設備提供索引號的固件或 BIOS 的名稱(例如:eno1),否則請使用方案 2。
  • 方案 2:如果固件或 BIOS 信息適用且可用,則使用整合了為 PCI 快速熱插拔插槽提供索引號的固件或 BIOS 名稱(例如 ens1),否則請使用方案 3。
  • 方案 3:如果硬件連接器物理位置信息可用,則使用整合了該信息的名稱(例如:enp2s0),否則請使用方案 5。
  • 方案 4:默認不使用整合接口 MAC 地址的名稱(例如:enx78e7d1ea46da),但用戶可選擇使用此方案。
  • 方案 5:傳統的不可預測的內核命名方案,在其他方法均失敗后使用(例如: eth0)。
    這個策略(如上所述)是默認策略。如果該系統已啟用 biosdevname,則會使用該方案。

注:啟用 biosdevname 需要添加 biosdevname=1 作為命令行參數(Dell 系統除外),此時只要安裝 biosdevname,就會默認使用該方案。如果用戶已添加 udev 規則,該規則會更改內核設備名稱,則會優先使用這些規則。

查看網卡、獲取 IP

# 全部網卡
$ ls /sys/class/net/
或
$ ifconfig -a
或
$ ip a

# 虛擬網卡
$  ls /sys/devices/virtual/net/

# 物理網卡
$ ls /sys/class/net/ | grep -v "$(ls /sys/devices/virtual/net/)"

# 獲取本機所有 IP
$ ifconfig -a |grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"

# 獲取物理網卡的 IP
$ ifconfig $(ls /sys/class/net/ | grep -v "$(ls /sys/devices/virtual/net/)") |grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:"

參考資料

微信公眾號:daodaotest


免責聲明!

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



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