FOR LEARNERS学習中向け

Gネットワーク on AWS段2構成層運用

VPC でつながらないときの調べ方|Reachability Analyzer とフローログで順に切り分ける

VPC でつながらないときの調べ方|Reachability Analyzer とフローログで順に切り分ける

VPC の中で「つながらない」と言われたとき、SG を緩めたり NACL を触ったりして、たまたま通ったところで安心していませんか。原因が分からないまま通ると、不要な許可が残り、次に壊れたときも同じ迷い方をします。この記事は、仕組みの解説(VPC の通信が外に出る仕組み)を読んだ人が、原因を順番に絞り込む「運用の型」を身につけるためのものです。

この記事の結論

  • つながらない原因は、経路(ルート)・入口と出口の許可(SG と NACL)・宛先の待ち受けの 3 か所に分けられます。
  • まず Reachability Analyzer で、送信元から宛先までの設定上の経路を調べます。パケットは送らず、止めている部品を示してくれます。
  • 設定は正しいのに通らないときは、VPC フローログで ACCEPT と REJECT を見て、実際に届いたかを確かめます。
  • SG はステートフル、NACL はステートレスです。NACL では戻りの通信(エフェメラルポート)の許可も要ります。
  • 直したら同じ経路をもう一度分析して、通ることを確かめます。変更は 1 回に 1 つにします。

つながらないときは何を疑うか|経路・許可・宛先の 3 つに分ける

通信は、送信元を出てから宛先のアプリに届くまでに、いくつもの部品を通ります。「つながらない」はその全体の結果で、どこで止まったかまでは教えてくれません。そこで疑う場所を、次の 3 つに分けます。

分け方 見るもの 止まるときの例
経路 ルートテーブル、エンドポイントの関連付け 行き先のルートが無い、ルートテーブルに関連付けていない
許可 SG、NACL 必要なポートや送信元が許可されていない
宛先 アプリの待ち受け、OS 内の設定 そのポートで待ち受けていない

経路が無ければ、許可を直しても通りません。許可が閉じていれば、宛先のアプリが正常でも届きません。だから「経路 → 許可 → 宛先」の順に、手前から確かめます。

経路の例として、S3 のゲートウェイエンドポイントを作ったのに通信が従来の経路のままだった、という場面があります。ゲートウェイエンドポイントはルートテーブルごとに効くので、対象のサブネットのルートテーブルに関連付けていないと使われません。名前が引けない例もあります。インターフェイスエンドポイントでプライベート DNS を使うには、VPC の DNS 解決と DNS ホスト名の両方が有効でなければなりません。このように、設定した「つもり」と実際の状態がずれていることが原因になりやすいのです。

WHERE IT STOPS止まりうる6か所

つながらない原因は、経路・許可・宛先のどこかにある

  1. ルート

    行き先の登録があるか

  2. NACL(出)

    サブネットの出口

  3. SG(出)

    送信元の門

  4. SG(入)

    宛先の門

  5. NACL(入)

    宛先サブネットの入口

  6. アプリ

    待ち受けているか

出典: Amazon VPC ユーザーガイド / Reachability Analyzer ガイド

CHECK 1ここまでの確認

パケットを実際には送らず、設定を分析して、送信元から宛先までの経路上で通信を止めている部品を示す道具はどれ?

答えと解説

答え: 2. Reachability Analyzer

設定を静的に分析して阻害要因を示すのが Reachability Analyzer です。フローログは実際に流れた通信の記録なので、役割が違います。「Reachability Analyzer とは何か」を読み直してください。

Reachability Analyzer とは何か|パケットを送らずに経路を調べる道具

Reachability Analyzer は、送信元と宛先を指定して、その間の接続を設定から分析する VPC の機能です。実際にはパケットを送りません。到達できない場合は、SG、NACL、ルートテーブル、ロードバランサーなど、通信を止めている部品を特定して示します。

使い方の考え方は次のとおりです。

  • 送信元と宛先、プロトコルとポートを決めて、分析を 1 回実行する
  • 結果が「到達可能」なら、設定上は経路が通っている
  • 「到達不能」なら、止めている部品が示されるので、そこを直す

ここで大事なのは、これが設定の分析であることです。宛先のアプリが待ち受けていない、OS 内のファイアウォールが止めている、といった VPC の外側の事情は見えません。「到達可能」と出てもつながらないなら、原因は設定の外側にあると考えて、次の手段へ進みます。

料金は、分析 1 回ごとにかかります。金額は変わりうるので、AWS の公式の料金ページで確認してください。

CHECK 2ここまでの確認

フローログの記録で、通信が許可されたのか拒否されたのかを見分けるのは、どの項目?

