BGP与自带IP到VPS:完整指南

3 分钟阅读·Matthieu|

完整的BYOIP流程:从ASN注册到受监控的BGP部署。涵盖每个关键环节:ASN、IP分配、RPKI、路由守护进程、路由过滤以及任播和多宿主等高级用例。

这是完整BYOIP流程的中心页面。它串联了从获取ASN到在生产环境中监控BGP宣告的每个步骤。每个章节都链接到专门的深入文章,你可以在其中找到配置、命令和验证步骤。

如果你已经了解BGP和BYOIP,可以直接跳到首次BGP会话前需要准备什么?

将自有IP接入VPS意味着什么?

Bring Your Own IP(BYOIP,自带IP)是指通过BGP协议,将你拥有或从区域互联网注册机构(RIR)租赁的IP地址空间,通过托管服务商的网络进行宣告。你的VPS不使用服务商的IP地址,而是为你自己的前缀发起路由。目标为这些IP的流量通过服务商的上游链路和互联网交换点到达你的服务器。

你保持对地址的控制权。如果你更换服务商,你的IP随你迁移。不需要修改DNS,不需要重建声誉,除了收敛窗口外客户不会感知到中断。

为什么要自带IP?

**IP声誉延续性。**邮件送达率、DNS声誉和防火墙白名单跟随地址而非服务器。使用服务商分配的IP更换服务商意味着从零开始重建声誉。

**服务商可移植性。**你的前缀不绑定任何单一主机。你可以故障转移到另一家服务商,或跨两家服务商运行多宿主,而无需更改客户连接的地址。

**多宿主与冗余。**从多个位置宣告同一前缀。BGP自动处理故障转移。即使一个站点宕机,你的服务仍然可达。

**合规与审计。**某些受监管环境要求IP地址所有权文档。通过RIR持有分配为你提供这条审计线索。

**任播(Anycast)。**从地理分布的节点宣告同一前缀。用户被路由到最近的节点。DNS根服务器和CDN边缘节点就是这样工作的。

BGP在BYOIP中扮演什么角色?

BGP(Border Gateway Protocol,边界网关协议)是路由器在互联网上的自治系统之间交换可达性信息的协议。当你将自有IP接入VPS时,你在服务器上运行BGP守护进程。该守护进程与服务商的路由器建立会话并宣告你的前缀。服务商将这些宣告传播给其上游和对等方。几分钟内,互联网上的路由器就会知道你的IP空间可以通过服务商的网络到达。

这与每个ISP、云服务商和内容网络使用的协议相同。区别在于规模:你宣告一两个前缀,而非数千个。

入门不需要理解每个BGP属性。你需要知道如何配置会话、宣告前缀和过滤接受的内容。本系列的深入文章详细介绍了每个环节。

首次BGP会话前需要准备什么?

六个基础模块,按依赖顺序排列:

  1. **自治系统号(ASN)。**你在BGP互联网上的身份标识。通过赞助LIR从RIR获取(欧洲为RIPE NCC,北美为ARIN,亚太为APNIC)。在RIPE NCC的处理时间为2-5个工作日。

  2. **IP分配。**IPv4至少/24,IPv6至少/48。更小的前缀会被大多数网络过滤且无法传播。你可以从RIR持有IPv4空间(日益稀缺且昂贵)或从经纪商租赁。IPv6分配可从所有RIR轻松获取。

  3. **IRR路由对象。**互联网路由注册中心的条目,记录哪个ASN被授权发起你的前缀。许多中转服务商根据IRR数据构建BGP过滤器。没有匹配的路由对象,你的宣告可能被静默丢弃。在首次会话前在RIPE数据库(或你的RIR等效系统)中创建这些对象。

  4. **RPKI ROA(路由源授权)。**将你的前缀绑定到你的ASN的加密对象。目前超过51%的IPv4路由和57%的IPv6路由拥有有效ROA。执行路由源验证(ROV)的网络将拒绝未通过RPKI检查的宣告。在你的RIR门户创建ROA。

  5. **路由守护进程。**VPS上运行BGP的软件。三个主要选项是BIRD2、FRRouting(FRR)和VyOS。参见下方比较。

  6. **支持BGP会话的服务商。**并非每个VPS服务商都提供此服务。你需要一个能在其路由器和你的VPS之间配置BGP会话、接受你的前缀宣告并向上游传播的服务商。

