Linuxでネットワーク帯域を制限する総合ガイド

Linuxのシステム管理において、ネットワーク帯域制限は一般的な課題の1つです。特に高負荷環境や複数のサービスを共存させる必要がある場合、帯域制限の設定は欠かせません。この記事では、Linuxでネットワーク帯域を制限するための基本的な手法と具体的なコード、さらに応用例を紹介します。

目次

ネットワーク帯域制限の基礎知識

Linuxでのネットワーク帯域制限は、主に`tc`(Traffic Control)コマンドを用いて行われます。このコマンドは、データの送信速度や待ち行列(キュー)の長さなど、ネットワークトラフィックを制御するためのものです。

tcコマンドの基本構文

基本的には次のような構文で`tc`コマンドを使用します。

tc [操作] [オブジェクト] [設定オプション]  # 基本構文

帯域制限の目的

帯域制限は以下のようなケースで役立ちます。
– ネットワークの公平な利用
– 特定のアプリケーションやサービスの帯域を確保
– ネットワークの過負荷を防ぐ

基本的な帯域制限の設定方法

帯域制限の設定

以下は、`eth0`というインターフェースで出力帯域を1Mbpsに制限する例です。

tc qdisc add dev eth0 root tbf rate 1mbit latency 50ms burst 1540  # 出力帯域を1Mbpsに制限

応用例

特定のIPアドレスの帯域制限

特定のIPアドレスに対して帯域を制限することも可能です。

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.1.2/32 flowid 1:1  # 192.168.1.2の帯域制限

ポート番号による制限

特定のポート番号に対しても帯域制限が可能です。

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip sport 80 0xffff flowid 1:1  # 80番ポートの帯域制限

特定のサービスへの制限

例えば、HTTPやFTPなどのサービスに対して帯域制限をかけることもできます。

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 21 0xffff flowid 1:1  # FTPサービスの帯域制限

時間帯による制限

cronを用いて時間帯による帯域制限も設定可能です。

# 毎朝9時から12時まで帯域制限を解除するcron設定例
0 9 * * * tc qdisc del dev eth0 root
0 12 * * * tc qdisc add dev eth0 root tbf rate 1mbit latency 50ms burst 1540

帯域制限の一時停止と再開

一時停止と再開も簡単に行えます。

# 帯域制限の一時停止
tc qdisc del dev eth0 root

# 帯域制限の再開
tc qdisc add dev eth0 root tbf rate 1mbit latency 50ms burst 1540

まとめ

Linuxの`tc`コマンドを使ったネットワーク帯域制限は多くのシナリオで非常に便利です。基本的な使い方から応用例まで、この記事で解説した情報があれば、より効果的なネットワーク管理が行えるでしょう。

コメント

コメントする

目次