答えと解説

答え: 1. action(ACCEPT / REJECT)

許可か拒否かの結果は action に入ります。protocol と srcport は通信の種類と送信元のポートで、結果ではありません。「フローログで何が分かるか」を読み直してください。

VPC フローログで何が分かるか|ACCEPT と REJECT の読み方と、見えないもの

VPC フローログは、ネットワークインターフェイスを出入りする IP 通信の記録です。出力先は CloudWatch Logs、S3、Data Firehose から選べます。記録は通信の経路の外で集められるので、通信の性能には影響しません。

1 件の記録には、送信元と宛先のアドレス、ポート、プロトコルなどに加えて、action という項目があります。値は次の 2 つです。

action 意味
ACCEPT 通信が受け入れられた
REJECT 通信が拒否された。SG や NACL が許可していない場合のほか、接続が閉じた後にパケットが届いた場合も含む

Reachability Analyzer が「設定の上でどうか」を見るのに対し、フローログは「実際に何が起きたか」を残します。つまり「届いたが拒否された」と「そもそも届いていない」を見分けられます。REJECT が出ていれば、通信は宛先側のネットワークまで来ていて、SG か NACL が止めています。記録が一切無いなら、経路の手前で止まっているか、そもそも送られていない可能性があります。

フローログに写らないもの

フローログはすべての IP 通信を記録するわけではありません。たとえば次の通信は記録されません。

  • Amazon の DNS サーバーへの通信(自前の DNS サーバーを使う場合は記録される)
  • インスタンスメタデータ(169.254.169.254)との通信
  • DHCP の通信
  • ARP の通信

「記録に出ない」ことが、そのまま「通信が無かった」ことを意味するとは限りません。また、記録はアドレスやポートなどのメタデータで、通信の中身までは見えません。中身を調べたいなら、通信そのものをコピーする別の仕組みが必要です。

TWO TOOLS設定を見る/通信を見る

先に設定を分析し、次に記録で裏を取る

Reachability Analyzer

設定を静的に見る

  • 分かること経路上で止めている部品
  • 分からないことアプリの待ち受け・OS 内の設定
  • 使う場面最初の切り分け・直した後の確認

VPC フローログ

実際の通信の記録

  • 分かることACCEPT / REJECT の結果
  • 分からないこと記録されない通信・中身
  • 使う場面設定が正しいのに通らないとき

CHECK 3ここまでの確認

行きの通信を許可しても、戻りの通信の許可を別に書かないと跳ね返されるのはどちら?

答えと解説

答え: 2. ネットワーク ACL

NACL はステートレスで、行きと戻りを別々に評価します。SG はステートフルなので、許可した通信の応答は自動で通ります。「SG と NACL のどちらが止めているか」を読み直してください。

SG と NACL のどちらが止めているか|ステートフルとステートレスの違いが出る場面

許可のどちらが止めているかを見分けるとき、一番効くのが戻りの通信の扱いの違いです。

  • SG はステートフル: 許可した通信の応答は、自動で通ります。
  • NACL はステートレス: 以前に送受信した通信の情報を持たないので、行きの通信を許可しても、戻りは自動では許可されません。戻りの通信も、ルールで明示的に許可する必要があります。

特に、クライアントとして外へ出ていく通信では、応答の宛先が 1024 以上の範囲のエフェメラルポートになります。NACL のインバウンドでこの範囲を許可していないと、行きは ACCEPT なのに、戻りが入口で REJECT になります。フローログで「外向きは ACCEPT、応答は REJECT」という組み合わせを見たら、NACL の戻りの許可を疑うのが筋です。

SG の側でも見るべき点があります。層をまたぐ通信では、IP アドレスではなく SG を送信元に指定して許可すると、インスタンスの入れ替わりで IP が変わっても許可が追随します。「この IP を許可したはずなのに」という食い違いを避けられます。

STATEFUL OR NOT戻りの通信の扱い

SG は戻りが自動で通る。NACL は戻りも許可が要る

戻りの通信(応答)

  • SGステートフル 戻りは自動で通る行きを許可すれば
  • NACLステートレス 通る戻りの許可を書けば
  • NACLステートレス 跳ね返る戻りの許可がないと

CHECK 4ここまでの確認

つながらないとき、設定を変える前に最初にやるのは?

答えと解説

答え: 2. 経路を分析して、止めている部品を特定する

当てずっぽうの変更は、本当の原因を隠し、ほかの通信まで通してしまいます。先に原因の部品を特定し、直したら再分析で確かめます。「調べる順番を手順にする」を読み直してください。

調べる順番を手順にする|分析 → 記録 → 宛先の確認 → 直して再分析

