Linux 网桥管理

这篇具有很好参考价值的文章主要介绍了Linux 网桥管理。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

网桥的概念

  • 在生活中,桥是一种结构,用于连接两个地方,允许行人、车辆等安全地跨越障碍物(如河流或高速公路)

  • 在计算机网络技术中,网桥是一种工作在数据链路层的物理或逻辑设备,可以用于连接两个或多个局域网段。它基于MAC地址来转发或过滤帧,从而有效地划分广播域。

  • 在Linux中,网桥是一个逻辑设备,用于链接两个或更多的网络接口(例如,eth0, eth1),使它们在逻辑上工作如同一个接口。在虚拟化技术中,就使用到了网桥技术,链接物理主机和虚拟机或不同的虚拟机。


网桥工作原理

1、网络接口的作用

  • 在Linux中,udev 是负责动态管理设备节点的守护进程。当硬件设备被插入或移除时,udev 会根据 /lib/udev/rules.d/ 目录中定义的规则来生成或移除对应的设备节点,并进行相应的命名和管理。

  • 网络接口名称(例如eth0、ens33)是由udev的规则指定的,这只是一个逻辑名称,用于在用户空间中引用特定的网络设备。这个名称本身并不直接指向物理设备,而是与内核中的网络设备数据结构关联。

  • 所以用户空间的相关工具(例如ifconfig、nmcli等)可以通过这个网络接口的名称作为标识符来与内核的网络协议栈交互,这个接口名称为工具和内核提供了一个明确的引用点,以便指定它们希望配置或查询哪个特定的网络设备

Linux 网桥管理

虚拟网卡是一个逻辑上的网络接口(vnetX),它在Linux内核中表示为网络设备,但没有与之对应的物理硬件。
Linux 网桥管理


2、网桥的成员接口

创建一个网桥设备时,这个网桥设备和虚拟网卡一样,没有对应的物理硬件,属于逻辑上的设备。将物理网卡和虚拟网卡进行桥接,都会成为了桥的成员接口,此时eth0和vnetX直接通信的不再是内核,而是桥br0。但vnetX和eth0仍然可以在数据链路层上发送和接收帧。(不能直接向内核网络协议栈发送消息,而是只能接收来自网络协议栈的消息),一旦进行了桥接,vnetX和eth0就会共享相同的网络段。从逻辑上讲,它们都连接到了同一个数据链路层子网。

可以简单理解为,进行桥接后,物理网卡变成了一根网线,连接外部硬件设备。
Linux 网桥管理

说明:两个网络接口(无论是物理的还是虚拟的)之间的桥接,通常需要一个桥接设备。不能直接将两个网络接口桥接在一起而不创建一个桥接设备。


桥接说明:

  • 桥接后的数据流: 当物理网卡(例如,eth0)被添加到桥(例如,br0)时,它不再直接与网络协议栈进行通信。所有的数据链路层通信都通过桥接口来管理和转发。此时,桥接口充当了一个虚拟交换机的角色,负责在其成员接口之间进行数据链路层的帧转发。

  • IP地址分配: 当桥接配置完毕后,桥接口(如br0)成为与网络协议栈交互的主要接口,因此应当为其分配IP地址。这就解释了为什么将eth0桥接后,其原来的IP地址会被移除。同时,桥接成员接口(如vnetX)通常不需要IP地址,因为它们不再直接与网络协议栈交互,而是通过桥接口br0来进行数据传输。

  • 物理网卡的作用: 在桥接配置中,物理网卡可以被看作是一段传输介质或“电缆”,连接计算机硬件与外部网络。它确保桥接口及其成员可以与外部设备进行数据链路层的通信。

Linux 网桥管理

Linux 网桥管理

通过工具管理网桥

1、通过 brctl 创建网桥

brctl 是由 bridge-utils 软件包提供的一个工具,可以通过这个工具来轻松创建网桥。但是随着iproute2 套件的发展和普及,ip 命令开始提供了类似的功能,使得对网桥的管理brctl不再是首选的工具。

使用 brctl 创建的网桥在默认情况下是临时的,重启系统就失效了。

