症状
サービスへのアクセスに関する問題: サービスの応答時間が大幅に増加し、リクエストがタイムアウトするか、サービスにアクセスできなくなる。
監視メトリクスの高さ: ECS コンソールまたは CloudMonitor で、ご利用のインスタンスのアウトバウンドインターネット帯域幅が継続的に 80 % を超え、帯域幅制限に近づいているか、達している。ネットワーク接続数が急激に増加している場合もある。
モニタリングアラート: ネットワーク帯域幅使用量が事前に設定されたアラートのしきい値を超えたことを知らせる SMS またはメールの通知を受信する。
原因
異常なプロセスまたは悪意のあるプログラム: インスタンスが暗号通貨マイニングプログラムやトロイの木馬に感染しているか、DDoS 攻撃におけるボットまたはゾンビマシンとして機能している。これらのプログラムは大量の異常なネットワークトラフィックを生成する。
ネットワーク攻撃: アプリケーションレイヤーの CC 攻撃、DDoS 攻撃、ブルートフォース攻撃などの悪意のあるアクセス試行が、インスタンスのパブリック向けポートを標的としている。これらの攻撃により、無効なリクエストでインバウンド帯域幅が飽和する可能性がある。
インスタンスのネットワーク仕様の不足: ビジネスの拡大に伴い、インスタンスに設定された帯域幅が通常のサービストラフィックに対応できず、ネットワークパフォーマンスのボトルネックが発生している。
ソリューション
まず、sar ツールを使用して異常なトラフィックを示す NIC を特定し、次に iftop ツール(帯域幅を消費しているピア IP アドレスを特定)または nethogs ツール(高トラフィックを生成しているプロセスを特定)を使用して NIC のトラフィックを分析し、最後にプロセスおよび IP アドレスの性質に基づいて適切な対処を行います。
ステップ 1: 高トラフィックの NIC を特定する
sar ツールを使用して高トラフィックの NIC を特定し、トラブルシューティング対象を絞り込みます。
VNC 接続を使用して ECS インスタンスにログインします。
ECS コンソール - インスタンス に移動します。上部ナビゲーションバーで、対象のリージョンとリソースグループを選択します。
対象インスタンスの詳細ページに移動します。接続 をクリックし、VNC を選択します。ユーザー名とパスワードを入力して、ECS インスタンスにログインします。
ネットワークインターフェースの統計情報を収集します。
# -n DEV: ネットワークデバイスの統計情報をレポート # 1 5: 1 秒ごとにサンプリングし、合計 5 回実行 sudo sar -n DEV 1 5高トラフィックの NIC を特定します。
txkB/s(平均アウトバウンド帯域幅)のAverage値に注目します。値を比較して、最も高い値を持つIFACE(NIC 名)を特定します。rxkB/sは平均インバウンド帯域幅を表します。
この例では、
eth0NIC のtxkB/sが最も高いため、eth0が高トラフィックの NIC です。
ステップ 2: 高トラフィックの分析と対処
NIC のトラフィックを分析します。
iftop: 接続の観点から NIC トラフィックをモニターし、ローカルマシンと最も多くのトラフィックを生成している IP アドレスおよびポートを特定できます。Web サービスでは、
iftopを使用して高トラフィックの IP アドレスを特定し、logwatchなどのツールを使用して Web ログを分析し、トラフィックのコンプライアンスを判断できます。nethogs: プロセス単位で NIC トラフィックをモニターし、ネットワーク帯域幅を最も多く消費しているプロセスを特定します。
Iftop
iftopツールをインストールします。Alibaba Cloud Linux および CentOS システムの場合:
sudo yum install -y iftopUbuntu および Debian システムの場合:
sudo apt update sudo apt install -y iftop
高トラフィックの NIC をモニターします。
<IFACE>は、ステップ 1 で特定した高トラフィックの NIC 名に置き換えてください。# -i <IFACE>: モニター対象の NIC を <IFACE> に指定 # -P: ポート番号を表示 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インターフェイスを終了します。ポートに対応するプロセスを確認します。
前のステップで取得した
<帯域幅を消費しているピア IP アドレス>を使用できます。sudo netstat -antp | grep <PEER_IP_ADDRESS>出力例:

この例では、ローカル IP アドレスは
172.16.0.x、ピア IP アドレスは140.205.11.x、対応するプロセスはnginx: worker、PID は2282です。
Nethogs
例
nethogs ツールをインストールします。
Alibaba Cloud Linux および CentOS システムの場合:
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はローカルマシンからピア IP アドレス(受信側)への送信レートを示します。この例では、最もトラフィック使用量が高いプロセスはnginx: worker processです。アウトバウンドトラフィックは約 696 KB/s で、プロセス ID は2282です。qを押してツールのインタラクティブなインターフェイスを終了します。
プロセスまたはピア IP アドレスに基づいて対処方法を選択します。
特定されたプロセス(wget や curl などのダウンロードツール、または不明なプログラム)が不審な動作を示している場合、または悪意のあるピア IP アドレスと通信している場合:
異常なプロセスを終了する:
sudo kill -15 <PID>コマンドを実行します。<PID>は、特定された高トラフィックプロセスの PID に置き換えてください。重要プロセスを終了する前に、それが重大なビジネスプロセスでないことを確認し、サービスの中断を回避してください。
悪意のある IP アドレスをブロックする: セキュリティグループルール を使用して、既知の悪意のある IP アドレスをブロックします。アプリケーションレイヤーの CC 攻撃でソース IP アドレスが広範囲に分散している場合は、セキュリティグループルールによる保護効果が限定的です。このような場合は、専用の保護のために Web Application Firewall (WAF) を導入することを推奨します。詳細については、「CC 攻撃に対する防御のために ECS インスタンスを WAF に追加する」をご参照ください。
悪意のあるプログラムをスキャンして削除する: Security Center の ウイルス検出および削除 機能を有効にして、インスタンスをフルスキャンし、検出された悪意のあるプログラムを削除します。
高頻度の DDoS 攻撃への対応: 高頻度の DDoS または CC 攻撃中、ピークトラフィックが Anti-DDoS Origin のブラックホールしきい値 を超える可能性があります。これにより、クラウドプロダクトがブラックホール状態になり、アクセス不能になります。このようなシナリオでは、継続的な可用性を確保するために Anti-DDoS Pro and Anti-DDoS Premium を有効にする必要があります。
正当なビジネスプロセスが高トラフィックの原因となっている場合は、通常のビジネス需要によるものと考えられます:
帯域幅をスペックアップする: インスタンスの現在の帯域幅がボトルネックとなっています。インスタンスの帯域幅をスペックアップ してください。
アプリケーションを最適化する: 不要なデータ転送を削減する、キャッシュを追加する、データを圧縮するなど、アプリケーションコードに適用可能な最適化がないか確認します。
レート制限を実施する: サービスが許容する場合、
iptablesなどのツールを使用して、特定の IP アドレスまたはポートのトラフィックレートを制限し、単一のユーザーまたはサービスが利用可能な帯域幅をすべて消費しないようにします。
帯域幅を消費している不審なプロセスが見つからないにもかかわらず、全体的な使用量が依然として高い場合は、総トラフィック量がインスタンスのネットワーク容量を超えている可能性があります。インスタンスの帯域幅をスペックアップ してください。
次のステップ
継続的な分析のために、定期的にシステムメトリクスを収集します。詳細については、「atop ツールを使用して Linux システムメトリクスをモニターする」をご参照ください。
インスタンスのモニタリングとアラート を設定して、今後のリスクや異常についての通知を受信します。