ipfwを使用した時刻による帯域幅制限

この記事では、スケジューラデーモンを使用して、NATの下での時間帯別のユーザーの速度を変更する方法について説明します。



FreeBSD 8.1システムが使用されますが、速度を変更するためのこのオプションは、 ipfwcronがある他のすべてのバージョンで利用できます。つまり、FreeBSDのほぼすべてのブランチとリリースで使用できます。



カーネルのコンパイル方法については詳しく説明しません。ファイアウォールとDUMMYNETシェーパーの使用を有効にする次の手順を含める必要があるとのみ言います。



options IPFIREWALL

options IPFIREWALL_VERBOSE

options IPFIREWALL_VERBOSE_LIMIT=50

options IPFIREWALL_FORWARD

options IPFIREWALL_DEFAULT_TO_ACCEPT

options IPDIVERT

options DUMMYNET

options HZ=1000








時間の経過とともに速度を変更する方法はたくさんありますが、私が使用するのは2つだけです。 それらは理想的ではありませんが、10〜20人のローカルネットワークでは、白い外部IPアドレスがなく、総チャネル帯域幅が20 Mbpsで十分です。



だから最初の方法


ここでは、cronを使用して作業設定を置き換える方法が使用されます。

したがって、異なる期間の2つのファイルがあるとします。

firewall.conf-01-09-01 :00から09:00までのファイアウォール

firewall.conf-09-01-09 :00から01:00までのファイアウォール

01:00から09:00まではユーザーに高速を提供し、それ以外の時間は09:00から01:00まで料金を申告します。



これらの2つのファイルは、たとえば/ home / admin / firewallに配置します。

次に、念のためshスクリプトを作成します。これは、ipfwが機能し、/ etc / netstartを実行するすべてのインターフェースを下げたり上げたりします(これはできませんが、ファイアウォールスクリプトをすぐに実行できますが、個人的には単純な/ etc / netstartによって決定された、使用可能なバッファスペースがないなど、あらゆる種類の異常なエラーが発生しました。 スクリプトでは次のようになります。



#!/bin/sh

cp /home/admin/firewall/firewall.conf-01-09 /etc/firewall.conf

sh /etc/firewall.conf



ifconfig rl0 down

ifconfig rl1 down



ifconfig rl0 up

ifconfig rl1 up

/etc/netstart








このスクリプトをfiresh-01-09.shという名前で保存し、09:00から01:00までの昼間の同様のスクリプトを作成し、最後にcron(/ etc / crontab)を開きます。実行:



SHELL=/bin/sh

PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin



#minute hour mday month wday who command

# Firewalls

0 1 * * * root sh /home/admin/firewall/firesh-01-09.sh

0 9 * * * root sh /home/admin/firewall/firesh-09-01.sh








これで01:00と09:00にルールが/etc/firewall.confにコピーされ、新しいインターフェースが再読み込みされ、インターフェースが再生成されます。



第二の方法


この方法は確かにはるかに単純ですが、どういうわけか私にはあまり定着しませんでしたが 、古き良き実績のある方法が大好きなので、最初の方法を使用します。



2番目の方法は、特定のパイプが速度に設定された単純なshスクリプトで構成され、時間内に再読み取りすると、次のようになります。



# Day firewall, 09:00 - 01:00



# Admins

ipfw pipe 230 config bw 0Mbit/s

ipfw pipe 130 config bw 0Mbit/s



# Users

ipfw pipe 107 config bw 5Mbit/s

ipfw add pipe 1107 ip from 192.168.0.107 to any out

ipfw pipe 1107 config bw 5Mbit/s



# VPN Users

ipfw pipe 246 config bw 1Mbit/s



ipfw pipe 128 config bw 5Mbit/s

ipfw add pipe 1128 ip from 192.168.0.128 to any out

ipfw pipe 1128 config bw 5Mbit/s



ipfw pipe 102 config bw 0Mbit/s



# Test users

ipfw pipe 35 config bw 0Mbit/s

ipfw pipe 36 config bw 0Mbit/s

ipfw pipe 37 config bw 0Mbit/s

ipfw pipe 38 config bw 0Mbit/s



ifconfig rl0 down

ifconfig rl1 down



ifconfig rl0 up

ifconfig rl1 up








実際には、cronからtime configを開始する手順は最初の方法のままで、ここでは/ etc / netstartコマンドのみが許可されていません。これは、すでにメモリにロードされているfirewall.conf configファイルを操作するためです。 /etc/firewall.confの設定。標準ルールを説明しています。



ダミーネット情報

カーネルをコンパイルするためのマニュアル

IPFW

詳細なDUMMYNETマニュアル



All Articles