Linuxでのネットワーク帯域幅の使用を制限する(指定プログラムと指定ネットワークカードのトラフィックを制限する)

2834 ワード

本稿では、Linuxでネットワークトラフィックレートを制限する2つの異なる方法について説明します.
Linuxで1つのアプリケーションのレートを制限してネットワークトラフィックレートを制限する1つの方法は、
trickleのコマンドラインツール.プログラムの実行時に、速度制限socketライブラリを事前にロードする方法により、trickleコマンドで特定のプログラムのトラフィックを変更できます.trickleコマンドには、ユーザースペースでのみ実行できる機能があります.これは、root権限を必要とせずにプログラムの帯域幅の使用を制限できることを意味します.trickleプログラムを使用してプログラムの帯域幅を制御するには、このプログラムは非静的リンクライブラリのソケットインタフェースを使用する必要があります.帯域幅制御機能を内蔵していないプログラムにレート制限を加えたい場合は、trickleが役立ちます.
Ubuntu、Debianおよびその派生リリースにtrickleをインストールします.
$ sudo apt-get install trickle
FdoraまたはCentOS/RHEL(EPELソフトウェアウェアハウス付き):
$ sudo yum install trickle

trickleの基本的な使い方は以下の通りです.trickleコマンド(およびレートパラメータ)を実行したいコマンドの前に簡単に置くだけです.
これにより、ダウンロードおよびアップロード速度を特定の値(KBytes/s単位)に限定することができる.
たとえば、scpセッションの最大アップロード帯域幅を100 KB/sに設定します.
$ trickle -d  -u  
カスタムイニシエータを作成することで、次のコマンドを使用してFirefoxブラウザの最大ダウンロードレート(たとえば、300 KB/s)を設定できます.
$ trickle -u 100 scp backup.tgz [email protected]:/home/wslu
最後に、trickleは、trickleによって起動され、実行中のすべてのプログラムの合計帯域幅を制限するデーモンプロセスモードで実行することもできる.trickleをデーモンとして起動します(trickledなど):
trickle -d 300 firefox %u
trickledデーモンがバックグラウンドで実行されると、trickleコマンドで他のプログラムを起動できます.trickleでプログラムを起動すると、このプログラムの最大ダウンロードレートは1000 KB/sになります.trickleで別のプログラムを起動すると、各プログラムの(ダウンロード)レートの限界は500 KB/sに制限されます.
Linuxで1つのネットワークインタフェースのレートを制限するもう1つの帯域幅リソースを制御する方法は、各インタフェースで帯域幅を制限することです.これは、ネットワーク接続の上り帯域幅を他の人と共有する際に特に実用的です.他と同じように、Linuxにはあなたのためにこのことをするツールがあります.
wondershaperはこれをやったのです.
wondershaperは実際にはshellスクリプトであり、使用されています.
tcはトラフィック調整コマンドを定義し,QoSを用いて特定のネットワークインタフェースを処理する.
外発流量は異なる優先度のキューに配置することによって、伝出流量速度を制限する目的を達成する.一方、転送トラフィックは、パケットを失うことによってレート制限の目的を達成する.
実際、wondershaperの既定の目標は、1つのインタフェースに対して帯域幅の上限を増やすだけではありません.一括ダウンロードまたはアップロードが進行中である場合、wondershaperはSSHのようなインタラクティブなセッションの低遅延を維持しようとする.同様に、一括アップロード(Dropboxの同期など)を制御してダウンロードが「窒息」しないようにし、逆も同様です.
Ubuntu Debianおよびその派生リリースにwondershaperをインストールします.
trickle -d 300 firefox %u
FdoraまたはCentOS/RHEL(EPELソフトウェアウェアハウス付き)にwondershaperをインストールします.
sudo apt-get install wondershaper

wondershaperの基本的な使用は以下の通りです.
sudo yum install wondershaper
例として、eth 0の最大ダウンロード/アップロード帯域幅をそれぞれ1000 Kbit/sと500 Kbit/sに設定する.
$ sudo wondershaper   

次のコマンドを実行して速度制限を解消することもできます.
sudo wondershaper eth0 1000 500

wondershaperの動作原理に興味がある場合は、shellスクリプトソースファイル(/sbin/wondershaper)を読むことができます.
本稿では,Linuxデスクトップ環境において,各アプリケーションまたは各インタフェースの帯域幅使用をどのように制御するかを達成するための2つの異なる方法を紹介した.これらのツールの使用は簡単で、ユーザーにトラフィックを調整または制限するための迅速かつ容易な方法を提供しています.Linuxでレート制御を行う方法をもっと知りたい方は、the Linux bibleを参照してください.