Linux 虚拟网络设备 bridge

955 阅读2分钟

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

问题

虚拟网桥工作在二层 和 工作在三层 ,这两个概念之间的区别?

工作在二层,意味着数据包不会经过内核的网络协议栈。 工作在三层,意味着数据包会经过内核的网络协议栈。