IPsecラボで二つの経路台帳を保つ:アンダーレイと保護対象
台帳は二つ。一つはピアに到達し、もう一つはプライベートプレフィックスを運ぶ。両方を追跡し、再配布は近道ではなくポリシーの判断として扱う。
IPsecラボでは、パケットがピアの外部アドレスにどう到達するかと、そのピアの背後のプライベートネットワークにどう到達するかという二つの問いが絡み合う。異なるルーティングプロセスが答え、異なる症状で失敗するため、両者は別々の台帳に属する。アンダーレイ台帳には外部エンドポイントとそこへ到達する次ホップを記す。オーバーレイ台帳には保護対象プレフィックス、そのゲートウェイ、トンネルを通る意図した経路を記す。ラボの混乱の多くは、一方の台帳に正当に存在する経路を、もう一方の証拠として読むことから生じる。
二つの台帳、二つの問い
ラボが小さいうちは台帳を手で維持できるほど短く保て、まさにそのときが最も役に立つ。二つの列、つまり項目が何かと、どう到達するかで足りる。
| Ledger | What it lists |
|---|---|
| Underlay | Each gateway's external address and the next hop that reaches it |
| Protected | Each private prefix, its local gateway and its intended path through the tunnel |
両方向を書く。外側の台帳にあり戻りの台帳にないプレフィックスは、要求を運んで応答を落とすトンネルを生む。この半分だけ動く状態はラボで最もよくある結果で、ポリシーの問題と取り違えられやすい。
プロトコルより先に宛先を書く
プロトコルではなく宛先から始める。各ゲートウェイについて、外部アドレスとそこへ到達する次ホップを記録する。次に各プライベートプレフィックス、そのローカルゲートウェイ、トンネルを通るべき経路を記録する。
ルーティングプロトコルを選ぶ前にそうすれば、議論は誠実なまま保てる。設計は好みではなく要件を伴って現れる。どのプロトコルを動かすかという議論は、どの要件が本当に難しいかという問いになる。
静的か動的か、台帳ごとに決める
トランスポート側の静的ルーティングは、二つの端点と一つの次ホップしかなく収束させるものがないため、ラボではたいてい正しい。プレフィックスは演習とともに増減するため、プライベート側を動的にするのは妥当だ。トランスポート側で一つのルーティングプロトコル、プライベート側で別のものを動かしても両者間の再配布は義務づけられず、相互再配布をIPsecの前提とみなすのは、ラボが誰にも説明できない結果を出し始める地点だ。
二つの台帳を別々に決め、どちらが動的かを記す。両側に一つの答えは、二つの問いが本当に分けられなかったことをたいてい意味する。
再配布はポリシーの境界
経路が交差しなければならない場所では、名前付きプレフィックス、方向、メトリックの扱い、ループ防止を備えたポリシーとして交差させる。プレフィックスリストとルートマップがその四つを与え、タグは再配布された経路が元の文脈を失った後も識別可能に保つ。両者は交換できないため意味論を慎重に読む必要があり、マッチ節内のACL拒否は経路が一致せず評価が続くことを意味する一方、ルートマップの拒否シーケンスは経路の再配布をまったく止める。再配布のルートマップガイドは、そうした節とそれに伴う属性の変更を扱っている。
次に、得られたルーティングテーブルを二つの台帳と比較する。広い再配布の後に転送を始めたラボは、意図ではなく到達性を示したにすぎない。どちらの台帳にもないテーブル項目は、エクスポートが設計より広いことを意味し、その後の広告はすべてその曖昧さを受け継ぐ。
セキュリティの例をルーティングと同じくらい最新に保つ
弱いアルゴリズムや共有のデモ用秘密に頼る古い手順書は、歴史的な観察にすぎない。拡張するつもりのラボにそれらを写すことは、弱い既定値が本番まで生き残る道だ。プラットフォームが対応するポリシーを使い、ラボはチュートリアルより長く生きるため、試験したバージョンを記す。
承認済みのホスト間フローを一つ、その戻りトラフィック、そして保護範囲の外に留めなければならない宛先を一つ受け入れる。各結果とともに経路の出所と折衝されたセレクタを保存し、記録が、たまたま動いていた層ではなく証明された層を示すようにする。
何かが壊れたとき、台帳は開くべき層を教える。ピアへの到達性がなければトランスポート、内部経路がなければプライベート経路、一致するセレクタなしに存在する経路はポリシーだ。三つの文、一つの診断、推測なし。