物理机安装LINUX后的网卡配置问题

2023-05-16

基础材料:

CentOS7 物理服务器


背景说明:

安装完LINUX操作系统的网卡配置让主机连通网络,对于系统管理员来说是再常见不过的事情,而且基本上也没什么难度,但凡做过系统管理员的人应该没有不会配置的。但是看似一件极其简单的事,在更换了具体环境后就变得不再简单了,甚至会让系统管理员抓狂。

设想如下场景:完成物理机系统安装并联网的工作分成3波人完成,机房操作人员负责机器上架、连接网线,网络人员负责规划VLAN修改交换机配置,系统管理员负责远程安装系统并配置网卡。作为系统管理员最终可能拿到一张表上面写着IP地址、子网掩码、网关等信息,然后对着ethx就会产生一些问题,比如有多个IP地址需要配置时,ethx怎么与多个IP地址正确的一一对应,如果配置bond时究竟哪几块网卡应该绑在一起。最差的情况下采用盲猜的办法,如果一切顺利最终能够配置成功并联网,如果中间出现了问题,配置了一遍都不对,你可能会检查你的配置文件或联系网路人员看看交换机配置是不是有问题,如果双方都反馈没问题就很容易陷入了死结,纠其原因大概就是系统管理员不了解网络,网络管理员不了解系统,无法相互检查,当然我们讲相互协作是必要的,但是如果能掌握更多的信息对于我们判断问题会有很大帮助。


网络基本交换流程:

VLAN:虚拟局域网,主要用于隔离广播域。属于同一VLAN的数据包直接走二层进行交换,VLAN间通信一般要借助于三层网络设备

VLAN ID:也叫VID,用于标识数据帧属于哪个VLAN,取值为整型1-4094,其中VLAN 1为交换机端口默认VLAN,一般不适用。

Port-based VLAN:基于端口的VLAN,比较常用的划分VLAN方式,其ID也叫PVID。对于access端口PVID等于VID,对于trunk端口其PVID一般为1,即交换机默认VLAN ID(当然该值可以手动调整)。

ACCESS端口:交换机端口类型之一,常用于连接终端服务器,access口接收到untagged帧后(一般是主机发送的),用自己的PVID(VID)进行标识,标明该帧所属VLAN,该帧变成tagged,然后在交换机中流转。当access口接收到tagged帧后(一般是发送给主机的),进行判断如果该帧标识等于自己的PVID(VID)时,将tag剥离,变成untagged帧发送给主机(一般主机无法识别带tagged的帧,因为默认没有加载配置802.1q模块配置VLAN),如果该帧标识不等于自己的PVID(VID)时,直接丢弃。

TRUNK端口:交换机端口类型之一,常用于交换机间的级联(以及需要多VLAN通信的虚拟化主机),可以配置允许多个VLAN通过,当trunk口接收到tagged帧后,根据其VID判断是否在允许列表中,如果是直接转发,如果不是则丢弃。当trunk口接收到untagged帧后,会用自己的PVID标识该帧,即VLAN ID为1,然后进行转发,最终由于VLAN ID 1没有相关配置该帧找不到出口被丢弃。

HYBRID端口:交换机端口类型之一,同时具备access端口和trunk端口特性,这里不讨论。

 通过上图简单串联一下数据帧的流转过程,假定PC1已知PC2 MAC地址,三台交换机已知PC1 PC2的MAC地址,不存在泛洪,两台交换机的access口属于同一VLAN 10,三台交换机trunk口均允许该VLAN通过。

现PC1向PC2发送单播帧,PC1的网卡将untagged帧发送至交换机1的access接口,该access口对该帧添加VLAN ID 10,然后转发至级联的trunk口,级联trunk口收到tagged帧判断允许VLAN 10通过,直接转发至交换机3的trunk,交换机3查找VLAN10的MAC地址表,将该帧从另一端口转发出去,同样透传至交换机2trunk口,交换机2查找VLAN10的MAC地址表,将该帧送至access口,access口比对该帧的VLAN ID发现与自己的相同,将tag剥离,该帧转化为untagged,送至PC2,到达PC2网卡后进行层层解包最终发至上层应用处理。


回到正题,我们装完一台物理主机通常不会在每个网口都接上网线,这就需要判断究竟哪块卡是接线的。通常想到的是ethtool闪灯,但那需要机房人员进行配合。其实通过操作系统提供的信息就能初步的做一个判断。

三种方法:

特别注意这三种方法判断的前提:要将网卡UP起来后进行判断,即执行ifup命令

1、ip a命令(实测可能需要等上几秒,待网卡状态转化)

已接线网卡输出如下:

其中如出现LOWER_UP理解为底层的状态是启动的,即是接了网线的,其前面的UP是指操作系统层面认为端口是UP的状态,即我们执行的ifup命令。

未接线网卡输出如下:

