第 3 层交换机路由与棒上路由器

网络工程 路由 转变 防火墙 交换 第3层
2021-07-22 00:48:09

核心:戴尔 N4032 (6.3.0.18) 访问:戴尔 N2048 (6.3.1.13)

我们正在建立一个服务式办公室,为多个企业提供服务。每个“客户”自然会在自己的 VLAN 上,每个 VLAN 都需要访问 Internet 和其他一些 VLAN。

将有一些开放的 VLAN,例如“公共打印”VLAN 等等。还有可能所有其他 VLAN 都需要访问的“服务器”VLAN(或者有些可能不需要,即过滤)

我们有核心 L3 交换机、20 台 L2 接入交换机和两个 HA 防火墙。

问题是我们是在 L3 交换机本身上还是通过防火墙为 VLAN 进行路由。

我的想法 - 如果我们通过防火墙(即棒上的路由器)进行路由,则所有 VLAN 间流量都将不得不通过我们的防火墙设备,这自然会增加其整体吞吐量(尤其是启用 DPI 的情况下) . 优点是,以这种方式在 VLAN 之间配置防火墙要容易得多。

如果我们通过 L3 交换机进行路由,我们将受益于 WAN 防火墙的全部吞吐量(这将是 1Gbps 连接),但是必须在 2 个核心交换机上使用“基于策略的路由”,这通常是疼痛管理。

在这种情况下有最佳实践吗?我应该考虑什么才能做出决定?

更新

在交换机上使用 ACL 的问题如下。

  • 最多有 100 个 ACL
  • 我们将拥有需要访问 Internet、VOIP VLAN、服务器 VLAN 和打印 VLAN 的“客户 VLAN”。
  • 但是,他们不应访问其他“客户 VLAN”。

问题是所有“客户”都在一个 /16 之内 - 即

[Parent subnet being 10.100.0.0/16]
Customer 1 - 10.100.0.0/24
Customer 2 - 10.100.1.0/24
Customer 3 - 10.100.2.0/24

我需要在 VLAN 上应用 ACL,以便当流量到达该 VLAN 时,它会被阻止访问其他客户 VLAN。

目前我有这样的事情:

1000 deny 10.100.0.0 0.0.255.255 192.168.50.0 0.255.255.255 
1010 deny 10.100.0.0 0.0.255.255 192.168.60.0 0.255.255.255  
1020 permit any any 

然后将其应用于所有客户 VLAN 接口。这解决了阻止访问服务器 VLAN 和其他专用 VLAN 的问题,但是,这并不能阻止这些 VLAN 随后访问其他客户 VLAN(在 10.100.0.0/16 内)。

问题是我们最终可能拥有 50 多个客户,这意味着 ACL 的数量是难以想象的(假设每个 ACL 只能有 10 个条目,并且每个 ACL 需要为每个其他客户提供一个 ACE)。这几乎立即达到了交换机支持的最大 ACL 数。

在这个阶段,如果不使用我们的防火墙作为“棒上的路由器”,我就看不到另一种方法。任何意见是极大的赞赏。

更新 #2

奇怪的是,我今天尝试在客户 VLAN 上使用 ACL 如下(在接口上应用“IN”)

1000 deny 10.100.0.0 0.0.255.255 192.168.50.0 0.255.255.255 
1010 deny 10.100.0.0 0.0.255.255 192.168.60.0 0.255.255.255 
1015 deny 10.100.0.0 0.0.255.255 10.100.0.0 0.0.255.255 
1020 permit any any 

更新 #3

应用下面建议的 ACL 时 - 它会阻止同一 VLAN 上的设备之间的访问。ACL 是 L3:

ip access-list Block_Customers
 1000 deny ip any 10.100.0.0 0.0.255.255
 1020 permit any any
!

但是,此 VLAN 上的两个设备(IP 可以相互通信,即 10.100.1.0/24)不能再相互 ping 通。如果我删除了 ACL,它们就可以再次互相 ping 通。

这是错误的,我在一个 VLAN 上的流量是 L2,为什么要应用这个 L3 ACL?

更新 #4

