Linux网桥简介、入门与配置

news/2024/12/23 4:53:08/

开始之前先得介绍一下什么是网桥,这里我们假设大家已经知道了物理的交换机是工作在链路层的。交换机的主要任务是在链路层查找转发表(mac地址与端口对应关系表),按照数据帧的目标mac地址,转发数据帧到相应的端口。那么什么是网桥呢,网桥是个远古的概念的,它是交换机出来前区别于工作在物理层的集线器(多端口中继器)的能将二个小的局域网在链路层连接成一个大的局域网,但又分成二个独立的冲突域的设备。有兴趣的可以自行考古(中继器,集线器,网桥,交换机的历史与区别)。简单的说我们可以将网桥理解为一个二口交换机。而Linux网桥,我们可以简单的把它理解为可以把一台多网卡的Linux主机设置成一台软件交换机来使用的软件。

1、通常的局域网络结构

  1. 以下为一个典型的交换机构成的网络:

在这里插入图片描述

  1. Linux网桥构建的网络(本文不讨论虚拟主机下的 Linux网桥的功能):
    在物理世界中,如果你有一台多网卡的主机,那么你就可以让其中一台主机替代交换机的功能,你可以在这台多网卡主机上创建一个Linux网桥,把部分或者全部所有网卡都加入到网桥里。再把其它主机连接到这台多网卡的主机上,那就形成了一个标准的局域网络。如下图。
    在这里插入图片描述

2、Linux网桥的功能

所以Linux网桥和交换机一样,有二大功能:

  1. MAC学习:学习MAC地址,它会关心每个收到或者发送的数据,关心数据包的来源MAC是从自己的哪个端口来的,然后慢慢的建立地址-端口的对照表(转发表)。

  2. 报文转发:每个发送一个数据包,它都会提取其目的MAC地址,从自己的地址-端口对照表(转发表)中查找应该由哪个端口把数据包发送出去,然后转发数据。

除了上述功能外,Linux网桥还会产生一个虚拟的网络接口,这个接口可以和普通的网卡一样,配置IP地址(静态或者DHCP),建立了Linux网桥的这台主机,以及所有连接在这个网桥上的设备,可以通过这个接口与外界进行IP网络层的通信(如上图中接收路由器分配的IP地址,通过路由器的上网)。

3、在ubuntu下如何使用netplan配置一个网桥

这是一台有4张网卡的主机,分别是enp2s0、enp3s0、 enp4s0、 eno1

ifconfig -a | grep mtu
eno1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
enp2s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
enp3s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
enp4s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500

我们准备把这4张网卡加入同一个网桥br0, 关闭所有网卡的DHCP请求功能,并开启这个网桥通过DHCP自动获取IP地址的功能。我们可以通过在/etc/netplan目录下增加一个br0.yaml文件,用于描述这个网桥,及关闭各个网卡的dhcp获取IP地址功能来实现Linux网桥。

xxx@xxx-HP-PC:~$ ls -l /etc/netplan/
总计 8
-rw-r--r-- 1 root root 104  89  2022 01-network-manager-all.yaml
-rw-r--r-- 1 root root 594  421 21:43 br0.yaml
  1. 用vi打开这个文件,
vi /etc/netplan/br0.yaml
  1. 把以下内容加入到这个文件中。
# Let NetworkManager manage all devices on this system
network:version: 2renderer: NetworkManager
meihualing@xx-HP-PC:~$ cat /etc/netplan/br0.yaml
network:version: 2renderer: NetworkManagerethernets:eno1:dhcp4: nodhcp6: noenp2s0:dhcp4: no dhcp6: no enp3s0:dhcp4: no dhcp6: no enp4s0:dhcp4: no dhcp6: no bridges:br0:interfaces:- enp2s0- enp3s0- enp4s0- eno1dhcp4: yes dhcp6: yes #addresses:#  - 192.168.3.166/24#routes:#  - to: default#    via: 192.168.3.1#nameservers:#  addresses: [192.168.3.1, 8.8.8.8]parameters:stp: false
  1. 使用netplan apply命令让网桥生效
sudo netplan apply
  1. 生效后,通过ip addr show和brctl show可以看到以下网络配置结果
  • 生成了一个br0网桥
  • 4个网卡都加入了br0网桥
  • 网桥接口br0通过DHCP请求,从上游 DHCP SERVER请求到了IP地址192.168.3.122
xxx@xxx-HP-PC:~$ ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: enp2s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000link/ether a0:36:9f:56:98:45 brd ff:ff:ff:ff:ff:ff
3: enp3s0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000link/ether a0:36:9f:56:95:be brd ff:ff:ff:ff:ff:ff
4: enp4s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master br0 state UP group default qlen 1000link/ether a0:36:9f:57:18:d2 brd ff:ff:ff:ff:ff:ff
5: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000link/ether 8c:dc:d4:41:8b:ac brd ff:ff:ff:ff:ff:ffaltname enp0s25
7: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000link/ether 82:61:84:35:97:fb brd ff:ff:ff:ff:ff:ffinet 192.168.3.112/24 brd 192.168.3.255 scope global dynamic noprefixroute br0valid_lft 604763sec preferred_lft 604763secinet6 fe80::8061:84ff:fe35:97fb/64 scope link noprefixroute valid_lft forever preferred_lft forever

