BGP(多协议边界网关协议)主要用于 OpenLAN 网关之间实现动态路由互通。通过 BGP 协议,不同网关可以自动交换路由信息,实现跨网关的网络互联和路由学习。
多网关动态路由学习:当网络中有多个 OpenLAN 网关时,BGP 可自动发现并学习对端网关的路由信息,无需手动在每台网关上静态添加大量路由。
大型或复杂网络互联:适用于拥有多个站点、分支机构或跨地域的网络环境,实现网关之间的路由自动同步和优化。
路由策略灵活控制:支持针对特定网段进行通告和接收,可精细控制哪些路由在网关之间传递。
客户端跨网关访问:客户端拨入某一网关后,可通过 BGP 动态路由访问其他网关上的内网资源。
开启 BGP 在网关节点界面找到 BGP 功能模块,开启 BGP 服务。开启时需要填写以下信息:

本地 AS 号(纯数字,组网内所有网关的 AS 号不可重复)
路由器 ID(选择网关上的一个 IP 地址,可通过网关命令 ip r 查看所有路由地址,确保该 ID 在组网内可达)
两端网关均开启 BGP 后,需要在每一端添加对端网关作为邻居。
邻居地址:填写对端网关的路由器 ID
远端 AS 号:填写对端网关的 AS 号
密码(可选):两端需保持一致(可不填)

配置完成后,连接状态应变为“成功”。若未成功,可点击“同步”按钮刷新状态。

可通过命令 openlan network --name bgp ls 在网关容器中查看邻居列表、Local AS 和 Route ID 是否生效。
在拥有目标网段的网关上添加通告路由,使该网段能够被其他网关学习到。
示例:在 14 网关(拥有 192.168.44.0/24 网段)添加通告:
邻居路由器 ID:对端网关的路由器 ID(如 10.10.1.22)
通告网段:192.168.44.0/24 ,点击启用,每个邻居都需要单独添加一次通告路由。

添加接收路由(Receive Route) 在需要访问该网段的网关上添加接收路由,明确允许接收对端的特定前缀。
示例:在 22 网关添加接收:
邻居路由器 ID:对端网关的路由器 ID(如 10.10.1.14)
前缀:192.168.44.0/24 配置完成后,点击启用,在接收端网关执行 ip route 可看到新增的路由条目。


客户端需拨入支持该路由的网关(例如拨入 22网关)访问14网关的192.168.44.0/24网段。
在22网关所在的虚拟网络中添加路由:
目标网段:192.168.44.0/24(或使用默认路由 0.0.0.0/0)
下一跳:local(本地网关)
虚拟网络需开启 OpenVPN 子网(例如 100.255.25.0/24)
如果14网段中没有客户端网段,22网关需要添加客户端网段的通告路由,14网关添加接收路由,接收22网关的客户端网段
SNAT 配置 为确保跨网关访问正常,两端网关的虚拟网络均需开启 SNAT 功能,实现地址转换。
使用默认路由 0.0.0.0/0 时,客户端所有流量都会走 VPN,可能导致本地网络访问中断,请谨慎使用。

关闭 BGP 前,需先将所有 BGP 邻居的发送/接收路由进行撤销,避免路由残留。
撤销邻居并重新启用后,需要手动重启本端 BGP 路由才能生效。
确保组网内所有网关的路由器 ID 可以通过现有路由互相可达。
BGP 配置完成后,网关会自动与邻居建立会话并交换路由信息。通过 openlan network --name bgp ls 可查看通告路由(advertis)和接收路由(receives)列表。