路由 - 使用隧道的 BGP 域间路由

网络工程 路由 bgp
2021-07-10 15:45:18

我有一个 ASN 和 IPv4 块,比方说 AS 65001 和 10.0.0.0/24。

ISP AS 65000 有两个数据中心,分别位于亚洲和北美。

我想将 /24 分成两个 /25,以便在亚洲(10.0.0.1/25)和北美(10.0.0.129/25)中使用它。

ISP 不会接受任何小于 /24 的通知,因此我在两个站点上都发布了 /24,并在两个站点之间创建了 GRE 隧道,以建立 iBGP 对等会话。

65001(Asia)                65001(North America)   
  \                               /                 
   +-- 65000 =---gre---= 65000 --+
       (Asia)        (North America)

在 AS65001 中,两个 /25 子网可以相互访问。但是,如果来自北美的某人尝试访问亚洲部分 (10.0.0.1),则流量将无法返回北美。来自亚洲的流量也无法到达北美。

我可以看到来自北美的流量以亚洲为目的地,但亚洲正在尝试使用其默认网关(即 ISP 的亚洲路由器)对其进行响应,因此无法正常工作。

我可以通过添加路由策略使亚洲从北美可达:

ip rule add from 10.0.0.0/24 lookup gre_peer_as_gw
ip route add default via 10.0.0.129 dev gre0 table gre_peer_as_gw

但这显然不是我想要的。亚洲地区的用户将无法通过设置访问任何内容。

这怎么可能?

2个回答

当然,你不能像这样达到你的目标。
两个 NIC 都在不同的子网中,因此您需要在它们之间安装一个路由器,用于在虚拟 NIC 之间路由流量。但这不是它的工作原理。
您通常会在 A 和 B 之间建立一个隧道,例如 openvpn。
隧道的两端通常共享一个子网,例如 10.0.0.0/24。
在该隧道内,您可以在不直接连接的情况下执行 IBGP。
此外你不需要

一种方法是获取完整的 BGP 路由表。这样出站数据包将遵循最短路由返回,更具体的路由将覆盖正常的默认路由。

另一个问题是您只能将一个默认路由插入到 BGP 表中。因此,北美或亚洲将是默认路由,但不能两者兼而有之。