AWSネットワークの「消えた郵便局」:ブラックホールルートの正体と解決のヒント
こんにちは!クラウドインフラの現場でパケットの旅路を追いかけているSREです。
AWSのVPC(Virtual Private Cloud)を触り始めた頃、皆さんは「ルートテーブル」の設定で悩んだことはありませんか?「設定したはずなのに、なぜか通信が繋がらない…」「ブラウザを叩いてもタイムアウトするだけ」。そんな時、ネットワークの裏側で何が起きているのか。
今回は、AWSネットワークにおいて最も静かで、かつ最も厄介なトラブルの一つ「ブラックホール(Blackhole)ルート」について、郵便配達の仕組みに例えて紐解いていきたいと思います。
—
1. そもそも「ルートテーブル」って何?
ルートテーブルを、「郵便配達員が持っている地図」だと想像してみてください。
VPCという広大な街の中で、宛先(IPアドレス)が書かれた手紙(パケット)を運ぶ時、配達員はルートテーブルという地図を見て、「この住所なら、まずはこっちの出口(インターネットゲートウェイ)へ行け!」と判断します。
通常、この地図には「目的地」と「出口(ターゲット)」がペアで書かれています。
- 宛先:
0.0.0.0/0(すべての場所) - 出口:
igw-12345678(インターネットゲートウェイ)
これが正常な状態です。しかし、この「出口」が何らかの理由で消滅してしまったらどうなるでしょうか?
—
2. 「ブラックホール」が生まれる瞬間
ここからが本題です。ある日、インフラの整理整頓のために、古いインターネットゲートウェイ(igw-12345678)を削除したとしましょう。
でも、ルートテーブルの中には、その「消えたゲートウェイ」を指し示している行がそのまま残ってしまいました。配達員は地図に従って手紙を届けようとしますが、出口であるはずのゲートウェイはもう存在しません。
郵便配達員は困り果てます。「地図にはここに行けと書いてあるのに、建物がない…」。結局、その手紙はどこにも届かず、虚空へと消えてしまいます。これが「ブラックホールルート」です。
ブラックホールが発生する主な原因
1. ターゲットの削除:インターネットゲートウェイ(IGW)やNATゲートウェイ(NATGW)を先に消してしまった。
2. ピアリング接続の解消:他のVPCと繋いでいた接続(VPCピアリング)を終了したのに、ルート設定だけが取り残された。
3. Transit Gatewayの無効化:拠点間をつなぐハブ(TGW)を削除した。
—
3. ブラックホールを見つけ出そう!
AWSのコンソール画面(Web管理画面)で見ると、ブラックホールルートは非常に分かりやすく表示されます。
ルートテーブルの設定画面を開き、「ステータス」の列を確認してください。通常は active と表示されていますが、ターゲットが消滅していると、赤文字で blackhole と表示されます。
もしコマンドラインからサクッと確認したい場合は、AWS CLIを使ってこんな風に調べることができます。
# 特定のルートテーブルの情報を取得するコマンド
aws ec2 describe-route-tables \
--route-table-ids rtb-0a1b2c3d4e5f6g7h8 \
--query "RouteTables[0].Routes[*]" \
--output table
# 出力結果の中で、Stateが 'blackhole' になっていないかチェック!
もし State が blackhole になっていたら、それが通信遮断の犯人です。
—
4. 解決策:壊れた地図を直す
ブラックホールを見つけたら、やることは一つ。「古い地図(ルート)を削除して、正しい宛先に書き直す」だけです。
CLIでの修正例
# 1. 壊れたルートを削除する(宛先を指定)
aws ec2 delete-route \
--route-table-id rtb-0a1b2c3d4e5f6g7h8 \
--destination-cidr-block 0.0.0.0/0
# 2. 新しいターゲットを指定してルートを再作成する
aws ec2 create-route \
--route-table-id rtb-0a1b2c3d4e5f6g7h8 \
--destination-cidr-block 0.0.0.0/0 \
--gateway-id igw-new98765432 # 新しいゲートウェイIDを指定
—
5. SREからのアドバイス:未然に防ぐために
ブラックホールは「消した後の片付け忘れ」が原因です。現場のSREとして、以下の運用ルールを推奨します。
- IaC(TerraformやCloudFormation)を活用する:手動でポチポチ設定変更をすると、どうしても消し忘れが発生します。「コードでインフラを管理する」ことで、リソースの削除とルートの削除をセットで自動化しましょう。
- 「依存関係」を意識する:ネットワーク機器を削除する際は、まずその機器を使っているルートテーブルを検索し、先にルートを無効化する手順を踏むクセをつけましょう。
—
おわりに
ブラックホールルートは、一見すると「なぜ繋がらないんだ!」とパニックになりやすいトラブルですが、仕組みさえ分かれば「あぁ、地図が古かったんだな」と冷静に対処できるようになります。
インフラの世界では、「見えないパケットを想像する力」が一番の武器になります。もし皆さんの環境で通信トラブルが起きたら、まずは郵便配達員(パケット)の地図(ルートテーブル)をそっと覗いてみてください。
それでは、素敵なクラウドライフを!また次回の記事でお会いしましょう。
コメント