在Vultr上配置BGP

Vultr的BGP功能使您可以拥有自己的IP空间,并在我们的任何位置使用它。

入门

要使用BGP,您需要:

  • 部署的Vultr服务器实例。
  • 您自己的IP空间(v4或v6)。如果您有自己的ASN,则可以使用它,或者我们可以分配一个私有的。

如果要发布IPv4前缀,则服务器实例必须具有Vultr自动分配的IPv4地址。如果要发布IPv6前缀,则服务器实例必须同时具有Vultr自动分配的IPv4和IPv6地址。

请先完成BGP设置表格。确保您验证ASN和子网的所有权,以防止延迟。

一旦在帐户上配置了此功能,就可以继续配置BGP。

BGP设置

注意:如果要配置在您的帐户上设置BGP之前部署的实例,则需要通过控制面板重新启动它。BGP在重新启动之前无法在任何现有实例上运行(通过SSH重新启动是不够的)。

我们建议将BIRD用作BGP守护程序(但您可以使用所需的任何BGP守护程序)。大多数操作系统都为此提供了一个软件包。

我们的示例将假设以下内容:

  • ASN:64512
  • 实例的IP :: 203.0.113.123
  • IPv4块:198.51.100.0/24
  • BGP密码:hunter2

为了确认连通性,让我们设置一个BGP会话而不宣布任何IP。/etc/bird.conf用以下文本创建一个文件。请注意,在某些系统上,例如Ubuntu 16.04,它将为/etc/bird/bird.conf

router id 203.0.113.123;

protocol bgp vultr
{
    local as 64512;
    source address 203.0.113.123;
    import none;
    export all;
    graceful restart on;
    multihop 2;
    neighbor 169.254.169.254 as 64515;
    password "hunter2";
}

重新启动bird,并检查会话状态:

[root@vultr ~]# birdc show proto all vultr
BIRD 1.4.5 ready.
name     proto    table    state  since       info
vultr    BGP      master   up     14:11:36    Established
  Preference:     100
  Input filter:   REJECT
  Output filter:  (unnamed)
  Routes:         0 imported, 581634 filtered, 1 exported, 0 preferred
  Route change stats:     received   rejected   filtered    ignored   accepted
    Import updates:         581674          0     581674          0          0
    Import withdraws:            2          0        ---     581675          0
    Export updates:              1          0          0        ---          1
    Export withdraws:            0        ---        ---        ---          0
  BGP state:          Established
    Neighbor address: 169.254.169.254
    Neighbor AS:      64515
    Neighbor ID:      169.254.169.254
    Neighbor caps:    refresh restart-able AS4
    Session:          external multihop AS4
    Source address:   203.0.113.123
    Hold timer:       208/240
    Keepalive timer:  57/80

BGP状态为“已建立”表示一切正常。如果看不到“已建立”状态,请尝试以下操作:

  • 自从支持在您的帐户上设置BGP以来,您是否通过控制面板重新启动?
  • 防火墙是否允许BGP端口(TCP 179)?
  • 您的BGP密码正确吗?(可以在控制台中进行验证,每个订阅都有一个列出详细信息的BGP选项卡)
  • 您是否正在使用实例的主IP?(除了使用BGP实例的主IP之外,不能使用其他任何东西)

FreeBSD注意事项

FreeBSD的默认配置不适用于BGP。为了在FreeBSD上实际使用BGP,您需要做一些事情:

1)在启用以下附加选项的情况下重新编译内核:

device crypto
options IPSEC
options TCP_SIGNATURE

2)使用静态IP配置网络适配器。

3)使用BGP密码更新ipsec.conf:

add 203.0.113.123 169.254.169.254 tcp 0x1000 -A tcp-md5 "hunter2";
add 169.254.169.254 203.0.113.123 tcp 0x1000 -A tcp-md5 "hunter2";

宣布路线

BGP会话正常运行后,下一步就是开始宣布一些路由。为了使您的地址空间在Internet上可见,您需要宣布至少一个/ 24(对于IPv6,则为/ 48)。

最简单的入门方法是将静态路由添加到BIRD配置,例如:

protocol static
{
    route  198.51.100.0/24 via 203.0.113.123;
}

protocol device
{
    scan time 5;
}

“协议设备”块使BIRD可以收集有关连接到您的实例的网络适配器的信息。没有它,您的静态路由将不会出现。

重新加载BIRD,然后验证您的路由是否正常运行:

[root@vultr ~]# birdc show route
BIRD 1.4.5 ready.
198.51.100.0/24    via 203.0.113.123 on eth0 [static1 14:22:12] * (200)

此时,您的子网的流量现在应该流向您的实例。在操作系统中配置IP之前,您将无法ping通这些IP。一种验证方式是使用tcpdump,“ tcpdump -i eth0 -n net 198.51.100.0/24”。

配置IP

我们看到的一种常见配置是在不同实例上使用单独的IP地址。尽管每个实例都需要运行自己的BGP服务器,但这是可能的。

为此,除了覆盖/ 24之外,我们还将宣布各个实例的/ 32路由。我们可以使用静态路由来做到这一点,但是我们建议改用虚拟接口。我们将使用198.51.100.100作为我们要路由的IP。