可以看到我们虽然手动UP了网卡,但未出现LOWER_UP字段,且前缀为NO-CARRIER。

2、ifconfig -a命令

接线网卡输出的flags中包含RUNNING字段

未接线网卡输出flags无此字段

3、ethtool命令

观察输出最后的Link detected字段,如果为yes则表示已经接线,如果为no则表示未接线


当系统管理员以自己认为正确的方式配置了IP地址但是网络仍然不通时,通常网络人员并不会登陆你的主机帮你检查问题,这时我们就需要获取一些交换机信息用于反向核对,比如交换机接口位置、VLAN等信息

使用工具lldpad通过2层发现协议查找对端交换机信息

需要注意的是此功能需要交换机端打开LLDP协议的支持,否则我们从主机端无法获取信息

步骤:

1、用镜像ISO配置本地yum源

2、安装lldpad包 yum install -y lldpad

3、启动服务 systemctl start lldpad

4、设置端口收发模式 lldptool set-lldp -i eth0 adminStatus=rxtx

5、获取交换机端口信息 lldptool -t -n -i eth0

注意输出内容根据交换机型号不同略有区别,主要关注字段如下

 Chassis ID:交换机管理口的MAC地址

 Port ID:对端交换机网口位置

 Port Description:对于该端口的描述,一般描述对端主机位置或者SN等信息

 System Name:交换机名称

 System Description:交换机的一些描述信息,包括交换机型号

 Port VLAN ID:PVID编号

当然根据型号或者厂家的不同返回信息中有时还包括一些信息辅助判断:

Management Address:交换机端口的MAC地址

VLAN Name:包括VID和VLAN名称

基于以上信息,我们可以做一些简单的判断(这里所讲的是一般情况,不排除网络管理员手动修改PVID):

对于系统管理员而言最重要的信息就是Port VLAN ID,在该值不为1的情况下,我们一般认为这是一个access口,此时PVID=VID,这时就拿到了VLAN ID,可以与给定的信息核对看VLAN是否配置正确。当PVID为1时,我们一般认为这是一个trunk口,如果返回信息中包括VLAN Name字段,我们还可以拿到这个trunk口允许通过的其中一个VLAN ID(由于软件问题只能返回允许通过的VLAN ID最小的编号)。然后通过比对给定的VLAN ID,我们就能为网卡配置正确的IP地址。

上述其他信息可反馈于网络人员进行核对,最后配置完成后记得关闭服务


 出于某种原因我们的主机需要与trunk模式的端口进行通信,正如上面所说,主机发送的untagged帧进入交换机被打上VLAN1的标签,由于没有出口被丢弃导致了网络不通。这时就需要加载802.1q模块,并配置VLAN使主机具备打tag标签的能力。

两种方法:

使用vconfig进行配置

1、modprobe 8021q  #加载8021q模块

2、yum install -y vconfig  #安装Vconfig

3、vconfig add eth0 10  #给eth0网卡添加VLAN 10

4、配置eth0网卡

5、配置eth0.10网卡,注意命名后缀10即为VLAN号,配置文件以此确认VLAN。

6、启动网卡

     ifup eth0

     ifup eth0.10

使用配置文件:(7.x镜像中已经没有vconfig,只能使用epel源,内网环境下只能直接写配置文件)

1、modprobe 8021q  #加载8021q模块

2、配置eth0网卡,内容同上

3、配置eth0.10网卡

4、启动网卡

     ifup eth0

     ifup eth0.10

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

物理机安装LINUX后的网卡配置问题 的相关文章