xxx@xxx-HP-PC:~$ brctl show
bridge name	bridge id		STP enabled	interfaces
br0		8000.8261843597fb	no		eno1enp2s0enp3s0enp4s0

4、最后构建出如下网络:

注意,任何一个网卡都可以做为和路由去去连接的物理网卡,这个网卡会负责起br0接口上的报文收发的工作。

                                         +- 网桥服务器---++---+192.168.3.112|          +--电脑3-------+|   |       enp2s0+----------+ eth0        ||   |       enp3s0+----      |192.168.3.115||   |  Bridge br0 |    |     +-------------+|   +-------------+    |       +- 路由器 -----+     |                      | | Firewall    |     |   +--电脑1-------+    |     +--电脑4------+
(外网)----WAN-----+ DHCP server +-LAN +---+ 10.10.0.3   |    + ----+ eth0        || 192.168.3.1 |     |   +-------------+    |     |192.168.3.116|+-------------+     |                            +-------------+|   +--电脑2-------++---+ 10.10.0.4   |+-------------+

http://www.ppmy.cn/news/48409.html

相关文章

4.24、半关闭、端口复用

UNIX网络编程卷1&#xff1a;套接字联网API&#xff08;第3版&#xff09; 等文件(提取码&#xff1a;q99x) 4.24、半关闭、端口复用 1.半关闭2.端口复用 1.半关闭 当 TCP 链接中 A 向 B 发送 FIN 请求关闭&#xff0c;另一端 B 回应 ACK 之后&#xff08;A 端进入 FIN_WAIT_…

Java最新面试题100道,包含答案示例(1-10题)

1. Java 中什么是 JVM&#xff1f; JVM&#xff08;Java Virtual Machine&#xff09;即 Java 虚拟机&#xff0c;是一种能够在不同平台上运行 Java 程序的虚拟计算机。JVM 是 Java 的核心组成部分&#xff0c;它负责解释 Java 代码并将其转换成可执行的二进制字节码指令&…

13.弹出层.下

学习要点&#xff1a; 1. 基础参数 本节课我们来开始了解 Layui 的内置模块&#xff1a;弹出层的方法演示。 一&#xff0e;基础参数 1. 参数&#xff0c;我们主要通过 open 方法来演示&#xff0c;其它方法类似&#xff1b; layer . open ({ // 标题 title : 标…

004+limou+C语言链表之“有头双向有循环链表”的实现

0、前要 如果您是初步认识链表&#xff0c;或是不能完全“手撕”一个简单的单链表&#xff0c;可以看看我的上一篇有关“无头单向非循环链表”的实现&#xff0c;再来看这一篇文章 1、“有头双向有循环链表”的实现 &#xff08;0&#xff09;首先阐述两个节点的区别 头节点…

PostMan笔记(三)自动化测试

1. 简介 Postman是一款功能强大的API开发工具&#xff0c;也是一款流行的自动化测试工具。它提供了多种测试功能&#xff0c;包括测试脚本、预请求脚本和测试集合等。 1.1 测试脚本 测试脚本是Postman中用于自动化测试的核心部分。它可以使用JavaScript语言编写&#xff0c;…

WuThreat身份安全云-TVD每日漏洞情报-2023-04-19

漏洞名称:vm2 沙箱逃逸漏洞 漏洞级别:严重 漏洞编号:CVE-2023-29199,CNNVD-202304-1191 相关涉及:vm2 3.9.16 之前版本 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-09144 漏洞名称:Linux 内核蓝牙子系统中存在 RCE 漏洞 漏洞级别:高危 漏洞…

LDMUI-001 61320946C模拟量模件的40端即直流24伏的负端接至逻辑地汇流排上

LDMUI-001 61320946C模拟量模件的40端即直流24伏的负端接至逻辑地汇流排上 ​ 八、现场接地常用注意事项 1.现场控制站 接地螺丝因机柜本体与底座间有胶皮形成绝缘&#xff0c;屏蔽地汇流排与底座间绝缘&#xff0c;现场控制站必须按规定做好接地处理。即分别接至现场控制站接…

#Chrome扩展程序开发教程--07:消息传递

#Chrome扩展程序开发教程--07&#xff1a;消息传递 引言1、基本介绍2、简单通信3、长时间通信4、其它通信4.1、Cross-extension messaging4.2、Sending messages from web pages4.3、Native messaging 引言 本系列博客旨在带来最新的Chrome扩展程序开发入门教程。 1、基本介绍 …