好的,我认为有两个变体可以研究这个问题,它划分的问题部分是当您提到 OSPF 应该用于内部路由时。如果您想通过 ISP 到达其他目的地并在站点之间使用 OSPF,则 ISP 路由器需要成为您的 OSPF 拓扑的一部分,因此它们将通过整个拓扑使用 OSPF 传播所有网络。这张图显示了它。

请注意橙色区域也在办公室之间的链接上,因此它们是 OSPF 的一部分。
这里的问题是,这在现实生活中是不可能的。您无法管理 ISP 网络,因此这里的解决方案是在每个办公室之间创建GRE 隧道。这样,OSPF 将使用 Tunnel 接口,从网络的逻辑部分看,路由器 Office A、Office B、Office C 是直接相连的,并且可以通过这些 Tunnel 接口在 OSPF 中建立邻居。
对于 PAT,我猜您还会为每个办公室指定一个 IPv4 地址,而不是每个城市。这更有意义,这意味着您将在每个 Office 路由器和 ISP 网络上进行 PAT 使用公共地址在城市之间进行连接。您还应该在ISP网络中使用一些动态路由/静态路由,以确保每个ISP路由器都可以到达办公室路由器的公共地址(如果您使用GRE隧道的方式。让ISP路由器成为OSPF拓扑的一部分,则失去了PAT的目的,因为他们可以直接看到内部网络)。
在一个办公室内,可以通过 VLAN 间路由(在 L3 交换机或具有子接口的单臂路由器解决方案上)访问不同 VLAN 中的用户。如果他们想直接到达其他站点并且您正在使用 PAT,则站点之间需要有 GRE 隧道,允许直接 L3 连接。我猜您不想在 PAT 中为每个用户创建规则。
所以总结一下,我认为这里最好的解决方案是在站点之间做GRE隧道,在这些接口上做OSPF来管理内部网络。对于外部网络 (ISP),再次使用 OSPF 或 EIGRP,任何适合您的方法。