ESC

Start typing to search across invoices, services, domains, tickets, and more...

Search... Ctrl+K
IP・ASN

Linux で BGP セッション状態を確認する方法:BIRD 2・FRRouting と Idle/Active/Established の意味

5 ステップ 8 分で読めます 963 回閲覧 80
目次

専用サーバーから自社の 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 を使用します。

ステップ1:BIRD 2 または FRRouting をインストール

未導入の場合は、以下のどちらかをインストールします。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 FRRouting

ステップ2:birdc で BIRD の BGP セッション状態を確認

birdc 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 count
Name       Proto      Table      State  Since         Info
device1    Device     ---        up     2026-10-01
upstream1  BGP        ---        up     2026-10-01    Established

ステップ3:vtysh で FRR の BGP セッション状態を確認

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-family

ステップ4:主な BGP セッション状態の意味

BIRD と 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接続を試みていない、またはリセット後の待機中設定ミス、ネイバーの管理的停止、エラー後のバックオフ
ConnectTCP 接続を確立中ピアがまだ応答していない
ActiveTCP 接続に失敗し再試行中IP 到達不可、TCP 179 がブロック、ピア側未設定
OpenSent / OpenConfirmTCP は確立、OPEN パラメータを交換中ASN 不一致、MD5 パスワード誤り、ルーター ID 重複
Establishedセッション確立、経路交換可能正常

ステップ5:BGP セッションが 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"
セッションのクリアや再起動は一時的な経路撤回を伴います。できるだけ soft リセットを使い、ピーク時間帯を避けてください。

よくある質問

Established なのにインターネットからプレフィックスが見えない

エクスポートフィルターでプレフィックスが許可されているか、IRR の route オブジェクトと有効な ROA があるか、上流がフィルターを更新済みかを確認し、公開 Looking Glass で検証してください。

Active と Idle を繰り返す

多くは TCP 179 に到達できないか、ピア側が未設定です。双方の IP、ASN、multihop の要否、MD5 パスワードを再確認してください。

IMIDC で BGP セッションの設定を手伝ってもらえますか?

IMIDC から IP や ASN をレンタルし IMIDC のサーバーで広報する場合は、ASN、プレフィックス、セッション要件をチケットでお知らせいただければエンジニアが対応します。

解決しない場合は、チケットを送信して IMIDC の 24 時間 365 日サポートにお問い合わせください。

この回答はお役に立ちましたか?

関連チュートリアル