pfSense book之网桥

目录

  • 创建一个网桥
  • 网桥高级配置
  • 网桥和接口
  • 网桥和防火墙
  • 桥接两个内部网络
  • 网桥互操作性

通常pfSense上的每个接口都是具有唯一IP子网的广播域。在某些情况下,将多个接口组合到单个广播域也许必要的,其中防火墙上的两个端口像它们在同一个交换机上一样,除了接口之间的流量可以通过防火墙规则进行控制以外。通常情况下,这样做是为了让多个接口充当使用相同IP子网的同一个平面网络,并使客户端共享广播和多播通信。

某些应用程序和设备依赖于广播功能,这些在家庭环境中比企业环境中更常见。

对于在防火墙上运行的服务,桥接可能会对应用的服务产生影响。如限制器、入网门户和透明代理等功能需要特殊的配置和处理才能在桥接网络上工作。具体而言,必须分配网桥本身,并且具有IP地址的网桥上唯一的接口必须是分配的网桥。此外,为了使这些功能起作用,网桥上的IP地址必须是客户端用作其网关的地址。这些问题在后面有更深入的讨论。

网桥的类型

有两种不同类型的网桥:内部网桥和内部/外部网桥。 内部网桥连接两个本地接口,例如两个LAN接口或一个LAN接口和一个无线接口。 内部/外部网桥将局域网连接到广域网,一般称之为“透明防火墙”。

内部网桥

使用内部网桥时,防火墙上的端口会进行链接,类似于交换机端口,但能够过滤端口或网桥上的流量,但连接性能远低于交换机。 防火墙本身对本地连接的客户端仍然可见,并充当其网关,也可能是DNS和DHCP服务器。 桥接网段上的客户一般不会感觉到它们之间有防火墙。

管理员通常会选择这种类型的配置,以隔离和控制网络的一部分(如无线网段),或者使用防火墙上的其他端口替代安装交换机。 虽然不推荐,但此类网桥也可用于通过某些类型的***连接加入两个远程网络。

内部/外部网桥

内部/外部网桥,也称为“透明防火墙”,用于在两个网段之间插入防火墙而不更改其他设备。 这通常用于将WAN连接到内部网络,以便WAN子网可以在防火墙“内部”使用,或者在本地网段之间作为内联过滤器使用。 另一个常见用途是防火墙后面的设备通过DHCP从WAN上的上游服务器获取IP地址。

在透明的防火墙配置中,防火墙不直接接收通信或作为网关,只是在通过防火墙时检查通信。

注意:该网桥内部的设备必须继续使用上游网关作为自己的网关。 不要将防火墙上的任何IP地址设置为透明网桥上设备的网关。

网桥和2层环路

在桥接时,必须小心避免2层环路,或者必须在处理环路的位置对交换机进行配置。2层环路是直接或间接地将交换机连接回自己。如果运行pfSense的防火墙将接口桥接在一起,并且将两个接口插入同一VLAN中的相同交换机,则会出现2层环路。在两台交换机之间连接两根跳线也是这样。

管理型交换机采用生成树协议(STP)来处理这种情况,因为通常希望在交换机之间建立多条链路,并且不应将某个网络端口插入另一个网络端口而导致网络完全崩溃。在所有管理型交换机上,缺省情况下都不启用STP,对于非托管交换机几乎不可用。如果没有STP,第2层环路的结果是网络上的帧将无限循环并且网络将完全停止运行,直到删除环路。检查交换机配置以确保功能已启用并正确配置。

pfSense使桥接口上的STP能够帮助处理环路,但仍然可能导致意外情况。例如,其中一个网桥端口会自行关闭以停止循环,这可能会导致流量意外停止流动或完全绕过防火墙。

创建一个网桥

