在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.conf | metadata | value |
|---|---|---|
| router bgp | customer_as | 65000 |
| neighbor V4 remote-as | peer_as | 65530 |
| neighbor V4 ebgp-multihop 5 | multihop | if the metadata shows multihop as true then you need to add multihop to FRR |
| neighbor IP peer-group V4 | peer_ips | 169.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。