Linux Network bridge

简介

  • 网桥是一种软件配置,用于连结两个或更多个不同网段。网桥的行为就像是一台虚拟的网络交换机,工作于透明模式(即其他机器不必关注网桥的存在与否)。任意的真实物理设备(例如 eth0)和虚拟设备(例如 tap0)都可以连接到网桥。
  • 桥接:把一台机器上的若干个网络接口“连接”起来。其结果是,其中一个网口收到的报文会被复制给其他网口并发送出去。以使得网口之间的报文能够互相转发。网桥就是这样一个设备,它有若干个网口,并且这些网口是桥接起来的。与网桥相连的主机就能通过交换机的报文转发而互相通信。

如下图:主机A发送的报文被送到交换机S1的eth0口,由于eth0与eth1、eth2桥接在一起,故而报文被复制到eth1和eth2,并且发送出去,然后被主机B和交换机S2接收到。而S2又会将报文转发给主机C、D
Linux Network bridge

创建网桥

可以通过多种方式实现,这里介绍通过nmcli和bridge实现。

通过nmcli

1)添加一个名为br0的网桥,并且手工指定ip为192.168.8.100

[root@CentOS7 ~]# brctl show 
bridge name bridge id       STP enabled interfaces
[root@CentOS7 ~]# nmcli con add con-name br0 type bridge ifname br0
Connection 'br0' (77a81012-0760-441a-a90a-8f4b357c5dfb) successfully added.
[root@CentOS7 ~]# nmcli con modify br0 ipv4.addresses 192.168.8.100/24 ipv4.method m
anual 

2)添加eth0、eth1设备到网桥br0

[root@CentOS7 ~]# nmcli con add con-name br0-port0 type bridge-slave ifname eth0 master br0
Connection 'br0-port0' (60961b5d-312c-49dd-b9ff-287f8236436b) successfully added.
[root@CentOS7 ~]# nmcli con add con-name br0-port1 type bridge-slave ifname eth1 master br0
Connection 'br0-port1' (e4b436f2-8bc5-4696-ad6d-bdcb3ec40a0f) successfully added.

3)启动网桥并且查看信息

[root@CentOS7 ~]# nmcli con up br0
Connection successfully activated (master waiting for slaves) (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/32

[root@CentOS7 ~]# nmcli device show br0
GENERAL.DEVICE:                         br0
GENERAL.TYPE:                           bridge
GENERAL.HWADDR:                         E6:CF:41:C0:93:74
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     br0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/32
IP4.ADDRESS[1]:                         192.168.8.100/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 192.168.8.0/24, nh = 0.0.0.0, mt = 425
IP6.GATEWAY:                            --

4)查看其生成的配置文件

[root@CentOS7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0
[root@CentOS7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0-port0
[root@CentOS7 ~]# cat /etc/sysconfig/network-scripts/ifcfg-br0-port1

通过brctl

该工具需要安装bridge-utils包

[root@CentOS7 ~]# rpm -qf `which brctl`
bridge-utils-1.5-9.el7.x86_64
[root@CentOS7 ~]# yum -y install bridge-utils

1)新建一个名为br0的网桥

[root@CentOS7 ~]# brctl addbr br0

2)添加eth0、eth1设备到br0网桥

[root@CentOS7 ~]# brctl addif br0 eth0
[root@CentOS7 ~]# brctl addif br0 eth1

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

[root@CentOS7 network-scripts]# brctl show
bridge name bridge id       STP enabled interfaces
br0     8000.000c29082a73   no          eth0
                                        eth1

4)启动网桥

[root@CentOS7 network-scripts]# ip link set up dev br0

5)删除网桥,需要先关闭它

[root@CentOS7 network-scripts]# ip link set dev br0 down
[root@CentOS7 network-scripts]# brctl delbr br0
[root@CentOS7 network-scripts]# brctl show
bridge name bridge id       STP enabled interfaces
上一篇:Open vSwitch的GRE隧道实验网络


下一篇:C语言程序设计(第4版)苏小红 课后程序参考6.14