Linuxでネットワークのトラフィックシェーピングを実施する方法

この記事では、Linuxでネットワークのトラフィックシェーピングを行う方法を詳細に解説します。具体的なコード例とその解説、応用例を含めています。

目次

トラフィックシェーピングとは

トラフィックシェーピングとは、ネットワークリソースの使用量を制御するためのテクニックです。大量のデータ通信が行われる環境で、特定のアプリケーションやサービスに帯域幅を確保するといったケースで活用されます。

なぜ必要なのか

例えば、ビデオストリーミングサービスとファイルダウンロードが同時に行われている場合、無制限にリソースが使われるとビデオの再生が途切れる可能性があります。トラフィックシェーピングにより、重要なサービスには確保された帯域幅を割り当てることができます。

Linuxでのトラフィックシェーピング

Linuxでのトラフィックシェーピングは、主に`tc`(Traffic Control)コマンドを使用して行います。

基本的な設定例

# eth0の送信帯域を1Mbit/sに設定
sudo tc qdisc add dev eth0 root tbf rate 1mbit burst 32kbit latency 400ms

このコードは、`eth0`というネットワークインターフェースの送信帯域を1Mbit/sに設定します。`burst`は許容する一時的な帯域の増加量、`latency`はキューの待機時間を意味します。

設定の確認方法

# tcコマンドで現在の設定を確認
sudo tc -s qdisc ls dev eth0

このコマンドで`eth0`の現在のトラフィックシェーピング設定を確認できます。

応用例

1. 特定のIPに帯域制限をかける

# 特定のIPアドレス(192.168.1.2)の帯域幅を制限
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.1.2/32 flowid 1:1

このコードで特定のIPアドレス(192.168.1.2)の帯域幅を制限できます。

2. 複数のサブネットに制限をかける

# 192.168.1.0/24と192.168.2.0/24に帯域制限をかける
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.1.0/24 flowid 1:1
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.2.0/24 flowid 1:1

3. 特定のポートに制限をかける

# 特定のポート(例:80番)に帯域制限をかける
sudo tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:1

4. 時間帯による制限

Linuxのcronジョブを使って、特定の時間帯だけ帯域制限を適用することも可能です。

5. 速度制限の動的調整

速度制限を変更する必要がある場合、スクリプトを用いて動的に調整することができます。

まとめ

Linuxでのトラフィックシェーピングは非常に柔軟な設定が可能です。`tc`コマンドを用いれば、多様なニーズに対応したネットワーク制御が行えます。特定の環境や要件に応じて、この記事で紹介した応用例を参考にしてください。

created by Rinker
オライリージャパン
¥3,080 (2024/09/07 11:30:01時点 Amazon調べ-詳細)

コメント

コメントする

目次