创建网桥:

# br0是创建的网桥接口名称

$ sudo brctl addbr br0

给网桥添加成员接口:

# ens33和37是物理网卡
$ brctl addif ens33
$ brctl addif ens37

启动网桥:默认网桥是down状态的

ifconfig br_name up 或  ip link set br_name up

删除网桥:

 brctl delbr br_name

移除子接口:

brctl delif br_name device_name

开启stp功能

brctl stp br_name on

2、通过NetworkManager 配置网桥

一般是通过 NetworkManager 提供的命令行工具nmcli来管理网桥。因为现在的Linux发行版系统中,大多数是使用NetworkManager来作为网络管理工具,当使用nmcli进行配置时,NetworkManager会将这些配置写入其配置文件,以便在系统重启后仍然有效。这些配置文件通常位于/etc/NetworkManager/system-connections/目录下。

创建网桥:

nmcli con add type bridge con-name br0 ifname br0

添加成员接口到网桥:

# con-name 物理网卡在桥接中的连接名称
nmcli con add type bridge-slave con-name br0-eth1 ifname eth1 master br0

# 删除成员接口
nmcli con delete 物理网卡的连接名称

启动或停止网桥:

nmcli con up br0
nmcli con down br0

删除网桥:

nmcli con delete br0

查看网桥的配置:

nmcli con show | grep bridge

说明:
连接名称是 NetworkManager 的一个核心概念,实现更方便地管理各种网络设置,而不仅仅是通过网络接口名称。在 NetworkManager 中,每一个网络配置(无论是有线、桥接等)都被视为一个“连接”(connection)。这个连接有一个名字,通常被称为“连接名称”(connection name),名称任意,用于后续识别和管理该特定的连接。

启动stp功能:

nmcli con modify br_name bridge.stp yes

3、通过ip命令管理网桥

ip命令是由iproute2 套件来提供的,提供了ip、ss等命令。使用ip命令来配置网桥也是临时生效的哦。要使这些配置在重启后依然生效,需要将这些命令添加到系统的启动脚本或使用专门的网络配置文件来持久化设置。

创建网桥;

ip link add name br0 type bridge

添加成员接口:

ip link set dev eth1 master br0

启动或停止网桥;

# up
ip link set dev br0 up

# down
ip link set dev br0 down

删除网桥:

ip link delete dev br0 type bridge

删除成员接口;

ip link set dev eth1 nomaster

查看网桥的配置:

ip link show type bridge

启动stp功能:

sudo ip link set br_name type bridge stp_state 1

网桥配置IP地址

创建一个网桥并将一个或多个网络接口添加为其成员时,成员接口上的IP地址配置通常会失效。此时,所以要为网桥接口本身配置IP地址,以便它可以参与网络通信。

这个时候直接将网桥设备当成一个普通的网络接口(例如eth0)进行配置就行了,记得还需要配置路由

例如;

# 网络接口配置
ip addr add 192.168.1.10/24 dev br0

# 路由配置
ip route add default via 192.168.1.1 dev br0

通过配置文件管理网桥

1、centos7:

前提:检查bridge模块是否加载,如果没有加载需要手动进行加载并设置持久生效

lsmod  | grep bridge
bridge                151336  0
stp                    12976  1 bridge
llc                    14552  2 stp,bridge

# 加载模块
modeprobe bridge

# 持久生效
vim /etc

1、创建网桥配置文件
配置文件位于:创建网桥配置文件 /etc/sysconfig/network-scripts/ifcfg-br_name

vim /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=10.0.0.20
NETMASK=255.255.255.0
GATEWAY=10.0.0.2
DNS1=180.76.76.76
DNS2=223.6.6.6
STP=on  # 开启stp功能

2、修改物理网卡接口的配置文件
例如将eth0和eth1这两个物理接口作为网桥br0的子接口

vim /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet"
NAME="eth0"
DEVICE="eth0"
ONBOOT="yes"
BRIDGE=br0