启动前检查清单

在向服务商请求BGP会话之前,确保你已具备:

项目 获取途径 预计时间
ASN 通过赞助LIR从RIR获取 2-5个工作日
IPv4 /24或更大 RIR分配或租赁 数天到数周
IPv6 /48或更大 RIR分配 1-2个工作日
IRR route/route6对象 RIPE数据库或等效系统 分钟级(获得ASN后)
每个前缀的RPKI ROA RIR成员门户 分钟级
LOA(授权信) 你签署,服务商可能要求 分钟级
支持BGP的服务商 或类似 不等

你的服务商通常需要你的ASN、你计划宣告的前缀,以及可能需要一份确认你有权宣告它们的LOA。

ASN、IP分配和RPKI如何协同工作?

这三者构成了让互联网验证你的宣告合法性的信任链。

你的ASN标识你的网络。每个BGP宣告在其AS-path中携带发起ASN。上游网络利用此信息构建路由策略。

你的IP分配是你被授权使用的地址空间。RIR数据库将你(或你的赞助LIR)记录为持有者。

IRR对象是路由策略层。RIPE数据库中的route对象表示"AS64500被授权发起192.0.2.0/24。"中转服务商查询IRR数据来构建前缀过滤器。如果你的路由对象缺失或错误,中转服务商的自动过滤器可能拒绝你的宣告。

RPKI ROA是加密层。ROA是存储在你的RIR RPKI仓库中的签名对象。它表达的内容与IRR路由对象相同,但可以通过密码学方式验证。运行ROV验证器(Routinator、rpki-client、Fort、RIPE NCC RPKI Validator)的网络获取ROA并将验证结果输入其路由器。没有有效ROA的宣告被丢弃的可能性越来越高。

依赖链如下:

ASN (from RIR)
  └── IP allocation (from RIR)
        ├── IRR route objects (RIPE Database)
        ├── RPKI ROAs (RIR portal)
        └── BGP session (provider router <-> your daemon)
              └── Prefix announcement (your daemon originates routes)

在接触BGP配置之前,先把上层搞定。没有匹配IRR和RPKI记录的宣告要么被过滤,要么被标记为潜在的路由劫持。

应该使用哪个路由守护进程:BIRD2、FRR还是VyOS?

三个选项主导Linux VPS环境中的BGP。三者都支持双栈(IPv4 + IPv6)、RPKI验证以及BYOIP所需的功能。选择取决于配置风格偏好和运维需求。

特性 BIRD2 FRRouting (FRR) VyOS
配置风格 自定义声明式语言 类Cisco IOS CLI(vtysh) 类JunOS CLI(set/commit)
过滤语言 强大的图灵完备过滤器 Route-maps + prefix-lists Route-maps(底层为FRR)
双栈 单一配置文件,多表 独立的address-family块 独立的address-family块
RPKI支持 内置rpki协议 内置rpki模块 通过FRR集成
内存使用 更低(基准测试中效率为FRR的2倍) 更高,尤其是完整路由表时 更高(完整操作系统开销)
学习曲线 从Cisco转来较陡 Cisco/IOS用户低 JunOS用户低
最适合 IXP路由服务器、策略密集型设置 熟悉的Cisco风格工作流 完整路由器操作系统体验

BIRD2拥有最具表达力的过滤语言。你可以在单个配置文件中编写复杂的导入/导出策略。它在一个守护进程实例中同时处理IPv4和IPv6。内存占用约为FRR在同等负载下的一半。权衡:其配置语法在设备厂商世界中没有对应物。你要么学习BIRD的语言,要么不用BIRD。

**FRRouting(FRR)**通过vtysh提供类Cisco IOS的CLI。如果你曾使用Cisco、Arista或旧版Quagga,FRR会让你立即感到熟悉。Route-maps和prefix-lists的工作方式符合预期。它是部署最广泛的开源路由套件。