ここまでを 1 本の手順にします。

  1. 経路を分析する: Reachability Analyzer で、送信元から宛先、対象のポートまでを分析する。止めている部品が示されたら、それが第一候補。
  2. 設定上は通るなら、フローログを見る: 宛先側のネットワークインターフェイスの記録で、ACCEPT か REJECT かを見る。REJECT なら SG と NACL を、戻りの通信の扱いも含めて見る。
  3. ACCEPT なのにつながらないなら、宛先を見る: アプリがそのポートで待ち受けているか、OS 内のファイアウォールが止めていないかを確かめる。
  4. 1 つだけ直して、再分析する: 変更は 1 回に 1 つ。同じ経路をもう一度分析し、通ることを確かめる。

やってはいけないこと

  • 原因が分からないまま、複数の許可を一度に緩める
  • 通ったことだけを見て、何を直して通ったのかを残さない

当てずっぽうに複数を変えると、どの変更が効いたのか分からなくなり、不要な許可が残ります。1 つずつ直し、再分析で確かめれば、原因と対処が 1 対 1 で記録に残ります。

調べる準備を平時にしておく運用|フローログの保存先と料金の考え方

障害の最中にフローログを有効にしても、それ以前の通信は残っていません。つながらなくなってから「いつから」「どの通信が」を知りたいなら、記録は平時から取っておく必要があります。

ただし、記録した量に応じて保存先の料金がかかります。何を残すかは次の観点で決めます。

  • どのネットワークインターフェイス、サブネット、VPC を対象にするか
  • 保存先はどこか(すぐ検索したいなら CloudWatch Logs、長く安く残すなら S3 など)
  • いつまで残すか

保存期間と保存先の考え方は、ログの保存の設計で扱っています。また、複数の VPC をつなぐ構成では調べる範囲が広がります。その設計はネットワーク設計で扱います。

Cloudory 執筆者(AWS 認定 全冠)

「つながらない」と言われたら、まず設定の分析、次に実際の記録、最後に宛先、の順です。この順番を言葉で説明できれば、後輩や顧客にも調べ方を渡せます。

参照ソース

SCOREこの記事の確認テスト

0/4問 正解

各章の「ここまでの確認」に答えると、ここに集まります。結果はこの端末のブラウザにだけ残り、サーバには送りません。

PRACTICEこの記事の論点を練習問題で確かめる

この記事が扱うサービスの問題だけを続けて解けます。練習問題は Google でログインした人が使えます(練習問題の一覧)。

HAND IT OVER人に渡すなら

一言で説明するなら

荷物が届かないとき、宛先の住所・配送ルート・受付の通行証を順に確かめるのと同じです。まず地図で道を確かめ、次に配送記録で実際に届いたかを見ます。

前提を持たない人にそのまま渡せる記事です。「後輩に説明する」「顧客に理由を伝える」の材料として。

FAQよくある質問

Reachability Analyzer で「到達可能」と出たのにつながらないのはなぜ?

Reachability Analyzer は設定上の経路を分析する道具で、宛先のアプリが待ち受けていないことや、OS 内のファイアウォールの設定は見ません。設定上は通る場合は、フローログで実際の通信を確かめ、宛先のアプリと OS の状態の確認へ進みます。

フローログは常に有効にすべき?

記録した量に応じて、保存先の料金がかかります。何をどれだけ残すかは、ログの保存の設計で決めます。判断軸は log-hozon-sekkei の記事にまとめています。

SG と NACL のどちらから見る?

まず経路が通るかを確かめます。そのうえで、許可の範囲を絞って運用していることが多い SG から見て、必要なら NACL へ進みます。Reachability Analyzer を使えば、どちらが止めているかを先に示してもらえます。

次に何を学ぶ?

複数の VPC をつなぐ設計です。つなぎ方によって調べる範囲も増えるので、network-sekkei-pro の記事で全体像を確かめてください。

SAME TRACK同じ領域の記事

セキュリティグループとネットワーク ACL の違い|2つの門の仕組み
セキュリティグループとネットワーク ACL の違い|2つの門の仕組み 段1 入口仕組み
VPC とは何か|サブネット・ルートテーブル・ゲートウェイ・セキュリティグループと NACL の関係を1枚で
VPC とは何か|サブネット・ルートテーブル・ゲートウェイ・セキュリティグループと NACL の関係を1枚で 段1 入口とは
VPC の通信が外に出る仕組み|ルートテーブル・IGW・NAT ゲートウェイ・VPC エンドポイントの役割
VPC の通信が外に出る仕組み|ルートテーブル・IGW・NAT ゲートウェイ・VPC エンドポイントの役割 段2 構成仕組み