在pfSense中,在网络接口>接口管理的网桥选项卡上添加和删除网桥。 使用网桥,可以将任何数量的端口绑定在一起。 在GUI中创建的每个网桥还将在操作系统中创建一个新的网桥接口,名为bridgeX,其中X从0开始,并为每个新网桥增加一个。 这些接口可以像大多数其他接口一样分配和使用。

要创建网桥:

  • 导航到网络接口>接口管理,网桥选项卡。
  • 点击添加创建一个网桥。
  • 从成员接口中至少选择一个接口。 使用Ctrl键单击,根据需要选择多个。
  • 添加描述说明。
  • 单击显示高级选项以根据需要查看其余配置参数。 对于大多数情况下他们是不必要的。
  • 点击保存完成。

注意:网桥可以由单个成员接口组成,这样就可以帮助迁移到具有指定网桥的配置,或者用于创建简单的镜像端口。

网桥高级配置

网桥及其成员有许多先进的选择。其中一些设置非常复杂,因此在本节中分别讨论它们。

快速生成树选项

生成树协议可帮助交换机和设备确定是否存在环路并根据需要将其切断,以防止环路影响网络。 有很多选项可以控制生成树的行为方式,从而可以对特定的端口进行特定的假设,或者确保某些网桥在环路或冗余链路的情况下获得优先级。 有关STP的更多信息可以在FreeBSD的ifconfig(8)手册页和维基百科上找到。

协议

协议设置控制网桥是使用IEEE 802.1D生成树协议(STP)还是IEEE 802.1w快速生成树协议(RSTP)。 RSTP是一种较新的协议,顾名思义它的运行速度比STP快得多,但是向后兼容。 较新的IEEE 802.1D-2004标准基于RSTP。只有在使用与RSTP不兼容的较旧交换机时才选择STP。

STP 接口

STP接口列表反映了启用STP的网桥成员。按住Ctrl单击来选择与STP一起使用的桥接成员。

有效时间

设置生成树协议配置的有效时间。默认值是20秒。最小值是6秒,最大值是40秒。

转发时间

转发时间选项设置在启用生成树时接口开始转发数据包之前必须经过的时间。默认值是15秒。最小值是4秒,最大值是30秒。

注意:直接连接的客户端会注意到更长的延迟,因为它们无法传输流量,甚至无法通过DHCP获取IP地址,直到其接口进入转发模式。

握手时间

握手时间选项设置生成树协议配置消息广播之间的时间。 只有在传统STP模式下运行时,才能更改握手时间。 默认值是2秒。 最小值是1秒,最大值是2秒。

优先级

生成树的网桥优先级控制在检测到循环时是否首先选择该网桥进行阻塞。 默认值为32768.最小值为0,最大值为61440.值必须是4096的倍数。优先级较低,低于32768的值表示可以成为根网桥。

保持计数

生成树的发送保持计数是限速之前发送的数据包数。 默认值是6,最小值是1,最大值是10。

端口优先级

优先级字段为每个桥接成员接口设置生成树优先级。在决定阻止哪些端口以及哪些端口正在转发时,会优先考虑优先级较低的设备。默认优先级是128,并且必须介于0和240之间。

路径成本

路径成本字段为每个桥接成员设置生成树路径成本。 默认值是根据链接速度计算的。 要将先前选择的路径成本更改回自动,请将成本设置为0。最小值为1,最大值为200000000。在决定要阻止哪些端口以及哪些端口正在转发时,优先选择成本较低的路径。

缓存设置

缓存大小设置桥地址高速缓存的最大值,类似于交换机上的MAC或CAM表。 默认值是100个条目。 如果有大量设备通过网桥进行通信,可以将这个值设置的高一些。

高速缓存到期时间以秒为单位控制地址高速缓存条目的超时。 如果设置为0,则地址缓存条目不会过期。 默认值为240秒(四分钟)。

镜像端口

选择一个接口作为桥接器上的镜像端口会将桥接网络收到的每个帧的副本发送到选定的接口。 这对于连接到网桥镜像端口的另一台主机上使用诸如Snort、cpdump等被动地侦听桥接网络非常有用。所选镜像端口不能是网桥上的成员。

