Linux Bridge(网桥)是用纯软件实现的虚拟交换机,有着和物理交换机相同的功能,例如二层交换,MAC地址学习等。因此我们可以把tun/tap,veth pair等设备绑定到网桥上,就像是把设备连接到物理交换机上一样。此外它和veth pair、tun/tap一样,也是一种虚拟网络设备,具有虚拟设备的所有特性,例如配置IP,MAC地址等。Linux Bridge通常是搭配KVM、docker等虚拟化技术一起使用的,用于构建虚拟网络,因为此教程不涉及虚拟化技术。以下操作可以临时创建网桥,系统重启所有的配置则会消失,需要修改配置文件,才能永久保存网桥配置。
1、安装bridge-utils工具
centos系统安装:yum install -y bridge-utils
ubuntu系统安装:apt-get install -y bridge-utils
2、 创建Bridge
[root@kvm329 ~]# brctl addbr br0
[root@kvm329 ~]# ip link set br0 up
网络拓扑如下:
注:新建的bridge是一个独立的虚拟网络设备,现阶段只有一个端口连着网络协议栈(TCP/IP Stack),此时的bridge没有实际功能。
3、 为Bridge配置IP地址
[root@kvm329 ~]# ip addr add 192.168.3.101/24 dev br0 #给br0配置IP
4、将物理网卡接口设备挂靠Bridge
[root@kvm329 ~]# brctl addif br0 eth0
[root@kvm329 ~]# ip addr del 192.168.3.21/24 dev eth0 #删除eth0配置IP及为eth0生成默认的路由
[root@kvm329 ~]# route -nne #查看路由规则
[root@kvm329 ~]# ip route add default via 192.168.3.1 dev br0 #添加新默认路由
[root@kvm329 ~]# route -nne #查看路由规则
注:物理网卡设备接口挂靠到Bridge之后,物理网卡设备的IP地址就会无效。避免影响协议栈的路由选择,如果不指定网卡的话进行ping的话,协议栈就有可能会优先将数据包转发给eth0而不是转发给br0。