開始輸入,可搜尋發票、服務、域名、工單,以及 更多...
在獨立伺服器上自行廣播 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 技術支援。