vim /etc/sysconfig/network-scripts/ifcfg-eth1
TYPE="Ethernet"
NAME="eth1"
DEVICE="eth1"
ONBOOT="yes"
BRIDGE=br0  # 表示当前网络接口(如 eth0)应该被添加到名为 br0 的网桥作为一个成员接口

eth0:
Linux 网桥管理

eth1:
Linux 网桥管理
3、重启服务
centos7是默认使用NetworkManager作为网络管理服务。通过使用传统的 network 脚本配置的网络,你仍然可以利用 NetworkManager 来管理和应用这些配置。

systemctl restart NetworkManager
Linux 网桥管理

2、ubuntu1604:

前提:

需要加载bridge模块

sudo modeprobe bridge

sudo vim /etc/modules
bridges

需要安装bridge-utils这个工具包,比较旧的一些版本bridge-utils 包是必要的

sudo apt install bridge-utils 

1、修改配置文件

sudo vim /etc/network/interfaces
auto lo
iface lo inet loopback

auto br0
iface br0 inet static
    address 192.168.14.108
    netmask 255.255.248.0
    gateway 192.168.12.1
    dns-nameserver 180.76.76.76
    bridge_ports ens33 ens37
    bridge_stp on

auto ens33
iface ens33 inet manual
    up ip link set $IFACE up
    down ip link set $IFACE down

auto ens37
iface ens37 inet manual
    up ip link set $IFACE up
    down ip link set $IFACE down

说明:

  1. 在配置文件中添加auto ens33和auto ens37目的是为了保证网络接口开机自启动

  2. 给ens33和ens37配置 up 和down的命令是为了确保接口能正确上下线(系统启动或重新启动网络服务时)

  3. 物理网络接口使用手动(manual)模式是为了确保系统知道这些接口存在,并且不会尝试自动为它们分配IP地址

  4. bridge_stp需要设置为on,特别是网桥的成员接口位于同一个交换机,不开启会发生环路的问题;

  5. $IFACE是一个特殊的变量,它自动引用当前被配置的网络接口的名称

2、重启服务

sudo systemctl restart networking

3、ubuntu2004

前提:需要加载bridge模块

# 检查模块是否加载
lsmod | grep bridge

# 加载模块
sudo modprobe bridge

# 持久化配置
sudo vim /etc/modules
bridge

1、编辑配置文件

network:
  version: 2
  renderer: networkd
  ethernets:
    ens33:
      dhcp4: no
    ens34:
      dhcp4: no

  bridges:
    br0:
      interfaces: [ens33, ens34]
      dhcp4: yes
      parameters:
        stp: true
        forward-delay: 4

2、配置生效

编辑了 netplan 的配置文件后,这些更改并不会立即生效。为了使这些更改生效,需要运行 sudo netplan apply。这样,netplan 会读取修改后的配置文件并调用底层的网络管理工具(例如 networkd 或 NetworkManager)来应用这些配置更改。

sudo netplan apply

3、检查是否生效

bridge link show br0

stp功能介绍

stp是Spanning Tree Protocol(生成树协议)的缩写,作用就是用来防止二层环路的,用在二层交换机上面。网桥就相当于是一个交换机,所以在网桥将成员接口(物理网卡)加入时,需要开启stp协议才行。不然如果两个物理网卡是连接在一个交换机上面,就会产生广播风暴。导致整个局域网出现网络不稳定的问题。

当配置一个网桥并启用STP协议后,为了避免可能的网络环路,每个加入到该网桥的端口(一个端口就是一个物理网卡)会经历几个状态变迁,以确定网络的拓扑结构,并确定哪些端口应该被放入转发状态,哪些端口应该被阻塞。首先进入阻塞状态。从阻塞状态转移到转发状态前,端口需要经历两个中间状态:

  • 监听 (Listening):在此状态中,端口会监听可能的冲突的桥接数据包,但不会学习MAC地址。此状态默认持续15秒(这是Forward Delay的一半)。

  • 学习 (Learning):在此状态中,端口开始学习MAC地址,从而构建其转发数据库,但仍然不转发桢。此状态同样持续15秒(这是Forward Delay的另一半)。文章来源地址https://www.toymoban.com/news/detail-710767.html

