跳至内容

在Equinix Metal服务器上使用 FRR 配置 BGP

FRRouting (FRR) 是一组开源互联网路由协议,包括 BGP,您可以在 Equinix Metal 上使用它们。本指南将介绍如何通过 BGP 从服务器发布 IP 地址的最小可行配置。

您可以在 packethost/network-helpers GitHub 存储库中找到一些 Equinix Metal 创建的入门脚本,这些脚本可以帮助您自动执行从服务器的 BGP 元数据 中提取所需的 BGP 信息并将其写入 FRR 配置文件的过程。

入门

如果您是第一次配置 BGP,Equinix Metal 上的 BGP 文档包含有关在平台上启用和使用 BGP 的高级概述。

在本示例中,我们设置了本地 BGP来通告一个保留给我们 Equinix Metal 项目的公共 IPv4 地址:10.99.200.138/32。在本示例中,我们在 Equinix Metal 上配置了 BGP,但没有设置密码。

更新网络接口

通过 SSH 进入您的服务器并使用虚拟环回接口更新服务器的网络接口。

cat >>/etc/network/interfaces <<EOF
auto lo:0
iface lo:0 inet static
address 10.99.200.138
netmask 255.255.255.255
EOF

然后调出界面。

ifup lo:0

安装 FRR 并启用 BGP

然后安装FRR。

apt -y update && apt -y install frr

安装完成后,我们需要在 FRR 的配置中启用 BGP。打开 /etc/frr/daemons 文件,并将 bgpd=no 更改为 bgpd=yes

收集邻居信息

FRR 附带一个最小配置文件,我们将在其中添加一些内容以实现基本的“宣布 IP 地址”功能。

您需要的信息可以在服务器的 BGP 元数据 中找到,前提是您已在项目和服务器上启用了 BGP,如 Equinix Metal 上的 BGP本地 BGP 指南中所述。

要获取服务器的邻居信息,请通过 SSH 进入服务器并使用 cURL 访问元数据端点。

curl https://metadata.platformequinix.com/metadata | jq '.bgp_neighbors[0] | { customer_ip: .customer_ip, customer_as: .customer_as, multihop: .multihop, peer_ips: .peer_ips, peer_as: .peer_as }'

此命令将返回一串相关的 BGP 信息。

{
"customer_ip": "10.67.50.3",
"customer_as": 65000,
"multihop": true,
"peer_ips": [
"169.254.255.1",
"169.254.255.2"
],
"peer_as": 65530
}

您还需要在配置中设置静态路由,因此请再次访问元数据端点以获取上游路由器网关的私有 IP 地址。

curl https://metadata.platformequinix.com/metadata | jq -r '.network.addresses[] | select(.public == false and .address_family == 4) | { gateway: .gateway }'

作为响应,您将获得服务器的 IPv4 网关地址。

{
"gateway": "10.67.50.2"
}

填写FRR配置文件

FRR安装完成后,其配置文件位于/etc/frr/frr.conf目录下。我们提供了一个示例配置文件供您参考。

frr defaults traditional
log syslog informational
ipv6 forwarding
service integrated-vtysh-config
!
ip route 169.254.255.1/32 10.67.50.2
ip route 169.254.255.2/32 10.67.50.2
!
router bgp 65000
bgp ebgp-requires-policy
neighbor V4 peer-group
neighbor V4 remote-as 65530
neighbor V4 ebgp-multihop 5
neighbor 169.254.255.1 peer-group V4
neighbor 169.254.255.2 peer-group V4
!
address-family ipv4 unicast
redistribute connected
neighbor V4 route-map IMPORT in
neighbor V4 route-map EXPORT out
exit-address-family
!
route-map EXPORT deny 100
!
route-map EXPORT permit 1
match interface lo
!
route-map IMPORT deny 1
!
line vty
!

元数据到字段的映射如下:

frr.confmetadatavalue
router bgpcustomer_as65000
neighbor V4 remote-aspeer_as65530
neighbor V4 ebgp-multihop 5multihopif the metadata shows multihop as true then you need to add multihop to FRR
neighbor IP peer-group V4peer_ips169.254.255.1 and 169.254.255.2

您还需要设置从服务器到 Metal 路由器的静态路由,即配置中的两行 ip route,使用从元数据中提取的网关地址。

ip route <peer_ips_1>/32 <gateway>
ip route <peer_ips_2>/32 <gateway>

然后告诉 FRR 使用哪个网络接口:

route-map EXPORT permit 1
match interface lo

最后,检查配置是否正确,然后重新启动 FRR:

systemctl restart frr

检查FRR配置结果

您可以通过启动 vtysh shell 来验证 BGP 会话。

vtysh

然后使用 show bgp summary 命令。

show bgp summary

结果应该反映您的配置文件中的信息。

IPv4 Unicast Summary (VRF default):
BGP router identifier 147.75.109.216, local AS number 65000 vrf-id 0
BGP table version 3
RIB entries 5, using 920 bytes of memory
Peers 2, using 1446 KiB of memory
Peer groups 1, using 64 bytes of memory

Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd PfxSnt Desc
169.254.255.1 4 65530 6 6 0 0 0 00:02:15 0 1 N/A
169.254.255.2 4 65530 8 7 0 0 0 00:03:15 0 1 N/A

Total number of neighbors 2

要查看您的服务器是否可以通过您发布的 IP 地址访问,您可以在命令行中 ping 该 IP 地址。如果您发布的是公共 IPv4 或 IPv6 地址,那么您应该可以从任何服务器 ping 通该地址。但是,如果您发布的是私有 IPv4 地址,则您必须连接到私有网络,因此您只能从同一项目和 metro 中的服务器 ping 通(如果您启用了 后端传输,则只能从同一项目中的服务器 ping 通)。

包起来

在主机上配置好 BGP 后,Equinix Metal 会监控您的 BGP 会话。更多信息请访问 监控 BGP 页面。

对于同一过程的另一个示例,但使用 BIRD 管理服务器的 BGP 会话,我们还有一个 在 Equinix 金属服务器上使用 BIRD 配置 BGP 指南。

FRR 也可以通过 Docker 自动部署。有关使用 Docker 部署 FRR 的更多信息,请参阅url0

此页面有帮助吗?