Linux bridge table(brctl)

2023-05-16

目录

一、brctl简介

二、常用命令

2.1 查看所有网桥信息

 2.2 查看指定网桥信息

2.3 新建网桥

2.4 启用/停用网桥

2.5 添加网桥端口

2.6 移除网桥端口

2.7 删除网桥(需先移除相关端口)

三、实验案例

3.1 测试环境介绍

3.1.1 所需硬件

3.1.2 实验目的

3.1.3 测试环境拓扑

3.2 网桥配置

3.3 查看forwarding tables(转发表)

3.4 主机B联网测试

四 、总结与拓展


一、brctl简介

        网桥是连接两个局域网的一种存储/转发设备,它能将两个以上的 LAN 互联为一个逻辑 LAN,使 LAN 上的所有用户都可访问服务器。brctl 命令用于管理 Linux 虚拟以太网网桥,在内核中建立、维护、检查网桥配置。

二、常用命令

2.1 查看所有网桥信息

brctl show

 2.2 查看指定网桥信息

brctl show [网桥名]

2.3 新建网桥

brctl addbr [网桥名]

2.4 启用/停用网桥

ifconfig [网桥名] up/down

2.5 添加网桥端口

brctl addif [网桥名] [端口名]

2.6 移除网桥端口

brctl delif [网桥名] [端口名]

2.7 删除网桥(需先移除相关端口)

brctl delbr [网桥名]

【注】 其他命令可利用“brctl --help”查看

三、实验案例

3.1 测试环境介绍

3.1.1 所需硬件

1)一台主机A(Ubuntu16.04,双网卡);

2)一台主机B(Windows10,不联网);

3)一根网线以及Internet服务;

3.1.2 实验目的

        主机A的两张网卡都是物理网络接口。一张网卡连接着主机B,另一张网卡连接着上游路由器和互联网。我们将主机A的两张网卡之间建立桥接,使得主机B能够通过主机A的网卡完成上网任务。

3.1.3 测试环境拓扑

3.2 网桥配置

# 查看网桥
brctl show
# 新建网桥,网桥名为br0
brctl addbr br0
# 给br0添加端口
brctl addif br0 ens33
brctl addif br0 ens38
# 启动网桥
ifconfig br0 up

配置完成后,再次使用brctl show查看网桥信息 

3.3 查看forwarding tables(转发表)

        我们可以利用"brctl showmacs br0"查看br0网桥的转发表,如下图所示。

参数详解:

        1)port no:网桥br0学习到的某个MAC地址所在的网桥端口号;

        2)mac addr:相应端口连接的MAC地址;

        3)is local:值为 yes 的MAC地址是网桥自己本身的,值为no是学习到的MAC地址;

        4)ageing timer:老化时间,可通过“brctl setaging"来设置,若超过老化时间还没有探测到相应的帧,那么网桥将从转发表中删除该mac 地址。

3.4 主机B联网测试

 

四 、总结与拓展

        根据上述操作即可完成linux网桥的搭建,但仍然存在一些问题。即如果在命令行配置网桥的话,每次重启机器,则网桥就是消失,故想要配置永久性的网桥,则需要在/etc/network/interfaces中配置,具体配置如下所示。

auto lo
iface lo inet dhcp

auto ens33
iface ens33 inet dhcp

auto ens38
iface ens38 inet dhcp

auto br0
iface br0 inet dhcp
    bridge_poets ens33 ens38
    bridge_stp off

         这样配置的话,网桥则会长期存在,不会收到机器重启的影响。

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