到了这里,关于Linux 网桥管理的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 版本控制系统git:一文了解git,以及它在生活中的应用,网站维护git代码,图导,自动化部署代码

    目录 1.Git是什么 2.git在生活中的应用 2.1git自动化部署代码 3.网站维护git代码

    2024年02月07日
    浏览(50)
  • 自然语言处理NLP:一文了解NLP自然语言处理技术,NLP在生活中的应用,图导加深了解,NLP语料库,NLP开源工具

    目录 1.自然语言处理NLP 1.1 NLP中英对照(双份) 1.2 相关文章  2.NLP语料库

    2024年02月09日
    浏览(64)
  • Linux 网桥管理

    在生活中,桥是一种结构,用于连接两个地方,允许行人、车辆等安全地跨越障碍物(如河流或高速公路) 在计算机网络技术中,网桥是一种工作在数据链路层的物理或逻辑设备,可以用于连接两个或多个局域网段。它基于MAC地址来转发或过滤帧,从而有效地划分广播域。

    2024年02月08日
    浏览(47)
  • MES管理系统在生产中的应用及智能工厂的构建思路

    在当今制造业中,随着信息化技术和智能化的不断发展,MES生产管理系统已成为工厂生产的核心组成部分。MES管理系统不仅能够提高生产效率,还可以优化生产流程,提升产品质量。本文将详细介绍MES管理系统在工厂生产中的应用以及构建智能工厂的思路。 一、MES系统在工厂

    2024年02月08日
    浏览(41)
  • Linux Bridge(网桥)

    Linux Bridge简介 Linux Bridge(Linux网桥)是一个软件层面的网络设备,用于在Linux系统中创建和管理网络桥接。它允许将多个物理或虚拟网络接口连接在一起,以创建一个共享相同网络段的网络。 下面是Linux Bridge的一些关键特点和用途: 网络桥接:Linux Bridge允许将多个网络接口连

    2024年02月14日
    浏览(57)
  • linux网桥bridge详解

    Linux网桥(Bridge)是一种网络设备,用于连接并转发以太网数据包。它可以将多个以太网接口连接在一起,使它们成为一个逻辑上的以太网段。这样,在同一个网桥上的设备可以直接通信,就像它们连接在同一个物理以太网上一样。 下面是对Linux网桥的详细解释和一些相关概

    2024年02月06日
    浏览(58)
  • Linux网桥简介、入门与配置

    开始之前先得介绍一下什么是网桥,这里我们假设大家已经知道了物理的交换机是工作在链路层的。交换机的主要任务是在链路层查找转发表(mac地址与端口对应关系表),按照数据帧的目标mac地址,转发数据帧到相应的端口。那么什么是网桥呢,网桥是个远古的概念的,它

    2023年04月22日
    浏览(43)
  • 【Docker】Linux网桥连接多个命名空间

    veth实现了点对点的虚拟连接,可以通过veth连接两个namespace,如果我们需要将3个或者多个namespace接入同一个二层网络时,就不能只使用veth了。 在物理网络中,如果需要连接多个主机,我们会使用bridge(网桥),或者又称为交换机。Linux也提供了网桥的虚拟实现。下面我们试验

    2024年02月05日
    浏览(56)
  • Linux权限的概念和管理

    Linux下有两种用户: 超级用户(root)、普通用户。 超级用户 :可以再linux系统下做任何事情,不受限制 普通用户 :在linux下做有限的事情。 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。 命令 :su [用户名] 功能 :切换用户。 例如,要从root用户切换到普通用

    2024年02月09日
    浏览(75)
  • Linux权限 - 概念与管理 | 文件权限的修改与转让 【详解】

    目录 Linux权限 Linux权限的概念  Linux权限的基础操作 (1).实现用户账号的切换  (2).仅提升当前指令的权限 Linux权限管理 1、文件访问者的分类(人) 2、文件类型和访问权限(事物属性)  3、文件权限值的表示方法 4、文件访问改变文件/目录的拥有者和所属组 修改文件的权限

    2023年04月22日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包