• linux网桥简单理解和持久化配置


    前言

    linux bridge是网络虚拟化中非常重要的一种设备,今天就来学习下linux bridge的相关知识

    一、Linux 网桥是什么?

    现在的Linux 网桥可以看做是(三层的)虚拟交换机,功能和物理交换机一样,最常用的功能是链接虚拟机和容器–为虚拟机和容器提供一个虚拟交换机。

    创建一个bridge后(br0),可以把其他的网络设备(比如eth0)attach到br0上,eth0称作br0的从设备。需要注意的是,eth0 attach到br0上,不是对应的将eth0插接到“交换机”br0上,而是eth0变成了br0的一个端口(网线插口)。那什么什么时候才是插入网线呢?

    通常的网桥是二层设备,不需要有IP地址。但是linux网桥是虚拟网络设备,是有ip和mac的(br设备的MAC地址是它所有从设备中最小的MAC地址)。从设备(eth0)被attach到br上之后,它的IP及MAC都不再可用了(退化为一个端口了)且它们被设置为接收任何包(工作在链路层,且是混杂模式,不需要ip),最终由bridge设备来决定数据包的去向:接收到本机、转发、丢弃。

    二、网桥主要作用

    目前,虚拟网桥最主要的作用是为虚拟机提供一种网络链接的方式,常见的bridge网络结构图如下图所示:

    在这里插入图片描述
    原理说明:

    bridge1设备attach eth0和tap0、tap1,此时bridge1可以视作交换机,eth0\tap0\tap1都是这个交换机的网口。虚拟机通过tap网口链接,虚拟机和主机、外部局域网主机是同一个局域网内的机器,可以设置成同一个网段的IP,虚拟机发出去的数据包先到达br1,然后由br1交给eth0发送出去,数据包都不需要经过host机器的协议栈,效率高.这里比较别扭的就是主机的eth0,退化成网口,bridge1接替它成为主机的上网设备。

    这里说明下,主机上每创建一个tap设备(理解为虚拟网卡),则会增加一个vnet网卡设备,默认从vnet0开始,在启动对应的虚拟机后使用ifconfig命令可以看到多了一个vnet0的网卡名称,如下图所示:
    在这里插入图片描述
    使用brctl show命令可以看出当前网络关系如下:
    在这里插入图片描述
    vnet0是从属于网桥设备br0。

    三、网桥配置命令及安装(CentOS系统)

    在linux 中 配置网桥的命令比较多,以下是目前所知道的三种命令

    1 网桥配置命令

    • 安装 bridge组件 或者iproute2或者virsh工具实现网桥配置

      方式1:yum -y install bridge-utils
      方式2:yum install -y iproute
      方式3:使用 virsh iface-*命令
      
      • 1
      • 2
      • 3
    • brctl命令说明

      brctl addbr br1 			#创建网桥
      brctl addif br1 enp4s0 		#为网桥添加物理接口
      brctl delbr br1 			#删除网桥
      brctl delif br1 enp4s0 		#删除网桥接口
      brctl show 					#显示网桥列表信息
      brctl show br1 				#显示网桥br1的信息
      brctl showmacs br1 			#显示网桥的MAC地址信息
      brctl showstp br1			#显示网桥的stp信息
      brctl stp br-test on|off	#开|关stp
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
    • ip 命令说明

      ip link add br2 type bridge 			#创建网桥
      ip link set dev enp4s0 master br2		#为网桥添加物理接口
      ip link del br2 type bridge 			#删除网桥
      ip link set dev enp4s0 nomaster			#删除网桥接口
      ip addr show type bridge				#显示网桥列表信息
      ip addr show type bridge br2 			#显示网桥br2的信息
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
    • virsh iface-* 命令

      virsh  iface-begin                    生成当前接口设置快照,可在今后用于提交 (iface-commit) 或者恢复 (iface-rollback)
      virsh  iface-bridge                   生成桥接设备并为其附加一个现有网络设备
      virsh  iface-commit                   提交 iface-begin 后的更改并释放恢复点
      virsh  iface-define                   define an inactive persistent physical host interface or modify an existing persistent one from an XML file
      virsh  iface-destroy                  删除物理主机接口(启用它请执行 "if-down"virsh  iface-dumpxml                  XML 中的接口信息
      virsh  iface-edit                     为物理主机界面编辑 XML 配置
      virsh  iface-list                     物理主机接口列表
      virsh  iface-mac                      将接口名称转换为接口 MAC 地址
      virsh  iface-name                     将接口 MAC 地址转换为接口名称
      virsh  iface-rollback                 恢复到之前保存的使用 iface-begin 生成的更改
      virsh  iface-start                    启动物理主机接口(启用它请执行 "if-up"virsh  iface-unbridge                 分离其辅助设备后取消定义桥接设备
      virsh  iface-undefine                 取消定义物理主机接口(从配置中删除)
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14

    2.持久化网桥配置

    对于centos而言,如果重启网络服务,则所有的配置则会消失,所以我们需要修改配置文件,才能永久保存网桥配置,持久化网桥配置,修改network的指定文件,网卡的配置文件在: /etc/sysconfig/network-scripts/ 下,命名规则: ifcfg-xxxx。 xxx为设备名称。

    下面举例说明如何创建br1网桥设备以及将ens37网卡添加到网桥中去。

    ifcfg-br1的配置内容:

    TYPE=Bridge  #注意,这个地方一点要大写
    DEVICE=br1  #指定设备名称,一定要与文件名中ifcfg-br1后的"br1"相同
    ONBOOT=yes  #开机启动
    IPADDR=192.168.1.1  #配置网桥的地址
    NETMASK=255.255.255.0
    GATEWAY=192.168.238.1  #指定网关
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    ifcfg-ens37的配置内容:

    TYPE=Ethernet
    NAME=ens37
    DEVICE=ens37
    ONBOOT=yes
    BRIDGE=br1  #将该网卡桥接到br1上面去
    
    • 1
    • 2
    • 3
    • 4
    • 5

    重启网络,配置生效

    systemctl restart network
    
    • 1

    brctl show查看网桥,此时ens37已经连接在网桥br1上
    在这里插入图片描述

    参考文章:
    1、https://www.cnblogs.com/robotech/p/13770168.html
    2、https://developer.aliyun.com/article/799102
    3、https://www.cnblogs.com/doscho/p/6225807.html

  • 相关阅读:
    vue2+element UI 树形只有两级, 第一级只能上下移动,第二级不能成为第一级,只能拖到别的第一级和在同一级排序
    leetcode解题思路分析(一百二十八)1053 - 1078 题
    【云原生之K8s】 Kubernetes核心组件
    0基础了解电商系统如何对接支付渠道
    Java版工程行业管理系统源码-专业的工程管理软件- 工程项目各模块及其功能点清单
    bep003-Torrent文件解析.md
    用CSS实现对(√)和错(×)
    中高级试题」:MVCC 实现原理是什么?
    深度学习标注工具(包括自动标注)总结——持续更新
    洛谷P1939 矩阵快速幂模板
  • 原文地址:https://blog.csdn.net/xiao3404/article/details/130909190