千家信息网

如何使用Linux Bridge

发表于:2025-01-28 作者:千家信息网编辑
千家信息网最后更新 2025年01月28日,本篇内容介绍了"如何使用Linux Bridge"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lin
千家信息网最后更新 2025年01月28日如何使用Linux Bridge

本篇内容介绍了"如何使用Linux Bridge"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

Linux Bridge 详解

Linux Bridge(网桥)是用纯软件实现的虚拟交换机,有着和物理交换机相同的功能,例如二层交换,MAC地址学习等。因此我们可以把tun/tap,veth pair等设备绑定到网桥上,就像是把设备连接到物理交换机上一样。此外它和veth pair、tun/tap一样,也是一种虚拟网络设备,具有虚拟设备的所有特性,例如配置IP,MAC地址等。

Linux Bridge通常是搭配KVM、docker等虚拟化技术一起使用的,用于构建虚拟网络,因为此教程不涉及虚拟化技术,我们就使用前面学习过的netns来模拟虚拟设备。

如何使用Linux Bridge?

操作网桥有多种方式,在这里我们介绍一下通过bridge-utils来操作,由于它不是Linux系统自带的工具,因此需要我们手动来安装它。

# centosyum install -y bridge-utils# ubuntuapt-get install -y bridge-utils

使用brctl help查看使用帮助

never heard of command [help]Usage: brctl [commands]commands:        addbr                    add bridge        delbr                    delete bridge        addif                 add interface to bridge        delif                 delete interface from bridge        hairpin            {on|off}  turn hairpin on/off        setageing   

常用命令如

新建一个网桥:

brctl addbr 

添加一个设备(例如eth0)到网桥:

brctl addif  eth0

显示当前存在的网桥及其所连接的网络端口:

brctl show

启动网桥:

ip link set  up

删除网桥,需要先关闭它:

ip link set  downbrctl delbr 

或者使用ip link del 命令直接删除网桥

ip link del 

> 增加Linux Bridge时会自动增加一个同名虚拟网卡在宿主机器上,因此我们可以通过ip link命令操作这个虚拟网卡,实际上也就是操作网桥,并且只有当这个虚拟网卡状态处于up的时候,网桥才会转发数据。

实验

在上一节《Linux veth pair详解》我们使用veth pair将两个隔离的netns连接在了一起,在现实世界里等同于用一根网线把两台电脑连接在了一起,但是在现实世界里往往很少会有人这样使用。因为一台设备不仅仅只需要和另一台设备通信,它需要和很多很多的网络设备进行通信,如果还使用这样的方式,需要十分复杂的网络接线,并且现实世界中的普通网络设备也没有那么多网络接口。

那么,想要让某一台设备和很多网络设备都可以通信需要如何去做呢?在我们的日常生活中,除了手机和电脑,最常见的网络设备就是路由器了,我们的手机连上WI-FI,电脑插到路由器上,等待从路由器的DHCP服务器上获取到IP,他们就可以相互通信了,这便是路由器的二层交换功能在工作。Linux Bridge最主要的功能就是二层交换,是对现实世界二层交换机的模拟,我们稍微改动一下网络拓扑,如下图:

我们建立了一个网桥,三个netns,三对veth pair,分别一端在netns中,另一端连接在网桥上,为了简化拓扑,我去除了netns中的tap设备,将IP直接配置在veth上。

> veth设备不仅仅可以可以充当"网线",同时它也可以当作虚拟网卡来使用。

# 添加网桥brctl addbr br0# 启动网桥ip link set br0 up# 新增三个netnsip netns add ns0ip netns add ns1ip netns add ns2# 新增两对vethip link add veth0-ns type veth peer name veth0-brip link add veth2-ns type veth peer name veth2-brip link add veth3-ns type veth peer name veth3-br# 将veth的一端移动到netns中ip link set veth0-ns netns ns0ip link set veth2-ns netns ns1ip link set veth3-ns netns ns2# 将netns中的本地环回和veth启动并配置IPip netns exec ns0 ip link set lo upip netns exec ns0 ip link set veth0-ns upip netns exec ns0 ip addr add 10.0.0.1/24 dev veth0-nsip netns exec ns1 ip link set lo upip netns exec ns1 ip link set veth2-ns upip netns exec ns1 ip addr add 10.0.0.2/24 dev veth2-nsip netns exec ns2 ip link set lo upip netns exec ns2 ip link set veth3-ns upip netns exec ns2 ip addr add 10.0.0.3/24 dev veth3-ns# 将veth的另一端启动并挂载到网桥上ip link set veth0-br upip link set veth2-br upip link set veth3-br upbrctl addif br0 veth0-brbrctl addif br0 veth2-brbrctl addif br0 veth3-br

