BGP与自带IP到VPS:完整指南
完整的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会话前需要准备什么?
六个基础模块,按依赖顺序排列:
-
**自治系统号(ASN)。**你在BGP互联网上的身份标识。通过赞助LIR从RIR获取(欧洲为RIPE NCC,北美为ARIN,亚太为APNIC)。在RIPE NCC的处理时间为2-5个工作日。
-
**IP分配。**IPv4至少/24,IPv6至少/48。更小的前缀会被大多数网络过滤且无法传播。你可以从RIR持有IPv4空间(日益稀缺且昂贵)或从经纪商租赁。IPv6分配可从所有RIR轻松获取。
-
**IRR路由对象。**互联网路由注册中心的条目,记录哪个ASN被授权发起你的前缀。许多中转服务商根据IRR数据构建BGP过滤器。没有匹配的路由对象,你的宣告可能被静默丢弃。在首次会话前在RIPE数据库(或你的RIR等效系统)中创建这些对象。
-
**RPKI ROA(路由源授权)。**将你的前缀绑定到你的ASN的加密对象。目前超过51%的IPv4路由和57%的IPv6路由拥有有效ROA。执行路由源验证(ROV)的网络将拒绝未通过RPKI检查的宣告。在你的RIR门户创建ROA。
-
**路由守护进程。**VPS上运行BGP的软件。三个主要选项是BIRD2、FRRouting(FRR)和VyOS。参见下方比较。
-
**支持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 all或import 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端口的流量。这只是一条nftables或iptables规则,但它能防止未授权的BGP连接尝试。
常见陷阱
**rp_filter导致流量中断。**Linux反向路径过滤(rp_filter=1,许多发行版的默认值)会丢弃到达某接口的数据包,如果内核路由表认为源IP应该从另一个接口到达。当BGP宣告的前缀配置在dummy接口上时,这会中断合法流量。在相关接口上设置rp_filter=0或rp_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
以下是完整路径,附有涵盖每个步骤的文章链接:
- 获取ASN,通过赞助LIR从你的RIR获取。
- **获取IP空间。**至少IPv4 /24、IPv6 /48。从你的RIR或经纪商获取。
- 创建IRR路由对象,在RIPE数据库中为每个前缀创建。
- 创建RPKI ROA,在你的RIR门户中为每个前缀创建。
- **选择路由守护进程:**BIRD2 、FRR 或VyOS 。
- **在VPS上配置BGP。**建立会话,宣告你的前缀,应用过滤器。
- **保护部署安全。**RPKI验证、路由过滤、GTSM、防火墙规则。
- **从外部验证。**检查bgp.tools、RIPE Stat和你服务商的Looking Glass。
- **建立监控。**部署BGPalerter监视劫持和可见性问题。
- **探索高级用例。**社区 、任播 、故障转移 。
需要自己的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.