在接口上进行设置:

# ip link add dev dummy1 type dummy
# ip link set dummy1 up
# ip addr add dev dummy1 198.51.100.100/32

确认此配置正确:

# ip addr show dev dummy1
5: dummy1: <BROADCAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether ba:23:57:2c:ad:bc brd ff:ff:ff:ff:ff:ff
    inet 198.51.100.100/32 scope global dummy1

注意:您应该查阅操作系统的文档,以确定如何配置此接口以在引导时使用。

现在,我们将配置BIRD扫描任何虚拟接口,并宣布在接口上找到的任何IP。将以下内容添加到您的BIRD配置中,然后重新加载BIRD:

protocol direct
{
    interface "dummy*";
    import all;
}

确认BIRD宣布了该路线:

[root@vultr ~]# birdc show route
BIRD 1.4.5 ready.
198.51.100.0/24    via 203.0.113.123 on eth0 [static1 14:22:12] * (200)
198.51.100.100/32  dev dummy1 [direct1 14:36:56] * (240)

您可以在具有其他IP的其他实例上重复此过程。发生的情况是我们的路由器将对任何给定的IP地址使用最特定的路由。当存在/ 24和/ 32时,/ 32是最特定的路由,因此该IP的任何流量都将遵循该路由。

您可以有多个实例声明相同的/ 32。这将为您提供高可用性(如果任何实例发生故障,其路由将消失,流量将故障转移到另一个实例)。

我们的位置没有链接,因此您需要确保在要使用IP的每个位置中都声明一个/ 24(或IPv6 / 48)。除非您试图建立一个任播网络,否则不能使用一个/ 24为多个位置分配IP。

我们的某些位置支持ECMP,在这种情况下,流量将随机分布在最多8个宣布相同IP的实例之间。当前支持ECMP的位置是:

  • 新泽西州
  • 芝加哥
  • 达拉斯
  • 亚特兰大
  • 东京
  • 新加坡
  • 洛杉矶
  • 迈阿密
  • 硅谷
  • 巴黎
  • 伦敦

相关文件

笔记

对于BIRD 1.5及更高版本,您可能需要更改以下route行的语法:

route  198.51.100.0/24 via 203.0.113.123;

至:

route  198.51.100.0/24 via "203.0.113.123";

** 故障排除 **

我们的系统需要TCP MD5身份验证才能建立连接。这意味着您无法使用telnet之类的工具测试连接性。通常,我们建议您使用tcpdump查看流量,以解决连接问题。

留下評論

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg

在Arch Linux上使用Makepkg可以避免系统污染,确保仅安装必要的依赖关系。

如何在Ubuntu 16.04上安装OpenSIPS控制面板

如何在Ubuntu 16.04上安装OpenSIPS控制面板

快速学习如何在Ubuntu 16.04上安装OpenSIPS控制面板,为VoIP提供商提供支持的功能。

在Fedora 28上安装Akaunting

在Fedora 28上安装Akaunting

学习如何在Fedora 28上安装Akaunting,一款适合小型企业和自由职业者的开源会计软件。

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

如何在CentOS 7上安装Mailtrain新闻通讯应用程序

使用其他系统?Mailtrain是一个基于Node.js和MySQL / MariaDB构建的开源自托管新闻通讯应用程序。

诊断Minecraft服务器延迟和低TPS

诊断Minecraft服务器延迟和低TPS

了解導致Minecraft延遲的原因和解決方案,包括優化伺服器性能和減少滯後的步驟。

AI 能否應對越來越多的勒索軟件攻擊?

AI 能否應對越來越多的勒索軟件攻擊?

勒索軟件攻擊呈上升趨勢,但人工智能能否幫助應對最新的計算機病毒?AI 是答案嗎?在這裡閱讀知道是 AI 布恩還是禍根

ReactOS:這是 Windows 的未來嗎?

ReactOS:這是 Windows 的未來嗎?

ReactOS,一個開源和免費的操作系統,這裡有最新版本。它能否滿足現代 Windows 用戶的需求並打倒微軟?讓我們更多地了解這種老式但更新的操作系統體驗。

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

通過 WhatsApp 桌面應用程序 24*7 保持聯繫

Whatsapp 終於為 Mac 和 Windows 用戶推出了桌面應用程序。現在您可以輕鬆地從 Windows 或 Mac 訪問 Whatsapp。適用於 Windows 8+ 和 Mac OS 10.9+

人工智能如何將流程自動化提升到新的水平?

人工智能如何將流程自動化提升到新的水平?

閱讀本文以了解人工智能如何在小型公司中變得流行,以及它如何增加使它們成長並為競爭對手提供優勢的可能性。

macOS Catalina 10.15.4 補充更新引發的問題多於解決

macOS Catalina 10.15.4 補充更新引發的問題多於解決

最近,Apple 發布了 macOS Catalina 10.15.4 補充更新以修復問題,但似乎該更新引起了更多問題,導致 mac 機器變磚。閱讀這篇文章以了解更多信息