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