边缘端口/自动边缘端口

如果将接口设置为边缘端口,则始终假定其连接到终端设备,而不是连接到交换机;它假定端口永远不会创建第2层循环。 只有在端口永远不会连接到另一台交换机时,才能在端口上进行设置。 默认情况下,端口会自动检测边缘状态,并且可以在自动边缘端口下选择它们以禁用自动边缘检测行为。

PTP端口/自动PTP端口

如果将接口设置为PTP端口,则始终假定其连接到交换机,而不是连接到最终用户设备;它假定该端口可能会创建一个第2层循环。 只能在连接到其他启用了RSTP的交换机的端口上启用。 默认情况下,端口会自动检测PTP状态,并且可以在自动PTP端口下选择它们以禁用自动PTP检测行为。

粘滞端口

在粘滞端口中选择的接口将其动态学习地址缓存,就好像它们一旦进入缓存就是静态的。 即使它们出现在不同的接口上,粘滞条目也不会从地址缓存中删除。 可以使用这种安全措施来确保设备不能随意在端口之间移动。

专用端口

标记为专用端口的接口不会与标记为专用端口的任何其他端口进行通信。 如果它们连接到以这种方式标记的独立网桥端口,则可以用它来隔离最终用户或网络的各个部分。 它类似于无线接入点上的“专用VLAN”或客户端隔离。

网桥和接口

桥接接口(例如,bridge0)本身可以被分配为接口。这允许桥接器作为普通接口,并且可以像其他普通接口一样设置IP地址。

一般来说,最好在网桥上配置IP。主要原因是由于网桥取决于分配IP地址的接口的状态。如果在成员接口上配置了网桥的IP地址,并且该接口已关闭,则整个网桥将关闭,不再传输流量。最常见的情况是无线接口桥接到以太网LAN 网卡。如果拔下LAN 网卡,则除非在桥接接口上配置了IP地址,否则无线将停止工作。另一个原因是,如果限制器必须用于控制流量,那么桥接器上必须有一个IP地址才能正常工作。同样,为了让入网门户或透明代理在内部网桥上运行,IP地址必须在分配的网桥上配置,而不是成员接口。

交换接口的分配

在谈论桥接接口分配的问题之前,必须注意的是,这些更改应该由不涉及桥接的端口进行。 例如,如果将WLAN桥接到LAN,请从WAN或其他OPT端口进行更改。 或者,下载config.xml的备份并手动进行更改。 在从该端口管理防火墙的同时试图对端口进行更改很可能导致无法访问GUI。

简单方法:将设置移至新的接口

最简单的方法是从LAN接口单独删除设置(IP地址,DHCP等),然后在新分配的网桥接口上激活它们。

快速方法:将网桥重新分配为LAN

使用这种方法中,最终将网桥更改为LAN,LAN IP地址、所有以前的防火墙规则、DHCP和其他接口配置都将保留。

  • 分配和配置尚未处理的桥接成员。查看以下步骤以确保即使接口已被分配和配置,接口设置必须正确。
        • 导航到网络接口>接口管理
        • 从可用网络接口列表中选择接口
        • 点击添加
        • 导航到新的接口配置页面,例如 接口> OPT2
        • 选中启用
        • 输入一个描述,如WiredLAN2
        • 将IPv4配置类型和IPv6配置类型都设置为无
        • 如果选中,则取消选中阻止专用网络和阻止bogon网络
        • 点击保存
        • 点击应用更改
        • 重复添加其他未分配的网桥成员
  • 创建一个新的网桥
        • 导航到网络接口>接口管理,网桥选项卡
        • 点击添加创建一个新网桥
        • 输入一个描述,例如LAN Bridge
        • 选择除成员接口列表中的LAN接口以外的所有新桥接成员
        • 点击保存
  • 更改网桥过滤系统以禁用成员接口过滤
        • 导航到系统>高级设置,系统可调参数选项卡
        • 找到net.link.bridge.pfil_member条目,如果不存在,创建一个新条目
        • 点击右侧编辑图标,编辑现有的条目
        • 在值字段中输入0
        • 单击保存
  • 导航到网络接口>接口管理
  • 将LAN的分配更改为bridge0
  • 点击保存
  • 如前所述分配和配置旧的LAN接口,将其IP配置类型设置为None并将其命名为WiredLAN
  • 编辑网桥并选择新分配的WiredLAN作为网桥成员
  • 更改网桥过滤系统以启用网桥接口过滤
        • 使用前面描述的过程,但是将net.link.bridge.pfil_bridge设置为1

