开始输入,可搜索发票、服务、域名、工单,以及 更多...
在独立服务器上自行广播 IP 段时,第一件事就是检查 BGP 会话状态是否为 Established。本文介绍在 Linux 服务器上如何用 BIRD 2 和 FRRouting(FRR)查看与验证 BGP 会话,解释 Idle、Active、Established 等常见状态的含义,并给出会话起不来时的排查步骤。适用于 Debian/Ubuntu 与 CentOS/Rocky/AlmaLinux。示例中本端 ASN 为 64500,对端(上游)IP 为 203.0.113.1,广播前缀为 198.51.100.0/24。
如果尚未安装,可按系统选择下列命令,两者选其一即可。BIRD 配置简洁,适合单机广播;FRR 语法接近传统路由器,适合熟悉 Cisco 风格的用户。
# Debian / Ubuntu
apt install -y bird2 # or: apt install -y frr
# CentOS / Rocky / AlmaLinux
dnf install -y epel-release && dnf install -y bird # BIRD 2.x from EPEL
dnf install -y frr # or FRRoutingbirdc show protocols 列出所有协议,BGP 会话的 Info 列显示 Established 即为正常。加上 all 可以看到对端 ASN、保持时间、收发路由数量和最近的错误信息;show route export 可以确认您的前缀确实在向上游广播。
birdc show protocols
birdc show protocols all upstream1
birdc show route export upstream1
birdc show route protocol upstream1 countName Proto Table State Since Info
device1 Device --- up 2026-10-01
upstream1 BGP --- up 2026-10-01 Established在 FRR 中执行 show bgp summary,State/PfxRcd 列如果显示数字(收到的前缀数),说明会话已 Established;显示 Idle、Active、Connect 等文字则说明未建立。neighbors 子命令可查看详细状态和已发布、已接收的路由。
vtysh -c "show bgp summary"
vtysh -c "show bgp ipv4 unicast neighbors 203.0.113.1"
vtysh -c "show bgp ipv4 unicast neighbors 203.0.113.1 advertised-routes"
vtysh -c "show bgp ipv4 unicast neighbors 203.0.113.1 routes"注意:较新版本 FRR 默认开启 ebgp-requires-policy,若 eBGP 邻居没有配置入/出方向策略,汇总中会显示 (Policy),会话虽然建立但不收发任何路由。为邻居绑定 route-map 即可:
router bgp 64500
address-family ipv4 unicast
network 198.51.100.0/24
neighbor 203.0.113.1 route-map UPSTREAM-IN in
neighbor 203.0.113.1 route-map UPSTREAM-OUT out
exit-address-familyBIRD 与 FRR 都遵循 RFC 4271 定义的 BGP 有限状态机,可以用以下命令只看当前状态和最近一次错误:
birdc show protocols all upstream1 | grep -E "BGP state|Neighbor AS|Last error"
vtysh -c "show bgp ipv4 unicast neighbors 203.0.113.1" | grep -E "BGP state|Last reset"| 状态 | 含义 | 常见原因 |
|---|---|---|
| Idle | 未尝试连接或被重置后等待 | 配置错误、邻居被管理性关闭、刚出错后的退避 |
| Connect | 正在建立 TCP 连接 | 对端尚未响应 |
| Active | TCP 连接失败,反复重试 | IP 不通、179 端口被防火墙拦截、对端未配置您 |
| OpenSent / OpenConfirm | TCP 已通,正在交换 OPEN 参数 | ASN 不一致、MD5 密码错误、Router ID 冲突 |
| Established | 会话已建立,可交换路由 | 正常状态 |
先确认能 ping 通对端,并测试 TCP 179 是否可达;再检查本机防火墙是否放行来自对端的 179 端口。
ping -c 4 203.0.113.1
nc -zv 203.0.113.1 179
ss -tnp | grep ':179'# iptables (Debian / Ubuntu)
iptables -I INPUT -p tcp -s 203.0.113.1 --dport 179 -j ACCEPT
# firewalld (CentOS / Rocky / AlmaLinux)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="203.0.113.1" port port="179" protocol="tcp" accept'
firewall-cmd --reload然后查看日志中的具体错误,例如 “Bad peer AS”(ASN 填错)、“Hold timer expired”(链路或防火墙问题)。修改配置后可重启单个会话:
journalctl -u bird -n 50 --no-pager
journalctl -u frr -n 50 --no-pager
birdc restart upstream1
vtysh -c "clear bgp ipv4 unicast 203.0.113.1 soft"检查导出过滤器是否放行该前缀、前缀是否有 IRR 路由对象和有效 ROA,以及上游是否已更新过滤列表。可以在公共 Looking Glass 中查询。
通常是 TCP 179 不通或对端尚未配置。请核对双方 IP、ASN、是否需要 multihop 以及 MD5 密码。
租用 IMIDC 的 IP 或 ASN 并在 IMIDC 服务器上广播时,可以通过工单提供您的 ASN、前缀和会话需求,由技术人员协助对接。
如仍无法解决,可提交工单联系 IMIDC 7×24 技术支持。