千家信息网

如何使用Linux Bridge

发表于:2024-09-22 作者:千家信息网编辑
千家信息网最后更新 2024年09月22日,本篇内容介绍了"如何使用Linux Bridge"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lin
千家信息网最后更新 2024年09月22日如何使用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安全错误 数据库的锁怎样保障安全 三菱系统传输软件有无服务器权限 知网怎么根据来源数据库分组浏览 辽宁省网络安全大讲堂体会 数据库数据加密技术的是 网络安全分析检验考研 康定住宿软件开发 网络安全等级评定中心 淘云科技二蛋怎么互联网 iis安装服务器 第一次开服务器的视频 工作编排工具 个人服务器 服务器掉了 服务器怎么查硬盘序列号 苏州国兴互联网络科技 与电气专业相关的数据库设计 中国地图软件开发者 易语言服务器断开 网络安全的管理步骤 2020网络安全法宣传标语 打游戏缺少数据库什么意思 蓝港软件开发青岛 德惠智能网络技术有哪些 赛迪网络安全研究所所长刘权 一个服务器有几个公网ip 青岛创恒信网络技术有限公司 每个学校的知网数据库是一样的吗 企业私有云和本地服务器 中国工商银行软件开发中心年终奖 出租云服务器如何管理 深圳服务器电子厂
0