Centos 网卡命名规范及信息查看(物理网卡,虚拟网卡)
时间:2022-07-24
本文章向大家介绍Centos 网卡命名规范及信息查看(物理网卡,虚拟网卡),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
背景
之前写的脚本中获取 IP 地址时,未考虑虚拟网卡的情况(docker 创建的虚拟网卡),导致脚本失败,故总结下网卡相关知识。
一致网络设备命名规范
Centos 6及之前的版本网卡命名格式:eth[0123…]
。
Centos 7为了方便定位和区分网络设备,采用一致网络设备命名(CONSISTENT NETWORK DEVICE NAMING)
规范,支持 biosdevname
和 net.ifnames
两种命名规范。
biosdevname
biosdevname 命名规范
设备 |
旧名称 |
新名称 |
示例 |
---|---|---|---|
内嵌网络接口(LOM) |
eth[0123…] |
em[1234…][a] |
em1 |
PCI 卡网络接口 |
eth[0123…] |
pp[b] |
p3p4 |
虚拟功能 |
eth[0123…] |
pp_[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:"
参考资料
- https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/networking_guide/ch-consistent_network_device_naming
- 警告:MySQL-server-5.6.21-1.linux2.6.x86_64.rpm: 头V3 DSA/SHA1 Signature, 密钥 ID 5072e1f5: NOKEY
- MySQL(五)之DDL(数据定义语言)与六大约束
- Java基础08 继承
- 关于python字典类型最疯狂的表达方式
- centos6.5使用yum安装mysql
- Java基础09 类数据与类方法
- MySQL(四)之MySQL数据类型
- JS魔法堂:ASI(自动分号插入机制)和前置分号
- Java基础05 实施接口
- JS魔法堂:函数节流(throttle)与函数去抖(debounce)
- mysql用户管理
- Java基础10 接口的继承与抽象类
- 纸上谈兵: 数学归纳法, 递归, 栈
- Java基础07 包
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 20201001_kpay支付项目搭建
- PGSQL分组查询报错
- ConcurrentHashMap#概述
- var、let、const的区别
- IDEA 破解到2099年(202004亲测)
- Flutter基础widgets教程-Chip篇
- 6.超链接-HTML基础
- lombok 表达式的相关特性
- 写给前端程序员的英文学习指南
- 浅谈spring aop的实现原理和实现过程
- Cypress系列(60)- 运行时的截图和录屏
- 请停止使用Excel进行数据分析,升级到Python吧
- git版本控制器的相关操作
- 离线 Android Studio 环境
- Actor:人生如戏全靠演技--“三维度”逻辑编程语言的设计(3) 角色是一种特定的关系名不正言不顺角色才是真正的主人演员的天分再好的演技也需要角色好演员更需要好剧本