如果我按照建议应用 ACL 并且...

  • 不同交换机上同一 VLAN 上的两台设备,它们无法相互 ping 通(没有 ACL,它们可以 ping 通,因此中继线必须正常工作)。他们可以ping Internet。

  • 同一VLAN上的两台设备,在同一台交换机上,可以互相ping通,但是不能ping通那个VLAN上核心交换机上的SVI IP地址。然而,他们可以 ping 互联网,因此流量可以到达该 IP。

4个回答

我的建议是保持简单。您似乎试图为可以简化的场景添加更多复杂性。到目前为止,您正在做什么,如果我错了,请纠正我:

  • 使用VLAN隔离客户。
  • 通过在 VLAN 之间启用路由来消除这种隔离。
  • 根据您的可用资源询问隔离它们的最佳方法是什么。

我的观点是默认情况下不在 VLAN 之间路由流量。

建议的解决方案:

  • 在 L3 核心上使用 VRF:每个 VLAN 一个 VRF。通过这种方式,您可以保持隔离,但提供对公共资源的访问。您甚至可能需要考虑在 VLAN 之间进行 NAT 以启用它们之间的(受控)通信。为什么是NAT?因为您可能还想在所有客户的 VLAN 上使用相同的 IP 寻址空间 - 使您的新部署更容易(它们是可重复的、标准化的)
  • 代替 VRF,每个 VLAN 有一个物理路由器并重复上述操作。

L3 甚至一些 L2 服务(例如 DHCP)不仅仅是直接管理任何给定交换机的痛苦;他们通常非常笨拙。

除了非常小的实现之外,我不建议直接管理绝大多数开关。相反,您可能会考虑通过 SDN 解决方案(例如 OpenDaylight(还有许多其他解决方案 - 这只是一个示例))将它们的接口抽象化。SDN 系统将使用“驱动程序”将您的标准和友好配置呈现为给定交换机能够理解的配置。这可以极大地帮助您以安全高效的方式标准化控制平面。

除此之外,像 SaltStack 或 Puppet 这样的 CM 平台具有可能适合您的开关支持。这不会像 SDN 平台那样为您提供完整的体验,但这是朝着正确方向迈出的一步。

但是,应避免使用棒状路由器。小叠穿没问题,但你的对那双鞋来说太大了。

看来您正在使用某种类型的 Cisco 第 3 层交换机。拒绝从一个网络到包含在超网中的所有其他网络的流量非常容易。如果所有客户网络都在 中10.100.0.0/16,您可以使用一个 ACL 来阻止一个客户访问其他客户的网络。只需将其入站应用到第 3 层接口 (SVI) 上的第 3 层交换机。例如:

ip access-list extended Block_Customers
 deny ip any 10.100.0.0 0.0.255.255
 permit any any
!
interface Vlan10
 ip address 10.100.10.1 255.255.255.0
 ip access-group Block_Customers in
!
interface Vlan11
 ip address 10.100.11.1 255.255.255.0
 ip access-group Block_Customers in
!
interface Vlan12
 ip address 10.100.12.1 255.255.255.0
 ip access-group Block_Customers in
!
interface Vlan13
 ip address 10.100.13.1 255.255.255.0
 ip access-group Block_Customers in
!

等等。

这将防止任何以10.100.0.0/16网络为目的地的流量从客户网络进入交换机的路由器(第 3 层,而不是第 2 层)部分。这仅影响第 3 层,并且绝对不会影响网络中的任何流量,即使网络跨越多个交换机(顺便说一句,这是一种不好的做法)。

我的建议是在核心交换机中为每个 Vlan 配置交换机虚拟接口(SVI)。并使用命令“IP 路由”启用 Vlan 间路由 启用 Vlan 间路由后,所有 vlan 将相互通信,现在相应地配置访问列表以根据您的业务需求限制 Vlan 之间的流量。进一步将接入交换机连接到核心交换机并根据需要配置中继端口或接入端口。

在 coreswitch 中配置指向防火墙 Ingress interface 的默认路由。再次从防火墙配置默认路由指向互联网流量路由的 ISP 网关。.

现在防火墙用于控制和监控入站和出站流量。