2026年5月24日
2026年5月24日
自分のIPアドレスをBGPで広告する方法(ASN・IRR・RPKIの準備からFRRoutingでの設定と確認まで)
自分が持つIPアドレスのブロックをインターネットに広告(アナウンス)するには、BGPの設定そのものよりも先に、AS番号とアドレスの割り当て、IRRへの経路情報の登録、RPKIのROA作成、上流ISPとの合意という準備が必要です。この記事では、その準備の流れと、LinuxのFRRoutingで自分のプレフィックスだけを安全に広告する設定例、広告できたかを外から確かめる方法までを説明します。
BGPで「IPを広告する」とはどういうことか
インターネットは、AS(自律システム)と呼ばれるネットワークの集まりです。各ASはBGPで「このアドレスのブロックには自分を経由すれば届く」という経路情報を隣のASに伝え、それが世界中に伝わることで、他のネットワークから自分のアドレス宛ての通信が届くようになります。この経路情報を出すことを「広告」や「アナウンス」と呼びます。
通常のVPSやクラウドの利用者は、事業者が持つアドレスを借りていて、広告は事業者が行っています。自分で広告が必要になるのは、次のような場合です。
- 自社でアドレスを保有し、複数の上流ISPに接続して冗長化(マルチホーム)したい
- データセンターを移っても同じIPアドレスを使い続けたい
- 同じアドレスを複数拠点から広告するエニーキャスト構成を組みたい
- 保有するアドレスをクラウドに持ち込んで使いたい(AWSのBYOIPなど)
BGPの近隣(ピア)の張り方そのものを検証環境で試すだけなら、プライベートAS番号とプライベートアドレスで練習できます。この記事は、実際のインターネットに広告する場面を想定しています。
広告の前に準備するもの
1. AS番号とIPアドレスの割り当て
広告には、自分のAS番号(ASN)と、広告するアドレスブロックが必要です。日本ではJPNICやAPNIC、またはその指定事業者を通じて割り当てを受けるのが一般的です。申請要件や手続きは変わることがあるので、各組織の最新の案内を確認してください(2026年10月現在)。
上流ISPのASの中で、ISPから借りたアドレスを自分のASから広告させてもらう形もあります。その場合は、ISPから「このブロックを自分のASから広告してよい」という許可(LOAと呼ばれる書面など)をもらいます。
アドレスの大きさにも注意が必要です。細かすぎる経路は多くのネットワークでフィルタされるため、IPv4では /24、IPv6では /48 より細かいプレフィックスは広く伝わらないのが一般的な運用です。プレフィックス長の読み方に不安があれば、CIDR表記を先に確認しておくと設定ミスを減らせます。
2. IRRへの経路オブジェクト登録
IRR(Internet Routing Registry)は、「どのASがどのプレフィックスを広告するか」を登録しておくデータベースです。多くの上流ISPは、IRRの登録内容をもとに受け入れる経路のフィルタを作ります。JPIRRやRADB、各RIRのIRRなどに、プレフィックスと起点AS(origin)を示す route オブジェクト(IPv6は route6)を登録します。どのIRRを参照するかはISPごとに違うので、事前に確認します。
3. RPKIのROA作成
RPKIは、アドレスの保有者が「このプレフィックスはこのASから広告してよい」と電子署名付きで宣言する仕組みで、その宣言をROAと呼びます。経路の起点を検証(ROV)して、ROAと矛盾する経路を捨てるネットワークが増えています。ROAが無い経路は「未検証」として扱われることが多い一方、内容が間違ったROAがあると経路が捨てられることがあります。ROAには許可する最大プレフィックス長(maxLength)も設定するので、広告する長さと一致しているかを確認してください。
4. 上流ISPとの合意
上流ISPに、自分のASN、広告するプレフィックス、ピアに使うIPアドレス、受け取りたい経路(フルルートかデフォルトルートのみか)を伝えて、BGPセッションの設定を依頼します。BGPセッションを提供するVPS事業者もあり、その場合は事業者の申請手順に従います。
FRRoutingでの設定例
ここではLinux上のFRRoutingで、上流1社とeBGPのセッションを張り、自分のプレフィックスだけを広告する例を示します。以下のAS番号とアドレスはすべてドキュメント用に予約された値です。自分のASN(64496の部分)、上流のASN(64511)、ピアアドレス、プレフィックスを実際の値に置き換えてください。
! /etc/frr/frr.conf の例(bgpd を有効にしておく)
!
! 広告したいプレフィックスをルーティングテーブルに載せる
ip route 198.51.100.0/24 blackhole
!
! 外に出してよいのは自分のプレフィックスだけ
ip prefix-list MY-PREFIXES seq 10 permit 198.51.100.0/24
! 上流から受け取るのはデフォルトルートだけ(フルルートを受けるなら変更)
ip prefix-list DEFAULT-ONLY seq 10 permit 0.0.0.0/0
!
route-map UPSTREAM-OUT permit 10
match ip address prefix-list MY-PREFIXES
!
route-map UPSTREAM-IN permit 10
match ip address prefix-list DEFAULT-ONLY
!
router bgp 64496
bgp router-id 192.0.2.10
neighbor 192.0.2.1 remote-as 64511
neighbor 192.0.2.1 description upstream-isp
!
address-family ipv4 unicast
network 198.51.100.0/24
neighbor 192.0.2.1 route-map UPSTREAM-IN in
neighbor 192.0.2.1 route-map UPSTREAM-OUT out
neighbor 192.0.2.1 maximum-prefix 10
exit-address-family
!
設定のポイントを順に説明します。
**network だけでは広告されない**:BGPの network 文は、同じプレフィックスがルーティングテーブルに存在するときに広告します。実際のサーバーやサブネットが別の経路で載っていない場合は、例のように blackhole の静的経路で載せておきます。より細かい経路が内部にあれば、そちらに転送されます。
出口フィルタは事故防止の要:上流から受け取った経路や、内部の経路をうっかり外に広告すると、他人のアドレスを横取りする「経路リーク」になり、広い範囲に障害を起こします。UPSTREAM-OUT のように、外に出してよいプレフィックスだけを許可するフィルタを入れてください。
ポリシーが無いと何も流れない:最近のFRRoutingは、eBGPセッションに入力・出力の両方のポリシーが設定されていないと経路を送受信しない動作が既定です(bgp ebgp-requires-policy)。「セッションは確立しているのに広告されない」ときは、まずroute-mapが両方向に設定されているかを確認します。動作はバージョンによって異なる可能性があるので、使っているバージョンのドキュメントで確認してください。
受信経路数の上限:maximum-prefix は、相手から想定以上の経路が送られてきたときにセッションを止める安全装置です。デフォルトルートのみなら小さな値、フルルートを受けるなら現在の経路数に余裕を持たせた値にします。
設定の反映前には、現在の設定ファイルのバックアップを取り、上流ISPと作業時間を合わせておくと、問題が起きたときにすぐ連絡が取れます。
広告できたかを確認する
ルーター側での確認
# セッションの状態と、受信・送信している経路数
sudo vtysh -c "show bgp summary"
# 上流に実際に送っている経路
sudo vtysh -c "show bgp ipv4 unicast neighbors 192.0.2.1 advertised-routes"
# 自分のプレフィックスがBGPテーブルにあるか
sudo vtysh -c "show bgp ipv4 unicast 198.51.100.0/24"
show bgp summary でピアの状態欄が Established ではなく Active や Connect のまま止まっている場合は、ピアアドレスやAS番号の食い違い、TCP 179番ポートを遮るファイアウォールを疑います。advertised-routes に自分のプレフィックスが出ていなければ、ルーティングテーブルに載っているかと出口フィルタを確認します。
外部からの確認
ルーター上で送れていても、上流がフィルタで捨てていれば世界には伝わりません。外から見えているかは、ISPやIXが公開しているルッキンググラス、RIPEstat、Hurricane ElectricのBGP Toolkitなどの公開サービスで、自分のプレフィックスと起点ASを検索して確認します(各サービスの画面や提供内容は変わることがあります)。伝わっていないときは、IRRの登録内容とROAが広告内容と一致しているかを見直し、上流ISPにフィルタの更新状況を問い合わせます。
最後に、別のネットワークから自分のアドレスに対してtracerouteを実行し、上流ISPを経由して届くかを確認すると、経路が実際に使われていることまで確かめられます。
運用で気をつけること
- 広告の取り下げ:広告をやめるときは、
network文を削除するか出口フィルタから外すと、相手に取り下げ(withdraw)が伝わります。データセンター移転などでは、新しい拠点の広告を始めて通信が移ったことを確認してから、古い拠点の広告を止めます。 - 登録情報の更新:上流を変えたり、プレフィックスを分割したりしたら、IRRとROAも合わせて更新します。登録と実際の広告がずれると、気づかないうちに一部のネットワークから届かなくなります。
- 運用の指針:BGPの運用上の推奨事項はRFC 7454にまとまっていて、経路の安全性向上を目指す取り組みとしてMANRSもあります。フィルタ設計の参考になります。
まとめ
- IPアドレスをBGPで広告するには、ASNとアドレスの割り当て、IRRへの経路登録、RPKIのROA作成、上流ISPとの合意を先にそろえます。
- FRRoutingでは
network文に加え、対象プレフィックスをルーティングテーブルに載せ、入出力両方のroute-mapを設定します。出口フィルタは経路リークを防ぐ要です。 - 広告できたかは、ルーター上の
advertised-routesと、外部のルッキンググラスやRIPEstatの両方で確認します。 - 上流の変更やプレフィックスの分割のたびに、IRRとROAを広告内容と一致させておきます。