Start typing to search across invoices, services, domains, tickets, and more...
専用サーバーから自社の IP プレフィックスを広報する際、まずBGP セッションの状態を確認し、Established になっていることを確かめる必要があります。本記事では Linux 上の BIRD 2 と FRRouting(FRR)で BGP セッションを確認・検証する方法、Idle・Active・Established などの状態の意味、セッションが確立しない場合の切り分け手順を説明します。Debian/Ubuntu と CentOS/Rocky/AlmaLinux に対応しています。例ではローカル ASN 64500、上流ピア 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 Establishedshow 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 到達不可、TCP 179 がブロック、ピア側未設定 |
| OpenSent / OpenConfirm | TCP は確立、OPEN パラメータを交換中 | ASN 不一致、MD5 パスワード誤り、ルーター 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 の route オブジェクトと有効な ROA があるか、上流がフィルターを更新済みかを確認し、公開 Looking Glass で検証してください。
多くは TCP 179 に到達できないか、ピア側が未設定です。双方の IP、ASN、multihop の要否、MD5 パスワードを再確認してください。
IMIDC から IP や ASN をレンタルし IMIDC のサーバーで広報する場合は、ASN、プレフィックス、セッション要件をチケットでお知らせいただければエンジニアが対応します。
解決しない場合は、チケットを送信して IMIDC の 24 時間 365 日サポートにお問い合わせください。