随机推荐

  • 互斥锁、条件变量、信号量浅析

    互斥锁 条件变量 信号量浅析 互斥锁与条件变量 条件变量是为了保证同步 条件变量用在多线程多任务同步的 xff0c 一个线程完成了某一个动作就通过条件变量告诉别的线程 xff0c 别的线程再进行某些动作 xff08 大家都在semtake的
  • Linux中的tty、pts、pty等概念辨析

    Linux中的tty pts pty等概念辨析 基本概念 tty pty pts ptmx tty xff08 终端设备的统称 xff09 xff1a tty一词源于Teletypes xff0c 或teletypewriters xff0
  • 树莓派4B (aarch64) 安装PyTorch 1.8 的可行方案

    树莓派4B aarch64 安装PyTorch 1 8 的可行方案 最终可行方案 试了一堆方案 xff08 源码编译 Fast ai的安装文件等 xff09 之后 xff0c 终于找到一个可行的方案 是在 PyTorch 官方讨论社区的一个
  • Nvidia CUDA初级教程1 CPU体系架构综述

    Nvidia CUDA初级教程1 CPU体系架构综述 视频 xff1a https www bilibili com video BV1kx411m7Fk p 61 2 讲师 xff1a 周斌 本节内容 xff1a 了解现代CPU的架构和性
  • 解决VNC远程连接树莓派,窗口显示不全的问题

    1 vnc连接 xff0c sudo raspi config中7 A5选分辨率就好 或2 通过SSH命令行的方式连接树莓派 xff0c 在命令行输入 xff1a vncserver geometry 1080x1024
  • qt官网下载指导(新手易犯错误)

    一 获取资源 注意这里不要直接百度qt的官网 xff0c 如果直接百度下载会让你注册一个qt的账号 xff0c 并且一般没人下载最新版的qt6 当然也可以下载旧的版本 xff0c 但是由于本人比较愚笨 xff0c 还没有在官网找到qt旧版本
  • AI智能呼叫中心系统,主要应用场景有哪些?

    互联网智能时代 xff0c 销售人员不再每天拨打数百个电话 xff0c 当前呼叫中心电话系统被企业常用在电销行业 金融行业 保险 贷款催收行业等外呼销售行业 由传统的呼叫中心基础上不断的进行升级和改善 xff0c 逐渐演变为人工智能电话外呼
  • ROS:geometry_msgs中 Point32 , Point ,PointStamped 的定义和转换

    ROS geometry msgs中Point32 Point PointStamped 的定义和转换 Point32和Point的定义Point32和Point的转换PointStamped 的定义和转换 本文所用ROS为kinetic版
  • ROS:回调函数不执行

    最近在写一个接收图片消息的节点时 xff0c 遇到了两次回调函数不调用的情况 xff0c 记录一下 循环中有continue被跳过了 具体代码如下 xff1a while ros ok if mat data 61 61 nullptr s
  • Python猜拳游戏

    关键点在于 user input 43 1 3与computer input的值进行比较 xff0c 这样就省掉了对于边界值0和2的单独判断 xff0c 简化了代码 from random import choice def finger
  • ROS:节点发布消息无对应话题名称

    最近在写一个发布里程的节点的时候遇到了 xff0c 发布了消息 xff0c 在ros却没有对应话题情况 通过rostopic list 和 rosnode info 节点名 命令查看 xff0c 均没有对应话题 xff0c 大致代码如下 x
  • 【python安全攻防】python简易端口扫描器

    文章目录 socket套接字optparse模块socket解析主机进行连接获取bannerthreading多线程端口扫描器python nmap端口扫描 对自己看python绝技的一次学习记录 socket套接字 与TCP端口进行交互
  • ROS中geometry_msgs常用消息类型

    官方文档 xff1a geometry msgs Msg Srv Documentation geometry msgs里面所有的消息数据类型 xff1a 节点之间仅支持使用消息通讯 Accel AccelStamped AccelWith
  • 【docker ros】docker 开启自启运行容器中的程序

    前言 xff1a 使用docker大规模部署应用 xff0c 而又需要开机自启 xff0c 自动启动容器中的程序 xff0c 这里以docker ros为例子 xff0c 使用systemctl服务 xff0c 结合shell脚本 xff0
  • 网络协议与网络编程(双电脑串口通讯)

    C C 43 43 网络编程 双电脑串口通讯 在阅读本文前 请确保先查看这篇文章 xff0c 学习有关TCP网编与单电脑信息传输实践 文章目录 C C 43 43 网络编程 双电脑串口通讯 1 让两台电脑连接同一个局域网2 查询IP地址3
  • Linux shell的数组详解

    Linux shell的数组详解 前提变量数组数组声明声明索引数组声明关联数组 数组赋值数组引用数组中常用的变量数组中的其它操作 示例 前提 程序是指 指令 43 数据 的组合 指令 xff1a bash脚本中的代码 xff08 函数 调用
  • cannot find trajectory file at ./examples/trajectory.txt

    slam十四讲 3 7显示运动轨迹的程序 trajectory txt文件路径修改 string trajectory file 61 34 examples trajectory txt 34 改为 string trajectory f
  • slam14讲,李代数库Sophus遇到的问题及解决办法

    首先遇到sophus安装问题是在第4章时 xff0c 高博虽然书上说 我们使用带模板的Sophus库 xff0c 但实际的代码使用的是非模板库 高博在git上给的sophus库文件我在make的时候报错 xff0c 找不到解决办法 xff0
  • PX4添加新的msg和topic

    本人也是初次接触PX4固件没几天 xff0c 学习了msg的一些知识后写下这个以供自己以后参考 一 首先在 PX4 Autopilot msg文件夹下新建一个 msg文件 xff1a 这里我添加的是Data link msg msg 在 m
  • 物理机安装LINUX后的网卡配置问题

    基础材料 xff1a CentOS7 物理服务器 背景说明 xff1a 安装完LINUX操作系统的网卡配置让主机连通网络 xff0c 对于系统管理员来说是再常见不过的事情 xff0c 而且基本上也没什么难度 xff0c 但凡做过系统管理员的