现在,以前的LAN接口以及新的桥接成员都位于公共的2层上,桥接成员与其他配置一起被分配为LAN。

最难方法:手动编辑config.xml

对于那些熟悉XML配置格式的人来说,手动编辑config.xml非常快速。 这种方法很容易出错,所以一定要备份,以免发生错误无法恢复。

手动编辑config.xml来完成此任务时,请执行以下操作:

  • 分配其他网桥成员并将其IP配置类型设置为无
  • 创建网桥,包括LAN和LAN2以及其他桥接成员
  • 分配网桥(例如作为OPT2)并启用它,同样IP配置类型为None
  • 从系统诊断>备份/恢复下载config.xml的备份
  • 在理解UNIX行尾的文本编辑器中打开config.xml
  • 将LAN分配更改为bridge0
  • 将以前的LAN分配更改为原来的桥接(例如OPT2)
  • 编辑网桥定义来引用OPT2而不是LAN
  • 保存更改
  • 从系统诊断>备份/恢复还原编辑的config.xml

防火墙将以所需的设置重启。 监视控制台以确保正确应用设置,并且在引导过程中不会遇到任何错误。

分配网桥MAC地址和Windows系统

网桥的MAC地址是在创建网桥时随机确定的,无论是在引导时还是在创建新网桥时。 这意味着在每次重新启动时,MAC地址都可能更改。 在大多数情况下,这并不重要,但Windows Vista 7、8和10使用网关的MAC地址来确定它们是否位于特定网络上。 如果MAC发生变化,网络身份将会改变,其公开,私密等状态可能需要更正。 要解决此问题,请在分配的网桥接口上输入MAC地址来欺骗它。 然后客户端将始终看到和网关IP地址相同的MAC。

网桥和防火墙

使用桥接接口过滤的功能与路由接口类似,但有一些配置选项可以精确地改变过滤行为。 默认情况下,防火墙规则以入站方式应用于网桥的每个成员接口上,就像任何其他路由接口一样。

可以决定过滤器是发生在网桥成员接口还是网桥接口本身。 这可以通过系统>高级选项,系统可调参数选项卡中的两个值来控制,如下图所示。 net.link.bridge.pfil_member可调参数控制是否在桥接成员接口上遵守这些规则。 默认情况下是(1)。 net.link.bridge.pfil_bridge可调参数控制是否在桥接口自身遵守这些规则。 默认情况下是关闭(0)。这两个当中至少有一个必须设置为1。

在桥接接口本身进行过滤时,流量将从任何成员接口进入规则。 与其他任何接口规则一样,这些规则仍被视为“入站”,但它们更像接口组,因为相同的规则适用于每个成员接口。

防火墙规则

一个网桥接口会设置一个IP地址,其他的则没有。 对于这些接口,如OPT1地址和OPT1网络在防火墙上未定义,因为该接口没有地址,因此也没有子网。

如果在网桥成员上执行过滤,在制定规则时应明确列出子网。

桥接两个内部网络

在桥接两个内部网络时,应注意对防火墙上某些服务的影响。

注意:由于802.11功能的方式,桥接无线接口时还有其他要求和限制。

