如何在Linux利用Bird配置BGP协议实现多线机房路由

千丽小哥_2951

千丽小哥_2951

2026-03-31

342人浏览

原创

bgp邻居配不起来主因是参数未对齐:local as、neighbor as、source address三者必须严格一致,且默认不支持multihop;loopback建邻需双方配置source address并确保/32路由可达;export需匹配真实内核路由,非仅配置存在。

如何在linux利用bird配置bgp协议实现多线机房路由

bird.conf 里 BGP 邻居配不起来,birdc show protocols 显示 down

绝大多数情况不是网络不通,而是 BGP 参数没对齐。Bird 对 local as、neighbor as、source address 三者校验极严,任一错都会卡在 TCP 连接后立即断开(日志里常出现 State changed to start → down)。

实操建议:

linux-sysadmin
linux-sysadmin

Linux系统管理专家,覆盖12大模块:用户权限、SSH、存储、网络、systemd、防火墙、日志监控、备份恢复、TLS证书、Ansible、容器、IaC。提供配置、验证、加固、监控、备份、自动化、故障排查、回滚闭环。关键词:useradd、sudo、sshd_config、chmod、SEL...

下载
  • 确认 neighbor 的 IP 是对方 BGP 的直连接口地址,不是 loopback —— Bird 默认不启用 multihop,跨网段必须显式加 multihop 2
  • local as 和 neighbor as 必须和对端完全一致,AS 号写成 65001 和 65001.0 在 Bird 看来是两个不同 AS
  • 如果用 loopback 建邻居,两边都要配 source address <your_loopback></your_loopback>,且路由表里必须有到对方 loopback 的 /32 路由(静态 or IGP 同步)
  • 检查防火墙:iptables -L INPUT | grep 179,Bird 默认只监听本地地址,若监听 0.0.0.0 则需放行 tcp dpt:179

宣告路由时,export where source = RTS_STATIC 不生效

Bird 的路由选择非常“洁癖”:它不会把任何未进入内核路由表的路由导出,哪怕你在配置里写了 export all。常见误解是以为 static route 加了就自动能 BGP 宣告,其实中间卡在路由协议优先级上。

实操建议:

  • 先用 ip route show table main 确认目标路由真正在主表里存在;如果用了自定义路由表(如 table 100),Bird 默认不读,得加 import table 100 到 kernel 协议块里
  • source = RTS_STATIC 只匹配 static 协议生成的路由,不匹配 kernel 或 device 协议带进来的;想导出内核路由,改用 source = RTS_INHERIT 或直接 export where net ~ [192.0.2.0/24]
  • 宣告前务必 birdc configure 重载,并用 birdc show route export 看实际准备发出去的路由——别只信配置文件写了

多线机房场景下,如何让出向流量走指定线路

Bird 本身不控制出向路径,它只影响入向路由学习和宣告。真正决定你服务器发包走哪条线路的,是 Linux 内核的路由决策(最长前缀匹配 + metric)。BGP 学来的路由默认 metric=100,很容易被本地直连或静态路由压住。

实操建议:

  • 给不同 BGP 会话打不同 import 标签,例如 import filter { if (from = 203.0.113.1) then accept; else reject; };,再配合 define RTT_A = 100; define RTT_B = 200; 控制优先级
  • 用 router id 或 protocol bgp xx { ... } 的名字做条件,在 export filter 里加 set med 50 或 set local_pref 200 影响对端选路,但注意 MED 只在相邻 AS 有效
  • 出向控制靠策略路由:ip rule add from 192.0.2.100 table 10 + ip route add default via 203.0.113.1 dev eth1 table 10,BGP 只管“告诉别人怎么来”,你自己往哪发得自己定

birdc 提示 Connection refused 或找不到 socket

Bird 默认用 Unix socket /var/run/bird.ctl 通信,不是 TCP。报 Connection refused,八成是服务根本没跑,或者权限/路径不对。

