UniFi - 边界网关协议(BGP)
BGP 是一种动态路由协议,可以与其他网关或三层交换机建立邻居关系,并在同一个自治系统(AS)内部(内部 BGP)或与外部自治系统(外部 BGP)之间分发路由信息。在多宿主环境下与 ISP 建立邻居关系,可为进出互联网的流量提供冗余和负载均衡。
要求
需要以下交换机或网关之一:
- 运行 UniFi OS 4.1.13 或更高版本的 EFG、UDM-Pro-Max、UDM-SE、UDM-Pro 或 UDW
- 运行 4.1.8 或更高固件版本的 UXG-Enterprise
我如何使用 BGP?
BGP 是一个功能强大的路由协议,可以用于多种不同的场景。例如:
- 在同一个自治系统内与其他网关或三层交换机建立邻居关系并进行内部路由交换。
- 通过 VPN 交换路由,并将路由再分发到 BGP。
- 在单宿主环境下与您的 ISP 建立邻居关系,并交换路由。
- 在多宿主环境下与多个 ISP 建立邻居关系,交换路由,并通过流量工程影响入站和出站流量的路由方式。
BGP 配置
BGP 通过上传 FRR BGP 格式的配置文本文件来启用。您需要手动创建该文件,并且配置内容会根据不同的部署有所不同。
注意:任何新增的配置行(如 Prefix Lists 或 Route Maps)都必须在退出 router bgp 段后,放置在文件底部。
示例 - 配置 ISP 的 BGP 邻居
以下示例配置了一个到 ISP 的 BGP 邻居,通过 BGP 上行通告您的本地公网,实现您的前缀可被全球路由,并确保入站流量通过 ISP 到达您的网络。
- 初始化 BGP 并分配本地自治系统(AS)号:router bgp
- 设置 router ID,作为该 BGP 实例的唯一标识:bgp router-id
- 向 ISP 通告本地网络(203.0.113.0/24),使其能够全球路由:network
mask - 与 ISP 建立 BGP 会话,指定其 AS 号:neighbor
remote-as - 可选,配置密码认证以保障 BGP 会话安全。此密码需与 ISP 一致:neighbor
password - 可选,为邻居添加本地描述,便于识别:neighbor
description - 可选,引用 Route Map 以接收某些前缀:neighbor
route-map in - 可选,引用 Route Map 以发布某些前缀:neighbor
route-map out - 启动软重配置功能以保存收到的路由,这样修改路由策略时无需重置会话:neighbor
soft-reconfiguration inbound - 如第 7 和 8 步引用了 Route Map,请退出 BGP 段,在文件底部添加相关配置。
- 添加 Route Maps:route-map: <route-map_name> permit
- 在 Route Map 中匹配前缀列表: match ip address prefix-list
- 添加在 Route Map 中匹配的前缀列表: match ip address prefix-list
- 添加 Route Maps:route-map: <route-map_name> permit
router bgp 65000
bgp router-id 198.51.100.1
!
network 203.0.113.0 mask 255.255.255.0
!
neighbor 198.51.100.2 remote-as 65001
neighbor 198.51.100.2 password securesecret1
neighbor 198.51.100.2 description ISP
!
address-family ipv4
neighbor 198.51.100.2 activate
neighbor 198.51.100.2 soft-reconfiguration inbound
neighbor 198.51.100.2 route-map ACCEPT_ROUTES in
neighbor 198.51.100.2 route-map ADVERTISED_ROUTES out
exit-address-family
!
exit
!
route-map ACCEPT_ROUTES permit 10
match ip address prefix-list ACCEPT_ALL
exit
!
route-map ADVERTISED_ROUTES permit 10
match ip address prefix-list ADVERTISE_SPECIFIC
exit
!
ip prefix-list ACCEPT_ALL seq 5 permit any
!
ip prefix-list ADVERTISE_SPECIFIC seq 5 permit 203.0.113.0/24
注意:在本示例下,通往 ISP 的 BGP 还需在防火墙中开放 TCP 179 端口。可以通过创建“外部到网关”区域防火墙策略允许 BGP 服务来实现。
示例 - 通过 IPsec 站点到站点 VPN 与 AWS 建立 BGP 邻居
下例在一对 IPsec VPN 通道上与 AWS 配置 BGP 邻居,从而允许本地网络与 AWS 之间动态交换路由。这对于需要向 AWS 广播自己前缀而无需维护静态路由的混合云环境非常有用。
- 初始化 BGP 并分配本地自治系统(AS)号:router bgp
- 设置 router ID,作为 BGP 实例的唯一标识:bgp router-id
- 向 AWS 通告本地网络(203.0.113.0/24),使云端服务器能访问本地网络:network
mask - 通过第一个 IPsec VPN 通道,与 AWS 建立 BGP 会话并指定其 AS 号:neighbor
remote-as - 通过第二个 IPsec VPN 通道,再与同一个 AS 号建立 BGP 会话:neighbor
remote-as - 可选,为邻居添加本地描述,便于识别:neighbor
description - 可选,引用 Route Map 以接收某些前缀:neighbor
route-map in - 可选,引用 Route Map 以发布某些前缀:neighbor
route-map out - 为第一个 IPsec VPN 通道启用软重配置以保存收到的路由,修改策略时无需重置会话:neighbor
soft-reconfiguration inbound - 为第二个 IPsec VPN 通道启用软重配置:neighbor
soft-reconfiguration inbound - 如第 7 和 8 步引用了 Route Map,请退出 BGP 段,在文件底部添加相关配置。
- 添加 Route Maps:route-map: <route-map_name> permit
- 在 Route Map 中匹配前缀列表:match ip address prefix-list
- 添加在 Route Map 中匹配的前缀列表:match ip address prefix-list
- 添加 Route Maps:route-map: <route-map_name> permit
注意:在本例中,UniFi 网关的隧道 IP 地址配置为 169.254.100.1 和 169.254.101.1,AWS 端为 169.254.100.2 和 169.254.101.2。
router bgp 65000
bgp router-id 198.51.100.1
!
network 203.0.113.0 mask 255.255.255.0
!
neighbor 169.254.100.2 remote-as 65001
neighbor 169.254.100.2 description Tunnel1
!
neighbor 169.254.101.2 remote-as 65001
neighbor 169.254.101.2 description Tunnel2
!
address-family ipv4
neighbor 169.254.100.2 activate
neighbor 169.254.100.2 soft-reconfiguration inbound
neighbor 169.254.100.2 route-map ACCEPT_ROUTES in
neighbor 169.254.100.2 route-map ADVERTISED_ROUTES out
neighbor 169.254.101.2 activate
neighbor 169.254.101.2 soft-reconfiguration inbound
neighbor 169.254.101.2 route-map ACCEPT_ROUTES in
neighbor 169.254.101.2 route-map ADVERTISED_ROUTES out
exit-address-family
!
exit
!
route-map ACCEPT_ROUTES permit 10
match ip address prefix-list ACCEPT_ALL
exit
!
route-map ADVERTISED_ROUTES permit 10
match ip address prefix-list ADVERTISE_SPECIFIC
exit
!
ip prefix-list ACCEPT_ALL seq 5 permit any
!
ip prefix-list ADVERTISE_SPECIFIC seq 5 permit 203.0.113.0/24