VyOS是一个完整的网络操作系统,使用FRR作为路由引擎。你通过类JunOS的set / commit工作流配置一切。它提供完整的路由器体验:防火墙、NAT、VPN、DHCP和路由集于一体。在Virtua Cloud上,你可以一键部署VyOS。权衡:它是完整的操作系统,不仅仅是守护进程。你将失去通用Linux服务器的灵活性。

**如何选择?**如果你追求最大控制力和效率,选BIRD2。如果你想在Linux服务器上获得Cisco式的熟悉感,选FRR。如果你想要一个专用路由器设备,选VyOS。

如何保护BGP部署的安全?

BGP安全不是可选项。配置错误的BGP会话可能泄露路由、接受被劫持的前缀,或使你的网络遭受流量注入。每个BGP部署从第一天起就应包含以下安全层。

RPKI与路由源验证

配置你的守护进程以根据RPKI数据验证接收到的路由。运行本地RPKI缓存(Routinator或rpki-client)或连接到托管的验证器。拒绝RPKI状态为"invalid"的路由。这可以防止你的路由器接受被劫持的前缀。

截至2025年,超过51%的IPv4路由和57%的IPv6路由拥有有效ROA。所有主要中转服务商都执行ROV。如果你自己的前缀缺少ROA,部分网络将丢弃你的宣告。

路由过滤

永远不要在生产环境中使用export allimport all。这是BGP版的chmod 777

在导出侧,只宣告你被授权发起的前缀。使用明确匹配你分配的prefix-list。在导入侧,如果你是单宿主(一个上游),通常只接受默认路由。如果是多宿主,通过prefix-list和AS-path过滤导入以防止路由泄露。

在导入时拒绝bogon前缀(RFC 1918空间、文档范围、未分配块)。拒绝IPv4长于/24或IPv6长于/48的前缀。设置max-prefix限制以防止对等方意外将完整路由表倾倒到你的会话中。

GTSM(通用TTL安全机制)

GTSM(RFC 5082)确保BGP数据包到达时TTL为255,这意味着它们来自直连邻居。这阻止了远程攻击者注入BGP数据包。大多数服务商支持此功能。当你的服务商确认支持时,在你这侧启用它。

防火墙规则

只允许来自服务商BGP路由器IP的TCP 179端口。丢弃所有其他目标为179端口的流量。这只是一条nftablesiptables规则,但它能防止未授权的BGP连接尝试。

常见陷阱

**rp_filter导致流量中断。**Linux反向路径过滤(rp_filter=1,许多发行版的默认值)会丢弃到达某接口的数据包,如果内核路由表认为源IP应该从另一个接口到达。当BGP宣告的前缀配置在dummy接口上时,这会中断合法流量。在相关接口上设置rp_filter=0rp_filter=2(宽松模式)。每次内核升级后都要测试。

**BIRD 1.x与BIRD 2.x配置混淆。**BIRD 2使用与BIRD 1.x完全不同的配置语法。许多在线教程(包括Vultr等网站的热门搜索结果)仍然展示BIRD 1.x语法。如果你将旧教程的配置复制粘贴到BIRD 2中,守护进程将拒绝启动。始终使用birdc show status检查你运行的版本。

**缺少IRR对象。**你创建了RPKI ROA但忘了IRR路由对象。上游的自动过滤器构建程序查询IRR,找不到匹配对象,静默丢弃你的宣告。你的前缀是RPKI有效的,但仍然不可达。两者都要创建。

BGP在基本宣告之外还能做什么?

一旦你的前缀被宣告并可达,BGP开启了几个高级用例。

任播(Anycast)

从多个地理位置宣告同一前缀。每个站点运行相同的服务(DNS解析器、CDN边缘、API端点)。用户通过BGP路径选择被路由到最近的站点。如果一个站点故障,其BGP会话断开,前缀从该位置撤回,流量自动转移到剩余站点。

任播是DNS根服务器系统的工作原理。你可以用两三个位于不同数据中心的VPS节点运行同样的模式。

故障转移与多宿主

从两个服务商或同一服务商的两个位置宣告你的前缀。使用LOCAL_PREF和MED设置主/备优先级。当主站点故障时,流量在BGP收敛窗口内切换到备站点(启用BFD时通常为30-90秒)。

对于计划内维护,使用graceful shutdown社区(RFC 8326)。你的守护进程在你关闭会话前通知对等方降低该前缀的优先级。流量无丢包地迁移到备用站点。

