iperf3コマンドでLinuxのネットワーク帯域幅を測定する方法|サーバー間のスループット確認と実践例も

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips, ネットワーク > iperf3コマンドでLinuxのネットワーク帯域幅を測定する方法|サーバー間のスループット確認と実践例も
「サーバー間のネットワークが遅い気がするけど、実際にどれくらいの速度が出ているのか分からない」
Linuxの現場で、こういった疑問は思いのほかよく出てきます。特にクラウド環境や複数拠点をまたぐ構成では、「ネットワークが原因なのか、アプリが原因なのか」の切り分けが難しいことが多い。

この記事では、Linuxサーバー間のネットワーク帯域幅を実測できる iperf3 コマンドの使い方を解説します。インストール手順から基本的なサーバー/クライアント構成、UDPテスト・並列ストリーム・双方向テストといった実務で役立つオプションまで、RHEL 9.4 / Ubuntu 24.04 LTS の両環境で動作確認済みの手順でご紹介します。

この記事のポイント

・iperf3 は1コマンドでTCP/UDP帯域幅をサーバー間で実測できる
・サーバー側で iperf3 -s、クライアント側で iperf3 -c を実行する
・-P オプションで並列ストリームを使うと実効スループットに近い値が得られる
・firewalld / UFW のポート開放を忘れると接続できないので注意


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

iperf3とは?なぜ使うのか

iperf3 は、2点間のネットワーク帯域幅をTCPまたはUDPで測定するオープンソースのネットワーク診断ツールです。もともとは大学の研究プロジェクトで開発され、現在はデータセンター・クラウドインフラの現場でも広く使われています。

「ping で応答があるから大丈夫」と思っている方は要注意です。ping が返ってきても、実際のデータ転送に使えるスループットは全く別の問題です。iperf3 を使えば、次のような状況を実測で確認できます。

・クラウド(AWS/GCP/Azure)の同一リージョン内サーバー間の実効帯域
・オンプレミスとVPN経由のクラウドをつないだ際の帯域劣化
・社内ネットワークの新旧スイッチ交換後の改善効果
・NASやiSCSIのネットワーク経路が細くなっていないかの確認

私がセミナーで受講生から質問を受けるシナリオのひとつに「バックアップが遅い」があります。こういったケースでも、iperf3 でネットワーク帯域を先に測定しておくと、ストレージ側の問題なのかネットワーク側の問題なのかを素早く切り分けられます。

インストール手順

1. RHEL 9 / AlmaLinux 9 / Rocky Linux 9

iperf3 は EPEL(Extra Packages for Enterprise Linux)リポジトリに含まれています。まず EPEL を有効化してからインストールします。

# EPELリポジトリを有効化 sudo dnf install -y epel-release # iperf3をインストール sudo dnf install -y iperf3 # バージョン確認 iperf3 --version

インストールが成功すると以下のような出力が得られます。

iperf 3.14 (cJSON 1.7.15) Linux 5.14.0-362.8.1.el9_3.x86_64 #1 SMP PREEMPT_DYNAMIC ... Optional features available: ...

2. Ubuntu 24.04 LTS

Ubuntu の場合は公式リポジトリに含まれているため、apt でそのままインストールできます。

sudo apt update sudo apt install -y iperf3 # バージョン確認 iperf3 --version

基本的な使い方:サーバー/クライアント構成

iperf3 は必ず「サーバー側」と「クライアント側」の2台で動かします。単一マシンだけでは測定できません。

1. サーバー側の起動(測定される側)

帯域を測定したい経路の「受信側」となるマシンで以下を実行します。

# iperf3サーバーを起動(デフォルトポート5201でリッスン) iperf3 -s # バックグラウンドで起動する場合 iperf3 -s -D # ポートを変更する場合(ファイアウォール設定と合わせること) iperf3 -s -p 5200

サーバーが起動すると次のように表示されます。

