当您使用IGPS时,您倾向于认为全面地路由。这是因为IGPS旨在在一个管理权限下运行,因此假设路由域中的所有对等体都可以信任。
另一方面,BGP旨在在不同管理域的路由器之间运行,因此在不受信任的对等体之间进行。结果,BGP要求您对路由不同。
首先,与您考虑整个路由域的IGP不同,必须单独考虑每个外部BGP(EBGP)会话。这意味着安全性,前缀过滤和路由策略必须单独考虑每个外部对等体。
其次,对于每个EBGP会话,您可以单独考虑传入和传出路由广告。可能是您需要BGP广告前缀,但不需要接收任何BGP路由。或者您可能需要从BGP接收路线,但不需要宣传任何方式。或者您可能需要BGP来发出传入和传出广告。
所以第一次考虑是:你还需要BGP吗?在大多数情况下,如果您可以向所有四个问题回答“是”,则只需需要BGP:
(1)您是否连接到另一个路由域?
(2)您是否在单独的管理机构下连接到域名?
(3)您的域名多读吗?
(4)是否需要将多个传出路线的选择所需的路由策略到同一目的地或影响传入流量?
让我们首先考虑传入的路由:您是多读,您需要比在边缘配置的简单静态和默认路由中获得更多精度,并将其重新分发到您的IGP中。(并记住,静态路由和BGP是您唯一的明智选项,用于超出边缘。正如我在A中所说的那样以前的帖子从来没有在行政控制之外使用路由器运行一个IGP。)或者,您正在接受这么多的不同前缀,创建前缀列表以接受您期望的前缀并拒绝其他所有内容是不切实际的 - 如果您可以写入前缀列表中可接受的前缀,您可以将它们写为静态路由并完全避免BGP。
当您必须运行EBGP时,您需要像老鼠一样小心地接受来自不受信任的对等体的广告。恶意威胁确实存在,但您面临的最大风险是来自其他域的某人提交了一个配置错误,该错误向您的域发送了无意的、不需要的、可能具有破坏性的信息。
您的第一行防御是一个波通过滤器。Bogons是广泛理解的前缀在单个领域之外的虚伪性:RFC1918地址(10.0.0.0 - 10.255.255.255,172.16.0.0 - 172.31.255.255和192.168.0.0 - 192.168.255.255),环回地址(127.0。0.0 - 127.255.255.255),以及多播,e和广播地址(224.0.0.0 - 255.255.255.255)。
但是我在这里列出的波隆是IANA为特殊用途保留的最常见的前缀,并称为MARTIANS。有缺乏众所周知的火星人(可以找到完整的清单这里),还有一些boons根本不是火星人,而是目前IANA没有分配给任何RIR的地址块。因此,例如,看起来无辜的74.124.176.0/20就是一个垃圾。
一个良好的Bogon过滤器,用否认波动列表的前缀列表构建,很可能是50-100的术语,长或更长。可以从中获得多种格式的Bogon列表的最佳来源之一,可从完成了;还有一个像这样的网站Cymru队方便地将列表转换为iOS和Junos的可管理配置。
但是,Bogon列表定期更改,因此您应该为您的运营团队中的某人准备至少每周更新您的Bogon过滤器。脚本在这里是一个很大的帮助。
您可以使用进一步的措施来加强这一防线:
- 使用命令或过滤器从所有传入NLRI的AS_PAPE中删除所有私有的(64512 - 65535),以防您的识别邻居正在使用一个并忘记将其过滤出他的传出路线。
- 使用AS_Path过滤器确保外部对等体的AS编号始终是AS_PATH列表中的第一个数字。这为您提供了额外的保障措施,对欺骗前缀进入您的域名。
- 使用前缀限制过滤器它接受一些前缀,这些前缀只比您从外部对等体所期望的大一点点。这可以保护您免于错误配置,因为错误配置可能会向您的网络发送大量不需要的前缀。
接下来让我们考虑传出路线。有些ISP可能会拒绝接受传入的EBGP广告而无需良好的理由,以防止自己引用的原因。对于大多数存根(即非转换),具有提供者或提供者的自主系统将静态路由配置为您的前缀,与通过EBGP向他们广告的前缀一样好。如果您需要偶尔添加另一个前缀,则您的服务提供商的呼叫或电子邮件通常不比添加必要的BGP和过滤配置来宣传它。并验证您的ISP正确广告您的静态配置的前缀可以通过检查几个公开访问的路线服务器。
但是,如果您为外部BGP对等体进行广告前缀,请成为一个好邻居,并设置策略,以确保您只宣传您打算的内容。首先,正如您从不将BGP路由重新分配到您的IGP中,切勿将IGP路由重新分配到BGP中。静态配置要宣传的前缀,并将那些重新分发进入BGP的前缀,或使用(在iOS中)BGP网络命令指定要宣传的前缀。在任何一种情况下,请记住将这些指向空界面,以便在到达路由器时,您的有效IGP路由拾取传入数据包,当IGP路由不可用时,数据包被丢弃。
接下来,如果要运行存根域,请添加一个前缀过滤器,该筛选器仅允许您要宣传的前缀,并拒绝其他一切。在大多数情况下,这足以保护自己和您的外部同行误认为是错误的非预期前缀的广告。(多宿主存根网络的一个大危险之一无意中导致您的域通过广告不正确的前缀来查看 - 并可能使用 - 作为传输域。)
对于提供过境服务的ISP和其他域,边缘过滤更具挑战性。根据定义,传输提供者正在接受来自某些对等体的前缀,并将这些前缀视为其他对等体的前缀。对于大多数提供商接受了哪些前缀,并且宣传的前缀,在各种外部连接中均差异。
此类域从一个或多个上游提供商处采取完整的互联网路线,以及来自其他提供商的客户路线,其中与他们有凝视协议,加上自己的客户的路线以及自己的内部路线。除了这些方面,一些客户前缀是在上游的上游和凝固伙伴,其他客户前缀是提供商聚合的一部分,因此不会宣传。该提供商向某些客户提供完整的Internet路线,部分路线(通常只有提供者的其他客户的前缀,也许是其柜台伙伴的客户)到其他客户,而且还没有其他客户。
如果您正在运行传输域,您当然不希望为每个外部对等体创建单个策略和过滤配置。那么你如何控制这样一个网络的复杂性?
社区!
BGP Community属性是您用于缩放复杂的BGP路由策略的最强大的工具之一。您将一组社区定义为可以像您想要的一般或具体的含义,然后将其中一个或多个定义的社区分配给接收时的前缀。然后,而不是为您在社区过滤的各个前缀创建传出过滤器。
因此,对于给定的外部对等体,您可能有一个允许公开互联网路线的策略,所有凝固伙伴的所有前缀以及所有客户前缀;对于另一个外部对等体,您可能允许来自您自己客户的已定义子集的所有前缀,而且没有其他的。
除了基于社区的传出过滤器之外,您还应使用与传出前缀上的传入前缀创建的相同的Bogon过滤器。正如Bogon过滤器保护您免受相邻域中的配置错误,它可以保护您的邻近域免受您可能所做的配置错误。
运行BGP时,请记住,不仅要保护自己的网络是重要的,这也很重要,保护邻居的网络也很重要。