ネットワーク負荷:iftop、nload、ss
マシンを通過するトラフィック量とその宛先の確認方法、回線が飽和状態のときに接続を保持しているプロセスの特定方法を説明します。
更新日 2026年8月23日
すべてのマシンの帯域幅は最大500 Mbpsです。ほとんどの場合これで十分ですが、チャネルが本来と異なる用途で占有されることがあります。他人のダウンロードボット、忘れられたファイル共有、感染したプロセスからのトラフィックなどです。以下では、「どれくらい」「どこへ」「誰が」という疑問に答える3つのツールを紹介します。
nload: 現在の通信量
apt install -y nload && nload
dnf install -y nload && nload
インターフェースごとの受信・送信トラフィックをグラフとセッションごとのカウンターで表示します。矢印キーでインターフェースを切り替え、q で終了します。チャネルが飽和しているかどうかを最も素早く判断できる方法です。
インストールせずに一度だけ実行する場合:
cat /proc/net/dev
vnstat -l # if vnstat is installed, shows a live counter
iftop: トラフィックの宛先
apt install -y iftop && iftop -nNP -i eth0
フラグ: -n はアドレスを解決しない、-N はポートを解決しない、-P はポートを表示する。2秒、10秒、40秒のバー付きで「自分のアドレス — リモートアドレス」のペアの一覧が表示されます。1行だけがすべてを消費している場合、送信元または宛先のアドレスが判明するので、それをブロックするかアプリケーションを詳しく調べるかを判断できます。
インターフェース名は ip -br a で確認します。通常は eth0 または ens18 です。
ss: 接続を保持しているのは誰か
ss はシステムに付属しているため、インストールは不要です。
ss -tulpn # which ports are listening and which processes
ss -tn state established # active connections
ss -tn state established | awk '{print $4}' | cut -d: -f1 | sort | uniq -c | sort -rn | head
最後のコマンドはアドレスごとに接続をカウントします。これにより、数百の接続を開いた単一のクライアントを特定できます。これはSSHのパスワード総当たり攻撃や、ウェブサイトへの初歩的な攻撃でよく見られる状況です。
ss -tulpn は、ポートが実際に外部にリッスンしているのか、それともlocalhostのみなのかを確認するのにも役立ちます。アドレス 127.0.0.1:5432 はマシン自身からのみ到達可能で、0.0.0.0:5432 はインターネット全体から到達可能です。
過去のグラフ
ライブツールは「夜間に何が起きたか」という疑問には答えられません。そのためには:
- パネルの「Overview」タブにあるトラフィックグラフ
/hosting/vds/m/<id>— 1時間、1日、1週間、1か月分。パネルのグラフを参照してください。 - マシン内の
vnstat— 日次および月次の統計:apt install -y vnstat、その後vnstat -dとvnstat -m。 - 履歴付きの秒単位のメトリクスが必要な場合は Netdata。
よくある間違い
- 誤ったインターフェースでiftopを監視する。
loではローカル通信しか見えず、実際のトラフィックは見逃します。 - 受信トラフィックが増加しただけで攻撃とみなす。 まず送信元が誰で、どのポートに到達しているかを確認してください。多くの場合、インデックスロボットか自身のバックアップです。
- アプリケーションレベルでポートを閉じる。 サービスが
0.0.0.0でリッスンしている場合、唯一信頼できる保護はフィルターです。ファイアウォールの記事を参考に設定し、公開が必要なものだけを残してください。 - 送信トラフィックを忘れる。 感染したマシンは通常受信ではなく送信を行います。サイトが静かなのに送信が急増している場合は、
ss -tnpでプロセスを確認する理由になります。
500 Mbpsの帯域幅は、マシン上のすべてのサービスで共有されます。1つのプロセスが全速力でダウンロードすると、サイトもSSHも遅くなります。バックグラウンドのダウンロードは制限してください。例えば
rsync --bwlimitやwget --limit-rateを使用します。