测试网络连通性

使用ip netns exec ns0 ping 10.0.0.2在命名空间ns0中测试与ns1的10.0.0.2的网络连通性

PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.032 ms64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.058 ms64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.052 ms64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=0.044 ms^C--- 10.0.0.2 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 54msrtt min/avg/max/mdev = 0.032/0.046/0.058/0.011 ms

使用ip netns exec ns0 ping 10.0.0.3在命名空间ns0中测试与ns2的10.0.0.3的网络连通性

PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=0.054 ms64 bytes from 10.0.0.3: icmp_seq=2 ttl=64 time=0.045 ms64 bytes from 10.0.0.3: icmp_seq=3 ttl=64 time=0.058 ms64 bytes from 10.0.0.3: icmp_seq=4 ttl=64 time=0.064 ms^C--- 10.0.0.3 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 81msrtt min/avg/max/mdev = 0.045/0.055/0.064/0.008 ms

使用ip netns exec ns1 ping 10.0.0.1在命名空间ns1中测试与ns0的10.0.0.1的网络连通性

PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.031 ms64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.046 ms64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.038 ms64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.041 ms^C--- 10.0.0.1 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 81msrtt min/avg/max/mdev = 0.031/0.039/0.046/0.005 ms

使用ip netns exec ns1 ping 10.0.0.3在命名空间ns1中测试与ns2的10.0.0.3的网络连通性

PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=0.060 ms64 bytes from 10.0.0.3: icmp_seq=2 ttl=64 time=0.059 ms64 bytes from 10.0.0.3: icmp_seq=3 ttl=64 time=0.044 ms64 bytes from 10.0.0.3: icmp_seq=4 ttl=64 time=0.065 ms^C--- 10.0.0.3 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 65msrtt min/avg/max/mdev = 0.044/0.057/0.065/0.007 ms

使用ip netns exec ns2 ping 10.0.0.1在命名空间ns2中测试与ns0的10.0.0.1的网络连通性

PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=0.032 ms64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=0.056 ms64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=0.043 ms64 bytes from 10.0.0.1: icmp_seq=4 ttl=64 time=0.060 ms^C--- 10.0.0.1 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 69msrtt min/avg/max/mdev = 0.032/0.047/0.060/0.013 ms

使用ip netns exec ns2 ping 10.0.0.2在命名空间ns2中测试与ns1的10.0.0.2的网络连通性

PING 10.0.0.2 (10.0.0.2) 56(84) bytes of data.64 bytes from 10.0.0.2: icmp_seq=1 ttl=64 time=0.030 ms64 bytes from 10.0.0.2: icmp_seq=2 ttl=64 time=0.055 ms64 bytes from 10.0.0.2: icmp_seq=3 ttl=64 time=0.044 ms64 bytes from 10.0.0.2: icmp_seq=4 ttl=64 time=0.042 ms^C--- 10.0.0.2 ping statistics ---4 packets transmitted, 4 received, 0% packet loss, time 114msrtt min/avg/max/mdev = 0.030/0.042/0.055/0.011 ms

可以看到我们通过网桥的方式把三个隔离的netns连接在了一起,通过这种方式,我们还可以很方便的添加第四个netns,第五个netns...在这里我们就不展开了。

"如何使用Linux Bridge"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

网络 网桥 设备 测试 空间 一端 世界 二层 交换机 方式 现实 网卡 网络设备 路由 路由器 通信 三个 功能 命令 电脑 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 数据库数字加减空值结果是什么 宁波互联网科技有限公司简介 应用软件开发收费标准 呈贡区品牌软件开发价格信息 网络安全 上网安全 服务器制造标准 主服务器价格 数据库还原时更换名称 中塔信息网络技术有限公司 互联网科技销售靠谱吗 山东冠军齐鲁网络技术有限公司 怎样学好网络安全课 法制教育网络安全班会反思 数据库查看所有用户 贝壳数据库导出来犯法吗 软件开发签完合同几天后悔了 南阳软件开发优缺点 软件开发编程有什么证书 苏州一六八网络技术 云服务器交给别人管理收费 网络安全位置信息 走访网络安全 登录博易大师交易服务器连接失败 河南企业软件开发靠谱吗 软件开发分析阶段的两种趋势 皇室战争无法连接服务器怎么回事 网络安全市场的优势 国铁网络安全分几级 我的世界服务器页面 局网络安全自查工作的通知
0