[概 要]
[対 策]
# wget
http://jaist.dl.sourceforge.net/sourceforge/cbqinit/cbq.init-v0.7.3 # mv cbq.init-v0.7.3 /etc/init.d/cbq.init (# sed -e "s/TC=\/sbin\/tc/TC=\/usr\/sbin\/tc/g" cbq.init-v0.7.3 > /etc/init.d/cbq.init) # chmod 755 /etc/init.d/cbq.init # chkconfig --add cbq.init |
# mkdir /etc/sysconfig/cbq |
No. | 種 別 | パ ラ メ ー タ 概 要 | 備考 |
1 | デバイス | DEVICE=<ifname>,<bandwidth>[,<weight>] 例:DEVICE=eth0,10Mbit,1Mbit <ifname>:帯域制御するインタフェース名。 <bandwidth>:インタフェースの物理速度。100BASE-TXなら100Mbit、10BASE-Tなら10Mbitと指定。 <weight>:<bandwidth>に比例するパラメータで原則<bandwidth>の1/10の値にすること。 |
必須 |
2 | クラス | RATE=<speed> 例:RATE=5Mbit <speed>:このクラスに割り当てる帯域を指定。単位としてはKbit, Mbitが使用できる。bps, Kbps, Mbps も使用できるが、bytes/secであることに注意しなければならないのと、インタフェース速度との関係がわかりにくいので使用しないほうが無難。 |
必須 |
3 | WEIGHT=<speed> 例:WEIGHT=500kbit <speed>:RATEに対応したパラメータで、原則RATEの1/10(WEIGHT ~= RATE / 10. 適当に四捨五入でもする。)の値にすること。 |
必須 | |
4 | PRIO=<1-8> デフォルト:5 例:PRIO=5 トラヒックの優先度を1-8で指定。値が小さいほど優先的に処理されるので、プロトコル間で差をつける(SSHを最優先にする等)場合に使用できる。 |
OP | |
5 | フィルタ | RULE=[[saddr[/prefix]][:port],][daddr[/prefix]][:port] ここで、実際に制御するアドレス/ネットワークとポートを指定する。前者のパラメータ[saddr[/prefix]]は制御するパケットのソースアドレス/ネットワークで、[daddr[/prefix]]が本スクリプトが動作しているサーバがデータを送信する相手を示す。両者の区切りである「,」は、前者のパラメータ指定の最後に付与するものなので注意が必要である。 例: ・WWWサーバへのアクセスに対するコンテンツ配送の制御 サーバの80番ポートをソースとするパケットを制御することになるので、下記のように [サーバアドレス:80,] とRULEに設定する。ソースをキーに制御するので最後の「,」を忘れずに。 RULE=192.168.1.100:80, +---------+ | linux |-eth0------*-[client] +---------+ Server:192.168.1.100 Client: any 80 --------------> any・FTPサーバからのダウンロードトラヒックの制御 FTPサーバからのデータダウンロードは、ActiveモードとPassiveモードで使用するポートが異なる。 Activeモードの場合、サーバ側が20番となるコネクション(ftp-data)で送信されるので、以下のように設定する。 RULE=192.168.1.100:20, Passiveモードの場合、サーバ側で使用するポートを指定できるデーモンでないと制御できない。おやじのサイトで紹介しているProftpd/vsftpdとも設定が可能なので、使用ポート範囲を設定する。ダウンロードデータはそのポートがソースとなるパケットで送信される範囲指定になるので、以下のように [開始ポート番号/ANDマスク] 設定する。 指定方法のANDマスクの考え方は、ネットワークのサブネットマスクの考え方(192.168.1.0/24の/24)と同じであり、/24を16進で表現したものである。例えば、4096から4127までの32ポートを設定したとすると、[ 4096/0xffe0 ]となり、下記のように4096〜4127の数字は[ 0xffe0 ]でANDをとると全て4096となり同じ扱いになる。これでわかるように、開始ポート番号は、使用するポート数に応じて下位nビットが0となる値にしないと関係ないポートまで制限してしまうので、Proftpd等の設定例で示している4000〜4029という設定は変更する必要がある。 4096(0x4000) 0100000000000000 [開始ポート] 32(0xffe0) 1111111111100000 --------------------------------- AND 0100000000000000 4127(0x401f) 0100000000011111 [終了ポート] 32(0xffe0) 1111111111100000 --------------------------------- AND 0100000000000000 RULE=192.168.1.100:4096/0xffe0, +---------+ | linux |-eth0------*-[client] +---------+ Server:192.168.1.100 Client: any 20/4096-4127 --------------> any |
必須 |
6 | タイマ | TIME=[<dow>,<dow>, ...,<dow>/]<from>-<till>;<rate>/<weight> 例:TIME=0,1,2,5/18:00-06:00;256Kbit/25Kbit TIME=18:00-06:00;256Kbit/25Kbit 本設定でタイマにより上記で設定した値と異なる帯域で制御することができる。 <dow>:ルールを適用する曜日を指定。0-6で 0 が日曜に対応している。 <from>-<till>:このルールの適用開始時刻と終了時刻を24時制で指定。 <rate>/<weight>:上記の2項、3項に同じ。 |
OP |
# /etc/init.d/cbq.init start |