症状
サービスアクセスの問題:サービスの応答時間が大幅に増加し、リクエストのタイムアウトやサービスの利用不可につながります。
監視アラート:ネットワーク帯域幅の使用量が事前に設定したアラートしきい値を超えたことを知らせるショートメッセージまたはメールアラートを受信します。
原因
悪意のあるプログラムまたはプロセス:インスタンスがマイニングプログラムやトロイの木馬に感染している、または DDoS ボットネットの一部として使用されています。これらの悪意のあるプログラムは、大量の異常なネットワークトラフィックを生成します。
ネットワーク攻撃:DDoS 攻撃やブルートフォース攻撃などの悪意のある攻撃がインスタンスのパブリックポートを標的とし、無効なリクエストでインバウンド帯域幅を飽和させます。
インスタンスのネットワーク仕様の不足:ビジネスの成長に伴い、インスタンスの帯域幅仕様が通常のサービストラフィックを処理できなくなり、パフォーマンスボトルネックが生じます。
ソリューション
まず、sar ツールを使用して高トラフィックのネットワークインターフェースカード (NIC) を特定します。次に、iftop ツールを使用して帯域幅を消費しているピア IP アドレスを特定するか、nethogs ツールを使用して高トラフィックのプロセスを特定します。最後に、特定されたプロセスと IP アドレスに基づいて適切な措置を講じます。
ステップ 1: 高トラフィックのネットワークインターフェースカードの特定
sar ツールを使用して高トラフィックの NIC を特定し、調査範囲を絞り込みます。
レスキュー接続を使用して Simple Application Server にログインします。
Simple Application Server コンソールの [サーバー] ページ に移動します。
サーバーカードで、[リモート接続] をクリックします。ダイアログボックスの [レスキュー接続] セクションで、[今すぐログイン] をクリックします。ユーザー名とパスワードを入力して Simple Application Server にログインします。
ネットワークインターフェースの統計情報を収集します。
# -n DEV: ネットワークデバイスの統計情報を報告します # 1 5: 1 秒ごとに 1 回、合計 5 回サンプリングします sudo sar -n DEV 1 5高トラフィックの NIC を特定します。
AverageセクションのtxkB/sの値に注目します。値を比較して、最も高い値を持つIFACE(NIC 名) を見つけます。rxkB/sは、キロバイト/秒単位の平均アウトバウンド帯域幅を表します。
この例では、
eth0NIC のtxkB/sの値が最も高いため、高トラフィックの NIC として特定されます。
ステップ 2: 高トラフィック問題の分析と解決
NIC のトラフィックを分析します。
iftop:接続の観点から NIC トラフィックをモニターします。このツールは、インスタンスとの間で最もトラフィックの多い IP アドレスとポートを特定するのに役立ちます。Web サービスの場合、
iftopを使用して高トラフィックの IP アドレスを特定し、次にlogwatchなどのツールを使用して Web ログを分析し、トラフィックが正当なものかどうかを判断します。nethogs:プロセスの観点から NIC トラフィックをモニターします。このツールは、最も多くのネットワーク帯域幅を消費しているプロセスを特定するのに役立ちます。
iftop ツール
iftopツールをインストールします。Alibaba Cloud Linux および CentOS の場合:
sudo yum install -y epel-release sudo yum install -y iftopUbuntu および Debian の場合:
sudo apt update sudo apt install -y iftop
高トラフィックの NIC をモニターします。
<IFACE>をステップ 1 で特定した高トラフィックの NIC 名に置き換えます。# -i <IFACE>: モニター対象の NIC を <IFACE> として指定します # -P: ポート番号 (Port) を表示します sudo iftop -i <IFACE> -Pたとえば、高トラフィックの NIC が
eth0の場合、sudo iftop -i eth0 -Pを実行します。NIC トラフィックを分析して、最も帯域幅を消費しているピア IP アドレスを見つけます。

リアルタイムのトラフィック情報は降順でソートされます。
=>記号は、ご利用のインスタンスからピア IP アドレスへのアウトバウンドデータレートを示します。この例では、過去 2 秒間のローカルインスタンスから IP アドレス140.205.11.xへの平均アウトバウンドトラフィックは4.32Mb/sです。qを入力してiftopツールを終了します。ポートに関連付けられているプロセスを表示します。
<HIGH_TRAFFIC_PEER_IP>を前の手順で見つけたピア IP アドレスに置き換えます。sudo netstat -antp | grep <帯域幅を消費するピア IP アドレス>出力例:

この例では、ローカル IP アドレスは
172.16.0.xで、ピア IP アドレスは140.205.11.xです。対応するプロセスはnginx: workerで、プロセス ID (PID) は2282です。
nethogs ツール
例
nethogsツールをインストールします。Alibaba Cloud Linux および CentOS の場合:
sudo yum install -y epel-release sudo yum install -y nethogsUbuntu および Debian の場合:
sudo apt update sudo apt install -y nethogs
高トラフィックの NIC をモニターします。
<IFACE>をステップ 1 で特定した高トラフィックの NIC 名に置き換えます。# デフォルトの監視間隔は 1 秒です。-d パラメーターを使用して監視間隔を指定できます。 sudo nethogs <IFACE>たとえば、高トラフィックの NIC が
eth0の場合、sudo nethogs eth0を実行します。NIC トラフィックを分析します。

SENT列は、ご利用のインスタンスがデータを送信しているレートを示します。この例では、最も多くのトラフィックを消費しているプロセスはnginx: worker processで、アウトバウンドトラフィックレートは約 696 KB/s、プロセス ID (PID) は2282です。qを入力してツールを終了します。
プロセスまたはピア IP アドレスに基づいてソリューションを選択します。
特定されたプロセス (たとえば、wget や curl などのダウンロードツール、または不明なプログラム) が不審な動作を示している場合、または悪意のある IP アドレスと通信している場合:
異常なプロセスの停止:
sudo kill -15 <PID>を実行して異常なプロセスを終了できます。<PID>を高トラフィックのプロセスの PID に置き換えます。重要プロセスを終了する前に、サービスの中断を避けるため、それが主要なビジネスプロセスではないことを確認してください。
悪意のある IP アドレスのブロック:ファイアウォールを設定して、悪意のある IP アドレスからのアクセスをブロックします。
悪意のあるプログラムのスキャンと削除:Security Center のウイルススキャン機能 (有料機能) を使用して、インスタンスのフルスキャンを実行し、検出されたウイルスをすべて削除します。
高トラフィックが通常のビジネスプロセスによって生成されている場合:
プログラムの最適化:ビジネスコードを確認し、不要なデータ転送の削減、キャッシュの追加、データの圧縮など、最適化の機会を探します。
レートの制限:ビジネスで許容される場合は、
iptablesなどのツールを使用して、特定の IP アドレスまたはポートのトラフィックレートを制限できます。これにより、単一のユーザーまたはサービスがすべての帯域幅を消費するのを防ぎます。
次のステップ
サーバーを Elastic Compute Service (ECS) インスタンスに置き換える場合は、データ移行の手順について、「Simple Application Server から ECS インスタンスへのデータ移行」をご参照ください。
継続的な分析のために、定期的にシステムメトリックを収集します。詳細については、「atop ツールを使用した Linux システムメトリックの監視」をご参照ください。
Anti-DDoS Origin または Anti-DDoS Pro and Anti-DDoS Premium を購入し、保護対象オブジェクトと緩和ポリシーを設定してセキュリティを強化できます。