1. はじめに
Transit Gatewayを使うことで、BGPのroute情報を表示するだけでなく、BGPで広告される経路のfilteringが可能になった。
https://cloud.ibm.com/docs/transit-gateway?topic=transit-gateway-adding-prefix-filters&interface=ui&locale=en
主な特徴は以下の通り。
- Connectionごとの設定。Direct Link/VPC/Classicの全てでprefix filteringは利用できる。GRE Tunnelに対しては適用されない。
- どのprefixをTransit Gatewayに広告するかを制御する。(各リソースからTransit Gatewayへの広告をフィルタリングするための機能であり、Transit Gatewayから各リソースへの広告を制御する機能ではない)
- denylist形式/allowlist形式が選べる。
- prefix filterの順番は重要であり、最初に適合したruleが採用される。
- 他アカウントのVPCなどと接続する際には、他アカウント側での承認が実施される前にprefix filteringを設定しておくこともできる。例えば、事前にDenyAllを設定しておくことにより、Transit Gateway接続時に予期せぬ経路の広告をあらかじめ避けることができる。
- prefix filterはLE値/GE値と組み合わせることにより柔軟な記述が可能。
- Transit Gatewayあたりprefix filterを設定できるのは2 Connectionまで。
- 1 Connectionあたりのprefix filter ruleは10個まで。
- この辺りのquotaはdefault値とのこと。増やしたければcase by caseでCaseを起票して相談することになる。
2. Prefix Filterのルールについて
Cisco機器のip prefix-list
コマンドの形式に似ている。
(参考)https://www.infraexpert.com/study/routecontrol07.html
例1. 10.0.0.0/8
を指定した時。
以下の設定はデフォルトがDeny all
のため、"10.0.0.0/8"というprefixのみが許可対象になる(先頭ビットが「10.」に合致した上で、prefix長が/16のルート)。Classic Infrastructureのサブネットマスク長は26-30で構成されていることが多く、このprefixルールだとどのClassic Infrastructureのsubnetも適合しないため、Classic InfrastructureからのBGP広告は何も許可されていないのと同等になる。
例2. 10.0.0.0/8, GE=26, LE=28
を指定した時。
これだと、先頭ビットが「10.」に合致した上で、prefix長が/26, /27, /28のルートが許可対象となるため、
10.x.x.x/26
10.x.x.x/27
10.x.x.x/28
という形式のprefixが全て許可されるという意味になる。確かにClassic Infrastrutureからの/26, /27, /28のsubnetは以下のように広告されていることがわかる。