----------------------------------------------------------- Server listening on 5201 (test #1) -----------------------------------------------------------

2. クライアント側から接続して測定

「送信側」となるマシンから接続します。-c の後にサーバーのIPアドレスまたはホスト名を指定します。

# 基本的なTCP帯域測定(デフォルト10秒間) iperf3 -c 192.168.1.100 # 測定時間を30秒に変更 iperf3 -c 192.168.1.100 -t 30 # 結果をJSON形式で出力 iperf3 -c 192.168.1.100 --json

測定が完了すると以下のような結果が表示されます。

Connecting to host 192.168.1.100, port 5201 [ 5] local 192.168.1.50 port 52314 connected to 192.168.1.100 port 5201 [ ID] Interval Transfer Bitrate Retr Cwnd [ 5] 0.00-1.00 sec 112 MBytes 941 Mbits/sec 0 3.06 MBytes [ 5] 1.00-2.00 sec 112 MBytes 941 Mbits/sec 0 3.06 MBytes ... - - - - - - - - - - - - - - - - - - - - - - - - - [ ID] Interval Transfer Bitrate Retr [ 5] 0.00-10.00 sec 1.09 GBytes 937 Mbits/sec 0 sender [ 5] 0.00-10.00 sec 1.09 GBytes 936 Mbits/sec receiver

この例では、サーバー間で約937 Mbps(ほぼ1Gbpsのギガビット回線フルスピード)が出ています。

Bitrate (sender):クライアントが送信したスループット
Bitrate (receiver):サーバーが受信したスループット
Retr:TCP再送回数。0なら通信品質は良好
Cwnd:TCPの輻輳ウィンドウサイズ

ファイアウォールの設定(接続できない時の対処)

iperf3 を起動しても接続できない場合、ファイアウォールがポート 5201(デフォルト)をブロックしている可能性があります。

firewalld(RHEL系)の場合

# ポート5201/TCPを開放(測定中のみ一時的に許可する場合) sudo firewall-cmd --zone=public --add-port=5201/tcp --temporary # UDPテストも行う場合は追加 sudo firewall-cmd --zone=public --add-port=5201/udp --temporary # 現在の設定を確認 sudo firewall-cmd --list-all

測定が終わったら一時ルールは自動的に消えます。永続化させる場合は --permanent を付けて firewall-cmd --reload を実行してください。Linux ポート確認の全コマンドも参考に、使用中のポートを事前に確認しておくと安心です。

UFW(Ubuntu)の場合

# ポート5201を開放 sudo ufw allow 5201/tcp sudo ufw allow 5201/udp # 設定確認 sudo ufw status verbose

応用・実務Tips

1. 並列ストリームで実効スループットを測定する

デフォルトの1本のTCPストリームでは、実際のアプリケーション(ファイル転送・DBレプリケーション等)での多重接続環境を再現できません。-P オプションで並列ストリーム数を指定すると、より実態に近いスループットが測定できます。

# 4並列ストリームで測定 iperf3 -c 192.168.1.100 -P 4 # 8並列ストリームで測定(マルチコア環境向け) iperf3 -c 192.168.1.100 -P 8

4並列の場合、結果の最後に [SUM] 行として合計スループットが表示されます。

2. UDPで帯域とパケットロス率を測定する

UDP測定は、VoIP・動画ストリーミング・リアルタイム系アプリの帯域設計に役立ちます。

# UDP帯域測定(-b で帯域上限を指定。0なら無制限) iperf3 -c 192.168.1.100 -u -b 100M # 500Mbpsで測定する場合 iperf3 -c 192.168.1.100 -u -b 500M

UDP測定では以下の追加指標が得られます。

Jitter:パケット到着間隔のばらつき(msで表示、小さいほど良い)
Lost/Total Datagrams:パケットロス率(0%が理想)

3. 双方向同時測定(bidir)

通常の測定はクライアント→サーバーの一方向です。双方向同時の帯域を測定する場合は --bidir オプションを使います。

# 双方向同時測定 iperf3 -c 192.168.1.100 --bidir

フルダプレックスの実効帯域(送受信の合計)を確認したい場合や、NAT/ルーターの双方向処理性能を調べる際に使います。

4. TCPバッファサイズの調整

長距離・高遅延ネットワーク(東京-大阪間など)ではTCPのウィンドウサイズがボトルネックになることがあります。

# TCPウィンドウサイズを128MBに拡張して測定 iperf3 -c 192.168.1.100 -w 128M

デフォルトと拡張後の数値を比較することで、カーネルのTCPパラメータ調整が必要かどうかの判断材料になります。

トラブルシュート・エラー対処

「error - unable to connect to server: Connection refused」が出る

サーバー側で iperf3 -s が起動していないか、ポートが違います。

・サーバー側で iperf3 -s が実行されているか確認する
・ポート指定が一致しているか確認する(デフォルトは5201)
・ファイアウォールの設定を確認する(前述の firewalld/UFW の手順を参照)

「error - unable to connect to server: Connection timed out」が出る

ネットワーク経路の問題かファイアウォールによるドロップが原因です。

ping 192.168.1.100 でICMPは通るか確認する
telnet 192.168.1.100 5201 でポート疎通を確認する(通れば「Connected」と表示される)
・セキュリティグループ(AWSの場合)やネットワークACLで5201が許可されているか確認する

期待より大幅に低い帯域が出る

以下の原因が考えられます。

・NICのネゴシエーション速度を確認する(ethtool eth0 で Speed: の値を見る)
-P 4 など並列ストリームを増やして測定する(TCP1本では帯域を使い切れないことがある)
・測定中に sar -n DEV 1vmstat 1 でCPUがボトルネックになっていないか確認する
・QoS・帯域制限機能が経路上に設定されていないか確認する

サーバーとクライアントのバージョンが異なる場合

iperf3 はバージョン間の互換性が厳しく、バージョン差が大きいと接続に失敗することがあります。

# 両サーバーのバージョンを確認 iperf3 --version

バージョンが大きく異なる場合は、どちらかを同じバージョンに揃えることを推奨します。

本記事のまとめ

やりたいこと コマンド
サーバーを起動する iperf3 -s
TCP帯域測定(基本) iperf3 -c <サーバーIP>
測定時間を変更する iperf3 -c <サーバーIP> -t 30
並列ストリームで測定する iperf3 -c <サーバーIP> -P 4
UDP帯域・パケットロスを測定する iperf3 -c <サーバーIP> -u -b 100M
双方向同時測定する iperf3 -c <サーバーIP> --bidir
TCPウィンドウサイズを調整する iperf3 -c <サーバーIP> -w 128M
JSON形式で結果を出力する iperf3 -c <サーバーIP> --json
iperf3 はインストールから測定まで数分でできるシンプルなツールですが、使いこなすとネットワーク障害切り分けの精度が大きく変わります。「ネットワークが原因かもしれない」と思ったときの最初の一手として、ぜひ手順を覚えておいてください。

ポート確認の手順については Linux ポート確認の全コマンド もあわせてご確認ください。NTPによるサーバー時刻同期(ntpd 時刻同期設定)はログのタイムスタンプを正確に保つために、帯域測定のような精密な作業の前後で確認しておくことをおすすめします。

iperf3で帯域を測れたら、次はサーバー構築の全体像を学びませんか?

ネットワーク帯域を実測できるようになると、障害切り分けの精度が格段に上がります。その力を活かして、体系的にLinuxサーバー構築を学んでみませんか。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として20年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。