Linux bridge table(brctl) 的相关文章

  • 如何使用 sed 仅删除双空行?

    我找到了这个问题和答案 https stackoverflow com questions 4651591 howto use sed to remove only triple empty lines关于如何删除三重空行 但是 我只需要对
  • arm-linux-gnueabi 编译器选项

    我在用 ARM Linux gnueabi gcc在 Linux 中为 ARM 处理器编译 C 程序 但是 我不确定它编译的默认 ARM 模式是什么 例如 对于 C 代码 test c unsigned int main return 0x
  • SONAR - 使用 Cobertura 测量代码覆盖率

    我正在使用声纳来测量代码质量 我不知道的一件事是使用 Cobertura 测量代码覆盖率的步骤 我按照以下步骤操作http cobertura sourceforge net anttaskreference html http cober
  • .NET Core 中的跨平台文件名处理

    如何处理文件名System IO以跨平台方式运行类以使其在 Windows 和 Linux 上运行 例如 我编写的代码在 Windows 上完美运行 但它不会在 Ubuntu Linux 上创建文件 var tempFilename Dat
  • 如何更改 Ubuntu 14.04 上的 php-cli 版本?

    我是 Linux 新手 在篡改时破坏了一些 php 设置 如果我执行一个包含以下内容的 php 脚本 phpinfo 它显示 php 版本为 5 6 但通过命令行 如果我运行php v它返回 7 0 版本 我想让两个版本匹配 我怎样才能修复
  • 并行运行 make 时出错

    考虑以下制作 all a b a echo a exit 1 b echo b start sleep 1 echo b end 当运行它时make j2我收到以下输出 echo a echo b start a exit 1 b star
  • Godaddy 托管上的 CakePHP 控制台

    我一直在努力让我的 CakePHP 网站在 Godaddy 网格托管 帐户上运行 我的蛋糕应用程序设置是从帐户的子目录托管的 并且可以通过子域访问 我必须调整我的 htaccess 文件才能使其正常工作 现在我需要让 CakePHP 控制台
  • 为什么我收到的数据包数据大小大于mss?

    我在两台 PC 上使用 ifconfig ethX mtu 300 修改了 MTU 并使用 netperf 测试网络 我用 WireShark 嗅探了 SYN 数据包中的 MSS 260 但我得到了一些大于 260 的数据包 为什么 嗅探器
  • 在 Mac OS X 上构建 Linux 内核

    我正在做一个修改Linux内核的项目 我有一台桌面 Linux 机器 在上面构建内核没有问题 不过 我要去旅行 我想在途中工作 我只有一台 MacBook 当我尝试构建 Linux 内核时 它抱怨说elf h was not found 我
  • 拆分字符串以仅获取前 5 个字符

    我想去那个地点 var log src ap kernelmodule 10 001 100 但看起来我的代码必须处理 ap kernelmodule 10 002 100 ap kernelmodule 10 003 101 等 我想使用
  • bluetoothctl 到 hcitool 等效命令

    在 Linux 中 我曾经使用 hidd connect mmac 来连接 BT 设备 但自 Bluez5 以来 这种情况已经消失了 我可以使用 bluetoothctl 手动建立连接 但我需要从我的应用程序使用这些命令 并且使用 blue
  • Linux TUN/TAP:无法从 TAP 设备读回数据

    问题是关于如何正确配置想要使用 Tun Tap 模块的 Linux 主机 My Goal 利用现有的路由软件 以下为APP1和APP2 但拦截并修改其发送和接收的所有消息 由Mediator完成 我的场景 Ubuntu 10 04 Mach
  • 我可以从命令行打印 html 文件(带有图像、css)吗?

    我想从脚本中打印带有图像的样式化 html 页面 谁能建议一个开源解决方案 我使用的是 Linux Ubuntu 8 04 但也对其他操作系统的解决方案感兴趣 你可以给html2ps http user it uu se jan html2
  • sendfile64 只复制约2GB

    我需要使用 sendfile64 复制大约 16GB 的文件 到目前为止我所取得的成就是 include
  • 使用 sed 更新 xml 属性(Windows + cygwin 和 Linux)?

    我需要使用 sed 命令对 xml 文件进行更新 但我在这方面遇到了麻烦 它需要在 Windows 使用 cygwin 和 Linux 上运行 XML 具有以下元素
  • nslookup 报告“无法解析 '(null)': 名称无法解析”,尽管它成功解析了 DNS 名称

    我在 ubuntu 上 并且正在运行 docker 默认桥接网络 我有 Zookeeper kafka 的容器化版本 以及我编写的与 kafka 对话的应用程序 I do a docker exec it
  • arm64和armhf有什么区别?

    Raspberry Pi Type 3 具有 64 位 CPU 但其架构不是arm64 but armhf 有什么区别arm64 and armhf armhf代表 arm hard float 是给定的名称Debian 端口 https
  • 尝试安装 LESS 时出现“请尝试以 root/管理员身份再次运行此命令”错误

    我正在尝试在我的计算机上安装 LESS 并且已经安装了节点 但是 当我输入 node install g less 时 出现以下错误 并且不知道该怎么办 FPaulMAC bin paul npm install g less npm ER
  • Discord.net 无法在 Linux 上运行

    我正在尝试让在 Linux VPS 上运行的 Discord net 中编码的不和谐机器人 我通过单声道运行 但我不断收到此错误 Unhandled Exception System Exception Connection lost at
  • 如何在 Linux shell 中将十六进制转换为 ASCII 字符?

    假设我有一个字符串5a 这是 ASCII 字母的十六进制表示Z 我需要找到一个 Linux shell 命令 它将接受一个十六进制字符串并输出该十六进制字符串代表的 ASCII 字符 所以如果我这样做 echo 5a command im

随机推荐