实操建议:

  • 查进程:ps aux | grep bird,没输出说明没启;启动命令通常是 bird -d -c /etc/bird/bird.conf(-d 后台运行,-c 指定配置)
  • socket 路径由配置里 protocol unix { ... } 块控制,默认是 socket "/var/run/bird.ctl",但目录 /var/run/bird/ 得存在且 bird 用户可写
  • 非 root 用户执行 birdc 会失败,要么加 sudo birdc,要么改 socket 权限:chown bird:bird /var/run/bird.ctl && chmod 660 /var/run/bird.ctl
  • systemd 管理时,记得 systemctl enable bird,否则 reboot 后消失
BGP 多线调度真正的复杂点不在 Bird 配置本身,而在于每条线路的 MTU、TCP MSS、ECN 支持度不一致,这些参数看不见摸不着,但会导致大包丢、连接慢、TLS 握手卡住——上线前得用 ping -M do -s 1472 和 curl --limit-rate 100K 实测各线路的实际吞吐表现。

相关文章

路由优化大师
路由优化大师

路由优化大师是一款及简单的路由器设置管理软件,其主要功能是一键设置优化路由、屏广告、防蹭网、路由器全面检测及高级设置等,有需要的小伙伴快来保存下载体验吧!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
服务器是什么
服务器是什么

服务器是一种计算机硬件设备或软件程序,它具有强大的计算和存储能力,用请求、存储数据和提供服务。它在互联网中着关重要的作用,为用户提供各种服务和资源。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.08.15

437

5

连接apple id服务器时出错
连接apple id服务器时出错

连接apple id服务器时出错的原因包括网络连接问题、服务器问题、Apple ID账户问题、设备问题、防火墙或安全软件问题、时间和日期设置问题、Apple服务器维护等。本专题为大家提供apple id相关的文章、下载、课程内容,供大家免费下载体验。

2023.09.08

880

5

搭建互联网服务器
搭建互联网服务器

搭建互联网服务器需要:1、选择合适的硬件和操作系统,第一步是选择合适的硬件和操作系统;2、安装和配置操作系统,是搭建互联网服务器的关键步骤;3、安装和配置服务器软件,是搭建互联网服务器的下一步,常见的服务器软件包括Apache、Nginx、Tomcat等;4、配置防火墙和安全性,是搭建互联网服务器的重要步骤;5、域名解析和配置,是搭建互联网服务器的最后一步。

2023.09.19

2632

5

如何查看服务器状态
如何查看服务器状态

查看服务器状态的方法有使用命令行工具、图形界面工具、监控工具、日志文件和远程管理工具等。本专题为大家提供服务器状态相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.09

876

5

服务器域名转接慢怎么解决
服务器域名转接慢怎么解决

服务器域名转接慢的解决办法有DNS优化、服务器优化、CDN加速、前端优化和网络优化等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.17

789

5

服务器评测软件
服务器评测软件

服务器评测软件有PassMark Software、CPU-Z、GPU-Z、CrystalDiskMark、IOmeter、JMeter、LoadRunner、Apache Bench等等。详细介绍:1、PassMark Software是一款综合性的服务器性能测试软件,可以评估服务器在各种负载条件下的性能;2、CPU-Z是一款可以提供服务器CPU详细信息的软件等等。

2023.10.17

414

3

如何开启TFTP服务器
如何开启TFTP服务器

开启TFTP服务器的步骤包括选择TFTP服务器软件、下载和安装软件、配置TFTP服务器以及启动和测试服务器等。本专题为大家提供服务器相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

2396

4

服务器负载不兼容怎么解决
服务器负载不兼容怎么解决

解决方法:1、增加服务器资源;2、负载均衡;3、优化应用程序;4、增加缓存机制;5、分布式架构;6、限流和熔断;7、自动化扩容。想知道更详细服务器负载不兼容的解决方法,可以访问本专题下面的文章。

2023.10.20

4412

4

宽带如何接入服务器
宽带如何接入服务器

宽带接入服务器的方法有ADSL宽带接入服务器、光纤接入服务器、无线接入服务器和以太网接入服务器等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.20

707

5

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习