DHCP和内部网桥

当将一个内部网络连接到另一个时,需要完成两件事情。 首先,确保DHCP只在包含IP地址的接口上运行,而不在没有地址的网桥成员上运行。 其次,在成员接口的规则顶部可能需要额外的防火墙规则以允许DHCP通信。

注意:这仅适用于在成员接口上执行筛选,而不是在网桥上执行筛选。

在创建规则允许接口上的通信时,通常将源指定为与OPT1子网类似,以便只允许来自该子网的流量通过该网段。 如果使用DHCP服务,这还不够。 由于客户端还没有IP地址,DHCP请求将作为广播执行。 为了适应这些请求,请使用以下设置在桥接成员接口上创建一个规则:

  • 导航到防火墙 >规则策略,桥接成员选项卡上
  • 单击  在列表顶部添加一个规则
  • 协议: UDP
  • 源地址: 0.0.0.0
  • 源端口: 68
  • 目的网络: 255.255.255.255
  • 目的端口: 67
  • 描述:  Allow DHCP
  • 单击保存并应用更改

如下图所示。

在添加规则后,桥接网段中的客户端将能够收到DHCP守护程序分配的IP地址。

由于DHCPv6与链路本地和多播IPv6地址进行通信,因此DHCPv6的设置有点复杂。 可以参阅下图进行设置。可以通过别名简化为一个或两个包含正确的源网络,目标网络和端口的规则。

桥接互操作性

在某些方面,桥接接口与普通接口不同,因此存在一些与桥接不兼容的功能,以及其他需要进行额外考虑以适应桥接的功能。

入网门户

入网门户与透明桥不兼容,因为它要求接口上的IP被桥接,用于为门户内容提供服务,并且该IP必须是客户端的网关。

当通过pfSense将多个本地接口桥接到所有路由时(例如,LAN1,LAN2,LAN3等),入网门户可以正常工作。如果分配了网桥接口,网桥接口具有IP地址,并且该网桥上的客户端使用该IP地址作为网关,入网门户也可以起作用。

高可用性

目前不推荐使用高可用性(高可用性)进行桥接。虽然有人在过去将这两者结合起来时取得了成功,但必须非常小心地处理2层循环问题,这在HA +桥接场景中是不可避免的。当两个网段被桥接时,它们实际上合并成一个更大的网络。当HA被添加到混合网络中时,这意味着每个相应接口的交换机之间将有两条路径,从而形成一个环路。

管理型交换机可以使用生成树协议(STP)处理此问题,但非管理型交换机无法防止循环。如果不加控制,一个循环会使网络瘫痪,无法进行任何通信。可以在网桥上配置STP,但仍可能会有意想不到的结果。

多WAN

透明桥接的性质在多种用途上与多WAN不兼容。当在WAN和LAN / OPT接口之间使用桥接时,通常pfSense以外的东西将成为桥接接口上主机的默认网关,并且该路由器是唯一可以引导来自这些主机的流量的设备。这并不妨碍将多WAN用于同一防火墙上未桥接的其他接口,它只会影响桥接接口上使用非pfSense作为默认网关的主机。如果将多个内部接口桥接在一起,并且pfSense是桥接接口上主机的默认网关,则可以使用与非桥接接口相同的多WAN。

限制器

为了使限制器能够以桥接方式工作,桥接器本身必须被分配,并且桥接器必须具有IP地址而不是成员接口。

LAN NAT和透明代理

对于局域网上的端口转发,或者使用LAN上的端口转发来捕获流量的透明代理,以便在网桥场景中运行,情况与入网门户相同:它仅适用于LAN网桥,而不适用于WAN / LAN网桥, IP地址必须位于分配的网桥接口上,并且该IP地址必须用作本地客户端的网关。这意味着像Squid这样的插件无法在LAN桥接到WAN的透明防火墙下工作。

此条目发表在pfSense分类目录。将固定链接加入收藏夹。