bridge 的作用
bridge 工作在二层网络 ,根据mac 地址转发数据包。 为 bridge 配置ip地址后,也可工作在三层网络,工作原理类似于三层交换机。
bridge 的特点
bridge 一端连接着内核协议栈,另一端可以连接多个网络设备。
bridge fdb
说明
fdb 也可称为 mac 学习表,转发数据库
作用
它记录了 mac地址 和 端口 的对应关系,用以加快数据包的转发。在brigde 不断的转发过程之中,fdb之中的数据逐渐丰富。
bridge 发夹模式 (hairpin mode)
发夹模式的定义
在默认情况下,网桥设备是不允许 一个数据包 从一个端口进来后,再从这个端口发出去的。但是,它允许你为这个端口开启 Hairpin Mode,从而取消这个限制。 注意: 1: 着重注意 数据包 2: 发夹模式是为 bridge 上的端口设置的,而不是bridge 本身。
发夹模式的应用
如果 docker 关闭 docker-proxy, 那么则需要为 docker0网桥开启 发夹模式,否则一些访问会有问题。
网桥相关的内核参数
/proc/sys/net/bridge/bridge-nf-call-iptables 当开启这个参数时,作为二层网络设备的虚拟网桥,在转发数据包的时候,会调用iptables的 FORWARD 链的规则,以及POSTROUTING的规则。 如果未开启,那么数据包会经过虚拟网桥转发,并不会调用主机的iptables规则。
Linux 与 bridge 相关的命令
- brctl
- bridge
操作
1: 查询 bridge 上连接的网络设备
brctl show
2: 查询 bridge 的 fdb 之中的信息
brctl showmacs 网桥名
3: 查询 bridge 的一个端口是否开启发夹模式
bridge -d link show
4: 为一个bridge 上的一个端口 开启发夹模式
brctl hairpin <bridge> <dev> on
5: 使一个bridge 关闭发夹模式
brctl hairpin <bridge> <dev> off
问题
虚拟网桥工作在二层 和 工作在三层 ,这两个概念之间的区别?
工作在二层,意味着数据包不会经过内核的网络协议栈。 工作在三层,意味着数据包会经过内核的网络协议栈。