BGP社区用于流量工程

社区是附加在BGP宣告上的标签,影响上游网络处理你的路由的方式。常见用途:

  • **Blackhole社区:**通知上游在DDoS攻击期间丢弃目标为特定前缀的所有流量。
  • **Prepending控制:**请求上游对你的AS进行prepend,使某条路径不那么优先,将流量引导到另一个上游。
  • **选择性宣告:**向对等方宣告但不向中转宣告,或反之,控制你的前缀传播范围。
  • **地理范围限制:**将宣告限制在特定区域或IXP。

每个服务商定义自己的社区值。使用前请查阅你的服务商的BGP社区文档。

如何监控BGP宣告?

你需要知道前缀何时发生变化。路由劫持、意外撤回、RPKI状态变更和可见性下降都需要立即关注。不要因为昨天正常就假设宣告是稳定的。

BGPalerter是一个自托管的监控工具,监视你的前缀和ASN。它连接到公共BGP数据源(RIPE RIS、RouteViews)并在以下情况发出告警:

  • 前缀劫持(另一个ASN发起你的前缀)
  • 子前缀劫持(有人宣告你前缀的更具体路由)
  • 路由泄露
  • RPKI invalid状态变更
  • 可见性下降(你的前缀从大量观测点消失)

将其作为systemd服务运行在与BGP节点不同的VPS上。如果你的BGP节点宕机,你仍然需要收到告警。配置通知到Slack、邮件或你的监控体系。

外部验证工具

使用这些工具从外部验证你的宣告是否正确:

  • bgp.tools -- 实时查看你的前缀、AS-path、RPKI状态和IRR一致性
  • RIPE Stat -- RIR运营的Looking Glass,提供路由历史和RPKI验证
  • Hurricane Electric BGP Toolkit(bgp.he.net) -- AS信息、前缀报告、IRR和RPKI状态
  • Looking Glass服务器 -- 大多数中转服务商和IXP提供Looking Glass访问,可以检查你的前缀从他们的视角如何呈现

在首次宣告后和之后定期检查这些工具。从你的守护进程角度看正确的宣告,可能在更上游被过滤或劫持。

完整路径:从零到受监控的BGP

以下是完整路径,附有涵盖每个步骤的文章链接:

  1. 获取ASN,通过赞助LIR从你的RIR获取。
  2. **获取IP空间。**至少IPv4 /24、IPv6 /48。从你的RIR或经纪商获取。
  3. 创建IRR路由对象,在RIPE数据库中为每个前缀创建。
  4. 创建RPKI ROA,在你的RIR门户中为每个前缀创建。
  5. **选择路由守护进程:**BIRD2 、FRR 或VyOS 。
  6. **在VPS上配置BGP。**建立会话,宣告你的前缀,应用过滤器。
  7. **保护部署安全。**RPKI验证、路由过滤、GTSM、防火墙规则。
  8. **从外部验证。**检查bgp.tools、RIPE Stat和你服务商的Looking Glass。
  9. **建立监控。**部署BGPalerter监视劫持和可见性问题。
  10. **探索高级用例。**社区 、任播 、故障转移 。

需要自己的ASN还是可以用私有ASN?

如果你只向一个上游宣告前缀,且从未计划多宿主或在IXP对等,私有ASN(16位:64512-65534,32位:4200000000-4294967294)可以使用。你的服务商在向上游传播路由前会将其从AS-path中移除。

如果以下任一条件适用,请获取自己的公共ASN:

  • 你计划连接多个上游(多宿主)
  • 你想在互联网交换点对等
  • 你希望ASN在traceroute和BGP Looking Glass中可见
  • 你想使用引用你ASN的BGP社区
  • 你运营的服务需要网络身份标识(CDN、DNS、邮件基础设施)

成本差异很小。通过RIPE NCC获取公共ASN的费用是赞助LIR的年费(通常每年几百欧元)。对于大多数用例,公共ASN是正确的选择。


Copyright 2026 Virtua.Cloud. All rights reserved.

准备好亲自尝试了吗?

几秒内部署您自己的服务器。支持 Linux、Windows 或 FreeBSD。

查看 VPS 方案